标题:
为什么单片机中断里面并不能加延时?
[打印本页]
作者:
kyd123456
时间:
2018-10-16 18:01
标题:
为什么单片机中断里面并不能加延时?
加了延时 为什么程序就出不来
一直在延时里面
作者:
zha
时间:
2018-10-16 18:16
假设中断加了延时,那当在中断延时子程序里,下个中断来了,那就调到下一个中断,下一个中断延时子程序里又会来下一个中断………如此,这是个死嵌套,而且可以加延时,只要延时短,不过会影响效率
作者:
wuxiaojia
时间:
2018-10-16 18:24
中断服务程序可以加延时程序的,你可以只开一个中断来测试一下。
作者:
diy1997
时间:
2018-10-16 18:25
在进中断后关了中断,最后出来时再打开。
作者:
1233655556656
时间:
2018-10-16 18:57
延时要加在中断函数里
作者:
文凤轩
时间:
2018-10-16 19:00
那样会影响中断执行的
作者:
1978225338
时间:
2018-10-16 20:33
死循环 楼上说的感觉不错 学习学习
作者:
cjm82
时间:
2018-10-16 21:21
中断里最好不要写循环,更不应该写DELAY之类的东西.
其实DELAY这类东西,平时应该注意养成习惯,能不用尽量不要去用.
作者:
yzwzfyz
时间:
2018-10-16 22:23
可以加延时!
提出这个问题,说明你对定时器理解的不够。
你需要再定时器原理,并想想楼上网友说的是否正确?
作者:
sxhwdz
时间:
2018-10-17 07:20
在一个中断里面使用延时程序占用CPU资源,势必影响新的中断请求,以及中断级别较低的中断请求。
作者:
mrhan1992
时间:
2018-10-17 08:53
中断中尽量避免加入延时或者操作比较耗时的操作,因为,中断就是要去执行很要紧的事情,当中断产生时,NVIC便会强行把CPU拉到中断现场去处理,这时候如果加上延时,会独占CPU并且让CPU做没有意义的事情,浪费资源。
作者:
phang
时间:
2018-10-17 09:23
想说两点:
1.为什么会进入中断, 因为有中断标志位置位(置1) ,比如 INTFlag = 1 ;
然后进入中断。
void INTHandler(void)
{
DELAY();//这是添加的延时
}
那么如果没有将“中断标志位 INTFlag”清零,就会一直进入“中断服务函数-void INTHandler(void)”,
那就一直执行里面的操作,延时。。。
2.如果想中断后延时,你可以在中断里面添加一个标志位:
void INTHandler(void)
{
INTFlag = 0 ;//将中断标志清零
xxflag = 1;//xxflag是定义的全局变量,指示已经产生中断的标志
}
main函数或者其他函数里面检测 if(xxflag == 1){ xxflag == 0 ; DELAY(); }
这样就行了
作者:
sorckey
时间:
2018-10-17 11:24
中断里加延时?那中断的意义就不存在了。
作者:
gotofly
时间:
2018-10-17 15:07
为了程序的效率,中断里的函数要尽量简单
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1