×
嵌入式 > 技术百科 > 详情

IAR调试stm8单片机时延时函数被优化的问题

发布时间:2020-12-15 发布时间:
|

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

        {

            ;

        }

    }

}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ADI 高精度低功耗精密放大器