极海F103 SPI优化问题
在KEIL中开启全局O3优化 使用SPI1的时候会出现不能正常读回来的问题推测是因为O3的激进优化将SPI库的某些关键变量给优化掉了因此将apm32f10x_spi.c的优化改回O0测试发现还是不能正常读回数据,仔细查看关于调用spi的函数, 推测可能是这些相关函数也被优化掉了最有可能被优化掉的是SPI1结构体 将SPI1的结构体定义改成 volatile类型再次测试 读回来的数据正常
还有一种办法 由于上述问题出在用到spi的相关函数上 再加上不想修改库函数
官方有给出单独函数的优化方法 具体使用如下参考以下两篇文章ARM Compiler v5.06 for uVision armcc User GuideARM Compiler v5.06 for uVision armcc User Guide将调用到spi库函数相关的函数和apm32f10x_spi.c单独开O0优化 其余开启O3
再次测试 可以正常读回数据
我再其他平台也遇到过提升优化等级,导致SPI数据偏移 一般都不会动优化等级,你为什么要改变设置了?
页:
[1]