单片机编程时为啥 volatile 至关重要?
来源:嵌入式专栏 发布时间:2024-08-22 分享至微信
作者 | strongerHuang
微信公众号|strongerHuang
什么是 volatile?
volatile是一个类型修饰符(type specifier)。 volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。 volatile变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
哪些场合会用到volatile关键字
volatile关键字对编译器优化的影响
访问内存映射外设。 在多个线程之间共享全局变量。 在中断例程或信号处理程序中访问全局变量。
#define __O volatile /*!< Defines 'write only' permissions */
#define__IOvolatile/*!<Defines'read/write'permissions*/
在轮询硬件时,代码可能会陷入循环。 多线程代码可能会表现出奇怪的行为。 优化可能会导致删除实现故意时序延迟的代码。
举例:
void Delay(int Cnt)
{
int i;
while(Cnt--)
{
i++;
for(i=0; i<10; i++);
}
}
[ 新闻来源:嵌入式专栏,更多精彩资讯请下载icspec App。如对本稿件有异议,请联系微信客服specltkj]
存入云盘 收藏
举报
全部评论
暂无评论哦,快来评论一下吧!
嵌入式专栏
作者黄工【strongerHuang】,专注分享嵌入式软件、硬件、工具等相关内容,通过专栏形式精选并整理更多嵌入式相关教程。
查看更多
相关文章
ASML CEO警示:欧洲芯片自给自足目标遥远,中国技术至关重要
2024-08-20
构建坚不可摧的数据中心防线:全方位灾备策略至关重要
2024-08-01
单片机输出PWM常见用法
2024-08-07
单片机系统EMC检测及整改方法
2024-08-22
单片机加入版本信息的常见方法
2024-08-07
热门搜索