hexbei 发表于 2023-11-2 15:07

极海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
再次测试 可以正常读回数据

呐咯密密 发表于 2023-11-13 16:52

我再其他平台也遇到过提升优化等级,导致SPI数据偏移

yangxiaor520 发表于 2023-11-14 07:41

一般都不会动优化等级,你为什么要改变设置了?
页: [1]
查看完整版本: 极海F103 SPI优化问题