别优化我,需要我的时候别老找寄存器传话
——volatile变量
一、 volatile的作用
1.1 易变的
volatile声明的变量,表明该数据是易变的,每次使用读写该数据的时候,需要从主存重新读取,不应该为提高运行效率直接使用寄存器里的值,保证数据的一致性。
1.2 不可优化
volatile 会告诉编译器不要对其修饰的变量进行各种优化,尤其是将其删除。保证了与该变量相关的程序一定会执行。
1.3 顺序执行
volatile 会告诉编译器不要对其修饰的变量相关的代码进行顺序优化,保证该变量相关的代码按预定的顺序执行。
二、适用场景
(1)中断服务程序中修改并供其他程序使用的全局变量。
int test_flag = 0;
void test_task(void)
{
if(test_flag == 1)
{
/* code */
}
}
void ISR_EXTI_INTERRUPTS0_1(void)
{
test_flag = 1;
}
(2)被多线程或多任务应用读写的全局变量。
(3)外设寄存器地址映射
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_42357877/article/details/129324519
|