单片机/MCU论坛
直播中

吴湛

9年用户 773经验值
擅长:33391
私信 关注
[问答]

程序中变量加volatile关键字是做什么用途的?

为什么变量定义要加上这个关键字

回帖(1)

贺楠

2023-10-13 15:03:12
volatile的本意是“易变的” 由于访问寄存器的速度要快过RAM所以编译器一般都会作减少存取外部RAM的优化,但有可能会读脏数据。当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。优化器在用到这个变量时必须每次都小心地重新从内存里读取这个变量的值,而不是使用保存在寄存器里的备份。
一般说来,volatile用在如下的几个地方:
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
举报

更多回帖

发帖
×
20
完善资料,
赚取积分