|
本帖最后由 zh874176706 于 2017-6-15 09:17 编辑 void main(void) { while (1) { if(f_sleep==0) { f_sleep=1; //其他需要执行的程序; } if(f_sleep==1) halt(); } } interrupt() { f_sleep=0; } 请问如果在上面的if(f_sleep==1)之后且halt()指令之前产生中断,那stm8岂不是继续休眠。 |
微信公众号
手机版
halt()是休眠指令
应该是根据f_sleep来判断的,所谓休眠就是f_sleep=1持续一段时间,否则 一休眠就醒不来了
我的意思是就算在halt()指令与上一条指令之间发生中断也不能让单片机休眠,如何做到。
if(sleep==0)
{
xxxx;
}else
{
halt();
}
这没区别呀,在else与halt之间照样可以产生中断。导致中断产生的标志位不能被主循环处理就进入休眠。