如題,設(shè)置50000ms(50秒)的延遲,實(shí)際led只亮了大約1秒左右
您好,如下圖,重裝載數(shù)值寄存器的大小是24位有效位,可配置最大值為16777216,當(dāng)配置延時(shí)50000ms時(shí),LOAD的值為450000000,超過16777216了。若要配置長(zhǎng)時(shí)間的延時(shí),可以使用for循環(huán)或者while循環(huán),每次循環(huán)1s,循環(huán)50次即可。
這種我都是用一個(gè)定時(shí)器1ms中斷做時(shí)基,然后各種定時(shí)都是在1ms中斷里面累計(jì)。
1ms中斷里面分別實(shí)現(xiàn)2ms/5ms/10ms/50ms/100ms/1S時(shí)基變量,應(yīng)用起來不要太爽。
? ? 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忙等的實(shí)現(xiàn)方法