读书人

小弟我这个代码有关问题在哪里?

发布时间: 2013-11-21 23:38:25 作者: rapoo

我这个代码问题在哪里???
本来是要做watchdog 中断实验的,但是遇到问题,把代码阉割了,但是还是未能解决问题,

我把代码 简化成:

主程序代码:

static int flag=0;
void WAT_Handl()
{
if(flag==0)
{
led_on();
flag=1;
wait(300000);
}
else
{
led_off();
flag=0;
wait(300000);
}

}

void disable_watchdog()
{
WTCON = 0;
}

int main(void)
{
led_init();
disable_watchdog();

while(1)
{
WAT_Handl();
}
return 0;
}

[解决办法]
int volatile flag = 0;
不是这样写的,这样才对:volatile int flag = 0;

你应该把wait函数贴出来,在循环等待的时候要注意编译器会优化没有volatile 标示的变量,导致你的循环不起作用,这个很重要。估计你wait的那个变量没有添加volatile

而你这边的flag变量就没必要使用volatile进行标示,可以使用static限定在本文件中使用

读书人网 >WinCE

热点推荐