初级会员

- 积分
- 70
- 金钱
- 70
- 注册时间
- 2018-1-15
- 在线时间
- 13 小时
|
3金钱
大家好,遇到个LED流水灯的问题,问题大概描述如下:我设置系统时钟为72M,采用滴答时钟1MS中断,在中断函数中标记了10MS。在一秒循环点亮LED的过程中,我第一次写的函数,出现了问题,LED亮了一秒左右就熄灭了,没有跑起流水灯的效果。后面写了第二个函数,自己感觉是完全一样的内容,指示简化了,但是LED灯却跑起来了。下面贴出实现函数的内容如下,
/*
LEDÅÜÂíµÆÊµÏÖ
*/
void led_implement(void)
{
static u32 delay_number=0;
static u32 led_state=0;
if(led_state==0)
{
if(systick_type.systick_state_bit.systick_10ms==1)
{
systick_type.systick_state_bit.systick_10ms=0;
delay_number++;
if(delay_number==10)
{
delay_number=0;
LED0=1;
LED1=1;
led_state=~led_state;
}
}
}
if(led_state==1)
{
if(systick_type.systick_state_bit.systick_10ms==1)
{
systick_type.systick_state_bit.systick_10ms=0;
delay_number++;
if(delay_number==10)
{
delay_number=0;
LED0=0;
LED1=0;
led_state=~led_state;
}
}
}
}
第二次写的函数,实现了,内容如下:
void led_implement(void)
{
static u32 delay_number=0;
static u32 led_state=0;
if(0==led_state)
{
if(systick_type.systick_state_bit.systick_10ms==1)
{
systick_type.systick_state_bit.systick_10ms=0;
delay_number++;
if(delay_number==10)
{
delay_number=0;
LED0=~LED0;
LED1=~LED1;
}
}
}
}
请帮忙分析下,万分感谢!!!
|
最佳答案
查看完整内容[请看2#楼]
一个流水灯,还搞的这么复杂??
led_state=~led_state; 0会变成ffffffff;
导致条件if(led_state==1)不成立,
改成if(led_state!=0) 试试
|