IAR優化等級選到最高,調用以下延時函數時會被編譯器直接優化,無法達到延時的效果。
void delay_n_ms(u32 time)
{
u32 m = 0;
u16 n = 0;
for(;m < time;m++)
{
for(n = 0;n < 2720;n++)//16Mhz
{
;
}
}
}
在函數的變量前加volatile關鍵字后問題解決。
void delay_n_ms(u32 time)
{
volatile u32 m = 0;
volatile u16 n = 0;
for(;m < time;m++)
{
for(n = 0;n < 2720;n++)//16Mhz
{
;
}
}
}
上一篇:stm8 蜂鳴器BEEP
下一篇:STM8S_002_TIM精確延時(阻塞式)
推薦閱讀
史海拾趣