老师,我这优化等级和你们demo一样是3,为什么这队列接收进来的数据会变

🔍 溯源 ✍️ Jack | 📅 2025-04-21 | 👍 1 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/C语言 #技术/编译优化 #质量/普通

原帖 | Jack | 2025-04-21 11:09 | 👍1 | 阅读约1

老师,我这优化等级和你们demo一样是3,为什么这队列接收进来的数据会变?
然后我把优化等级调为0,接收队列的数据就一直是【1】正常的,优化等级3的时候,给接收变量加volatile也没用。

因为编译器优化了,这里如果要深入研究比较复杂。

那这一般有什么方法,避免优化等级低能正常运行而优化等级高的时候不能正常运行?

开发时一般会约定一个优化等级

方法多了,对于变量就是分散加载到一个不被优化的地址

对于驱动时序,使用isb等指令清流水线,你看pendsv和svc中断里。


相关笔记