单片机学习小组
直播中

王建军

7年用户 208经验值
私信 关注

volatile和const变量

1、volatile内存映射的I/O端口,或者是硬件寄存器,每次都是重新读取这个变量的值,在中断服务程序中使用的非自动变量,或者多线程应用程序多个任务共享的变量也必须用到volatile进行限定。必须使用volatile的实例(但是这里没有使用):
int flag=0;//这里定义的全局变量或者static定义的局部变量都是非自动变量
void f( )//在f( )函数中没有修改flag,只执行一次将flag=0缓存在寄存器当中,以后每次访问flag都使用缓存值                而不对存储器的绝对地址访问
{
   while(1)
{
   if(flag)   //
some_avtion();
}
}
void isr_f( )//这个是中断处理程序
{
   flag=1;   //中断或者外部硬件使得他为1,缓存的寄存器检测不到,那儿的flag一直是0
}

更多回帖

发帖
×
20
完善资料,
赚取积分