在KEIL中开启全局O3优化 使用SPI1的时候会出现不能正常读回来的问题 推测是因为O3的激进优化将SPI库的某些关键变量给优化掉了
因此将apm32f10x_spi.c的优化改回O0测试 发现还是不能正常读回数据,仔细查看关于调用spi的函数, 推测可能是这些相关函数也被优化掉了 最有可能被优化掉的是SPI1结构体 将SPI1的结构体定义改成 volatile类型 再次测试 读回来的数据正常
还有一种办法 由于上述问题出在用到spi的相关函数上 再加上不想修改库函数
官方有给出单独函数的优化方法 具体使用如下 参考以下两篇文章 ARM Compiler v5.06 for uVision armcc User Guide ARM Compiler v5.06 for uVision armcc User Guide 将调用到spi库函数相关的函数和apm32f10x_spi.c单独开O0优化 其余开启O3
再次测试 可以正常读回数据
|