打印
[APM32F1]

极海F103 SPI优化问题

[复制链接]
779|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hexbei|  楼主 | 2023-11-2 15:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在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

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

使用特权

评论回复
沙发
呐咯密密| | 2023-11-13 16:52 | 只看该作者
我再其他平台也遇到过提升优化等级,导致SPI数据偏移

使用特权

评论回复
板凳
yangxiaor520| | 2023-11-14 07:41 | 只看该作者
一般都不会动优化等级,你为什么要改变设置了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

21

帖子

2

粉丝