stm32 adc变量定义使用__IO

本文讨论了volatile变量在编程中的应用,特别是在中断服务程序、多任务环境下的共享标志和硬件寄存器中的使用。volatile确保编译器不会优化可能因变量变化导致的错误,尤其是在处理ADC存储变量时,__IO修饰符至关重要。
摘要由CSDN通过智能技术生成

什么是_IO变量:
_IO为volatile变量,volatile 影响编译器编译的结果, 指出:volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错。
volatile(即__IO) 告诉编译器变量是随时可能发生变化的,每次使用它的时候必须从变量的地址中读取,因而编译器生成的可执行码会重新变量的地址读取数据。而如果没有使用__IO,编译器优化做法是,由于编译器发现两次从i中读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中,而不是重新从i里面读。

使用volatile(即__IO)的情况:

1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义。

一般ADC的存储变量值使用__IO进行修饰

在这里插入图片描述

参考

https://blog.csdn.net/qrfdt/article/details/119925859

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值