[APM32F1] 极海F103 SPI优化问题

[复制链接]
1069|2
 楼主| hexbei 发表于 2023-11-2 15:07 | 显示全部楼层 |阅读模式
在KEIL中开启全局O3优化 使用SPI1的时候会出现不能正常读回来的问题
1.png
推测是因为O3的激进优化将SPI库的某些关键变量给优化掉了

因此将apm32f10x_spi.c的优化改回O0测试
2.png
发现还是不能正常读回数据,仔细查看关于调用spi的函数, 推测可能是这些相关函数也被优化掉了
最有可能被优化掉的是SPI1结构体 将SPI1的结构体定义改成 volatile​​类型
3.png
再次测试 读回来的数据正常

还有一种办法 由于上述问题出在用到spi的相关函数上 再加上不想修改库函数

官方有给出单独函数的优化方法 具体使用如下
4.png
参考以下两篇文章
ARM Compiler v5.06 for uVision armcc User Guide
ARM Compiler v5.06 for uVision armcc User Guide
将调用到spi库函数相关的函数和apm32f10x_spi.c单独开O0优化 其余开启O3

再次测试 可以正常读回数据

呐咯密密 发表于 2023-11-13 16:52 | 显示全部楼层
我再其他平台也遇到过提升优化等级,导致SPI数据偏移
yangxiaor520 发表于 2023-11-14 07:41 来自手机 | 显示全部楼层
一般都不会动优化等级,你为什么要改变设置了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

21

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部