打印

一个很怪的全局变量问题(s3c2440)

[复制链接]
1386|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jimmyzjz|  楼主 | 2008-12-15 10:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
两个文件:定时器函数文件A,应用文件B
定时器0设置为每秒中断。
在应用文件中定义了一个全局变量BOOL型的FLAG。在定时器文件中extern声明。
定时器A文件:
extern bool flag;
static void __irq ISR_Timer0(void)
{
if(sec_time_auto==0)
{
   flag=0;
}
if(flag)
{    
  Show_TimeCutdown(Countdown_Hour,Countdown_Min,Countdown_Sec); 
}
  sec_time_auto--;
}
应用B文件:
bool flag;
test()
{
  sec_time_auto=10;
  flag=1;
   while(sec_time_auto>0)
    {
     
       idx=getkey();
       if(idx==Key_Enter)  //按ENTER键返回1-2
       {          
          flag=0;          
          break;  
       }               
    }
}

当flag=1的时候显示。flag=0的时候不显示。
当倒计时没有到0的时候,我按下ENTER键,按道理应该flag=0,显示停止。但实际上flag并没有=0,而是一个错误的大于0的值,显示并没有停止。只有当倒计时走完,sec_time_auto=0后,flag才等于0。

但当我把FLAG定义在定时器文件中,而在应用文件中extern的话,FLAG的值却没有发生错误。
请问:是什么原因呢?谢谢!

相关帖子

沙发
阿南| | 2008-12-15 23:35 | 只看该作者

定义成volatile,试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

0

粉丝