blackfin bf537 LED 闪烁
blackfin bf537 LED blinking
下面这些代码是blackfin bf537的LED闪烁程序示例
LED 将从右向左闪烁,然后切换回来。
/**/
EX_INTERRUPT_HANDLER(Timer0_ISR)
{
// confirm interrupt handling
*pTIMER_STATUS = 0x0001;
// shift old LED pattern by one, left to right
if(sLight_Move_Direction)
{
if((ucActive_LED = ucActive_LED >> 1) <= 0x0020) ucActive_LED = 0x1000;
}
else
{
if((ucActive_LED = ucActive_LED << 1) == 0x0020) ucActive_LED = 0x0020;
}
// write new LED pattern to PORTF LEDs
*pPORTFIO_TOGGLE = ucActive_LED;
/**/
现在我正在尝试修改代码来完成新功能,我希望当我按下按钮时它从左到右闪烁一次,所以我的代码如下:
/**/
EX_INTERRUPT_HANDLER(Timer0_ISR)
{
// confirm interrupt handling
*pTIMER_STATUS = 0x0001;
// shift old LED pattern by one, left to right
if(sLight_Move_Direction){
ucActive_LED == 0x0800;
ucActive_LED = ucActive_LED >> 1;
ucActive_LED == 0x0040;
}
// write new LED pattern to PORTF LEDs
*pPORTFIO_TOGGLE = ucActive_LED;
/**/
现在不工作或者只是闪烁LED3,我该如何解决?
谢谢
经过几天的思考,这是我的答案:
int Mode;
EX_INTERRUPT_HANDLER(Timer0_ISR)
{
// confirm interrupt handling
*pTIMER_STATUS = 0x0001;
if(Mode == 1)
{
if((ucActive_LED = ucActive_LED >> 1) <= 0x0020)
ucActive_LED = 0x1000;
}
else if(Mode == 2)
{
if((ucActive_LED = ucActive_LED << 1) >= 0x1000)
ucActive_LED = 0x0020;
}
else if(Mode == 3)
{
if((ucActive_LED = ucActive_LED >> 2) <= 0x0020)
ucActive_LED = 0x1000;
}
// write new LED pattern to PORTF LEDs
*pPORTFIO = ucActive_LED;
}
然后将 PORTFIO 设置为从 PF2 到 PF5(SW13~SW10) 的按钮
每个按钮对应于每个模式,因此我们可以看到模式 1 是 LED 从左到右闪烁。模式 2 从右向左闪烁。模式 3 使 LED 2、4 和 6 闪烁。
下面这些代码是blackfin bf537的LED闪烁程序示例 LED 将从右向左闪烁,然后切换回来。 /**/
EX_INTERRUPT_HANDLER(Timer0_ISR)
{
// confirm interrupt handling
*pTIMER_STATUS = 0x0001;
// shift old LED pattern by one, left to right
if(sLight_Move_Direction)
{
if((ucActive_LED = ucActive_LED >> 1) <= 0x0020) ucActive_LED = 0x1000;
}
else
{
if((ucActive_LED = ucActive_LED << 1) == 0x0020) ucActive_LED = 0x0020;
}
// write new LED pattern to PORTF LEDs
*pPORTFIO_TOGGLE = ucActive_LED;
/**/
现在我正在尝试修改代码来完成新功能,我希望当我按下按钮时它从左到右闪烁一次,所以我的代码如下: /**/
EX_INTERRUPT_HANDLER(Timer0_ISR)
{
// confirm interrupt handling
*pTIMER_STATUS = 0x0001;
// shift old LED pattern by one, left to right
if(sLight_Move_Direction){
ucActive_LED == 0x0800;
ucActive_LED = ucActive_LED >> 1;
ucActive_LED == 0x0040;
}
// write new LED pattern to PORTF LEDs
*pPORTFIO_TOGGLE = ucActive_LED;
/**/
现在不工作或者只是闪烁LED3,我该如何解决?
谢谢
经过几天的思考,这是我的答案:
int Mode;
EX_INTERRUPT_HANDLER(Timer0_ISR)
{
// confirm interrupt handling
*pTIMER_STATUS = 0x0001;
if(Mode == 1)
{
if((ucActive_LED = ucActive_LED >> 1) <= 0x0020)
ucActive_LED = 0x1000;
}
else if(Mode == 2)
{
if((ucActive_LED = ucActive_LED << 1) >= 0x1000)
ucActive_LED = 0x0020;
}
else if(Mode == 3)
{
if((ucActive_LED = ucActive_LED >> 2) <= 0x0020)
ucActive_LED = 0x1000;
}
// write new LED pattern to PORTF LEDs
*pPORTFIO = ucActive_LED;
}
然后将 PORTFIO 设置为从 PF2 到 PF5(SW13~SW10) 的按钮 每个按钮对应于每个模式,因此我们可以看到模式 1 是 LED 从左到右闪烁。模式 2 从右向左闪烁。模式 3 使 LED 2、4 和 6 闪烁。