提到优化就不得不提及 volatile
使用场景
1:中断服务程序中修改的供其它程序检测的变量,需要加volatile; :
2:多任务环境下各任务间共享的标志,应该加volatile;
3:并行设备的硬件寄存器(如:状态寄存器)
还有一种就是今天遇到的查了半天,容易忘记
起因:
使用gd32F103cb来开发,然后采取i2c 协议操作eeprom,
调试eeprom写入的时候如图
延时2ms,在优化等级为O0的时候没问题,但是在等级为O3的时候经过调试发现,一直无法写入成功,因为我是采取TFDB方式来写入的,还以为移植TFDB出现了问题,最后直接通过调用最底层I2C 写入都失败,文章来源:https://www.toymoban.com/news/detail-704276.html
让我们来看下这个延时函数的实现方法如下;
这个是我修改后的,加入了volatile
就是单纯的空运转,如果不加入关键字就会被优化掉,从而导致上述I2C的协议中延时出问题,最后导致因为协议问题无法写入eeprom。文章来源地址https://www.toymoban.com/news/detail-704276.html
到了这里,关于stm32(GD32,apm32),开优化后需要特别注意的地方的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!