如题,设置50000ms(50秒)的延迟,实际led只亮了大约1秒左右
您好,如下图,重装载数值寄存器的大小是24位有效位,可配置最大值为16777216,当配置延时50000ms时,LOAD的值为450000000,超过16777216了。若要配置长时间的延时,可以使用for循环或者while循环,每次循环1s,循环50次即可。
这种我都是用一个定时器1ms中断做时基,然后各种定时都是在1ms中断里面累计。
1ms中断里面分别实现2ms/5ms/10ms/50ms/100ms/1S时基变量,应用起来不要太爽。
void delayEightTick(volatile uint32 eight_tick) {
for (;eight_tick != 0;eight_tick--) {
}
}
static const uint32 Tick_par_second = 12 * 8000000;
void delayEightTick(volatile uint32 eight_tick);
#definedelayMs(ms) delayEightTick( (uint32)( ( ms * (Tick_par_second/1000) )/8.0f+0.5f) )
也许你需要CPU忙等的实现方法