首页 > 其他 > 详细

最易变的关键字 - volatile

时间:2021-08-18 10:35:59      阅读:14      评论:0      收藏:0      [点我收藏+]

最易变的关键词 - volatile

1、volatile关键字

volatile 是易变的、不稳定的意思。和const一样是一种类型修饰符,volatile关键字修饰的变量,编译器对访问该变量的代码不再进行优化,从而可以提供对特殊地址的稳定访问。
以前只是听过这个关键词,知道它的存在,但从来没用过。用此文记录下在开发RISC-V MCU过程中,未用volatile修饰标志位变量,编译器进行优化,导致程序运行异常。

2、Demo

开发中,常见的需求,主循环中根据中断中修改的标志位,运行不同的功能,

#include "debug.h"

uint8_t flag_test = 0;
void main(void)
{
	while(1)
	{
		if(flag_test == 1)
		{
			flag_test = 0;
			printf("flag_test = %d\r\n",flag_test);
			//do something
		}
	
	}
}


/* 外部中断服务函数*/

将程序下载至MCU后,给P1.0引脚下降沿触发信号,也进入中断服务函数,改变了flag_test的值,但是主函数仍然没有运行相应的程序,很是奇怪,检查反汇编代码,才发现是编译器对flag_test变量的访问进行了优化


最易变的关键字 - volatile

原文:https://www.cnblogs.com/wahahahehehe/p/15154595.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!