原帖 | Jack | 2025-04-21 11:09 | 👍1 | 阅读约1
老师,我这优化等级和你们demo一样是3,为什么这队列接收进来的数据会变?
然后我把优化等级调为0,接收队列的数据就一直是【1】正常的,优化等级3的时候,给接收变量加volatile也没用。
因为编译器优化了,这里如果要深入研究比较复杂。
那这一般有什么方法,避免优化等级低能正常运行而优化等级高的时候不能正常运行?
开发时一般会约定一个优化等级
方法多了,对于变量就是分散加载到一个不被优化的地址
对于驱动时序,使用isb等指令清流水线,你看pendsv和svc中断里。
相关笔记