标题:
单片机定时器中断程序求助
[打印本页]
作者:
baibai310
时间:
2020-3-5 20:06
标题:
单片机定时器中断程序求助
为什么在定时器的中断内调用一次函数之后,不能再进入定时器中断了(之前的进入都没问题,调用函数后就不能进入了)?调试发现程序一直在while(1)中不动,TH0、TL0已经赋值了。
中断内的调用函数部分:
if(t > (t1 + 10000))
{
mode4();
}
调用的函数:
void mode4()
{
t = 1;
restore = 0;
t1 = 25000;
t2 = 25000;
t3 = 25000;
TR0 = 1
while(1);
}
作者:
lovexulu
时间:
2020-3-5 22:57
void mode4()
{
t = 1;
restore = 0;
t1 = 25000;
t2 = 25000;
t3 = 25000;
TR0 = 1
while(1);
}
就在这个函数中的while(1);中无限循环了。。。。
作者:
hantu
时间:
2020-3-5 23:27
你竟然在中断中调用一个带无限循环的子函数
作者:
faguiq
时间:
2020-3-6 01:18
这样会一中断又跑这个函数,函数里又在whiel(1),所以就在函数与中断之间循环,其实是有产生中断,在你没感觉
作者:
wulin
时间:
2020-3-6 09:44
使用定时器中断服务函数的一般要求:函数中任务尽可能简短,俗称打一枪就跑,不可久留。更不能接近或大于中断周期。不是必须不要在中断函数中执行具体任务,只要设置个标志,具体任务放在main函数主循环中完成。更不能调用带有阻滞型延时函数和while(1)死循环的子函数。在中断任务没有完成前CPU不会响应再入中断请求。除非有更高优先级中断才能打断此中断。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1