找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2763|回复: 1
收起左侧

volatile和const变量

[复制链接]
ID:262 发表于 2014-7-5 01:36 | 显示全部楼层 |阅读模式
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
}

回复

使用道具 举报

ID:58106 发表于 2014-7-7 07:37 | 显示全部楼层
             顶一下                     
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表