避免软件延时被编译器优化

来源:互联网 发布:mina 收不到数据 编辑:程序博客网 时间:2024/05/30 02:25
在编译器中可以设置优化等级,在高优化等级下,软件延时会被优化,使得软件延时的时间间隔变短,如下所示,会被优化的代码,假设时钟周期是1us(1MHz),则安下面的程序,则延时估计会在1ms左右。但如果编译器设置了高优化等级,则下面的延时远没有1ms。

  unsigned int  repeatCount = 1000;

  while (repeatCount--) ;

       可以用下面的方法解决:

 volatile unsigned int  repeatCount = 1000;

  while (repeatCount--) ;

在变量前面加关键词volatile就可以避免被优化,关于volatile的用法参见网上资料说明。

 

====

http://hi.baidu.com/my_father_110/item/7e0b2d296f146780af48f5b3