打印
[经验分享]

嵌入式 volatile的作用

[复制链接]
28|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-11-7 10:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   别优化我,需要我的时候别老找寄存器传话

                                                                ——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

使用特权

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

本版积分规则

1897

主题

15568

帖子

11

粉丝