欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

s3c2440.为何小弟我的if判断放在主函数中的死循环就不执行,而放在中断中却可以

更新时间: 2014-01-05 03:14:43 责任编辑: Author_N1

 

S3C2440...为何我的if判断放在主函数中的死循环就不执行,而放在中断中却可以。
我的程序的目的就是通过Timer0来做1秒钟的定时器中断,通过在中断中改变flag标志来使led灯闪烁。

主函数:
#include"2440addr.h"
#include"led.h"
#include"isrservice.h"
#include"interrupt.h"
#include"timer.h"

void IO_Init(void);
extern unsigned int flag = 0;

int Main()
{

IO_Init();
Led4_On();
while(1)
{
/* if(flag == 1)                //假如被注释的这一段放在定时器中断处理函数中
{                            //则可以使Led2闪烁,但如果把这段放在主函数的
Led2_On();           //的while当中则不行。
}
else
{
Led2_Off();
}*/
}
return 0;
}

void IO_Init(void)
{
Led_Init();
Timer0_Init();
Timer0_Interrupt_Init();
Isr_Init();
}


中断处理函数:
#include"config.h"
#include"isrservice.h"
#include"2440addr.h"
#include"led.h"

extern unsigned int flag;

void Isr_Init(void)
{
pISR_TIMER0 = (unsigned int)Timer0_Isr;
}

void __irq Timer0_Isr(void)
{
if(flag == 1)
{
Led2_On();
}
else
{
Led2_Off();
}
flag = !flag;
rSRCPND |= 1<<10;
rINTPND |= 1<<10;
}



假如在主函数中被注释的这一段放在定时器中断处理函数中
则可以使Led2闪烁,但如果把这段放在主函数的的while当中则不行。
为什么,跪求大神指导!!!谢谢啦!


--参考方法--
extern unsigned int flag = 0;
改成
extern volatile int flag;
看看,flag的初始化0不应该在这个地方
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:14:43
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20019/
本文WWW.DOC100.NET DOC100.NET版权所有。