打印

写RTOS程序的时候,不同进程间共享的全局变量切记加volatile

[复制链接]
375|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
你说说说说|  楼主 | 2020-4-26 15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如1号进程使用一个全局变量x
而这个x在2号进程里会被修改
如果你不加volatile
1号进程里的x值可能你会发现不会被2号进程修改
不是你程序写错了
而是c编译器帮你优化了,因为在1号进程里x没有被修改,编译器可能在你使用x的时候都没有生成去读x变量的语句 直接把初期给你了
当然编译器不同,优化行为也可能是不一样的,可能有的编译器已经实现了能识别这种情况。

用DMA传输数据的变量也要加

使用特权

评论回复

相关帖子

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

本版积分规则

355

主题

355

帖子

1

粉丝