标题: 能不能在单片机定时器中断函数中加延时函数? [打印本页]

作者: fsdafasdfasdf    时间: 2020-9-24 14:31
标题: 能不能在单片机定时器中断函数中加延时函数?
能不能在单片机定时器中断函数中加延时函数?如果加了延时会造成什么效果呢,到底是定时器优先级高还是延时函数优先级高呢?

作者: xianfajushi    时间: 2020-9-24 16:23
通常是指循环延时,如果延时函数在中断中调用则优先级同中断。中断当然可以调用延时,也可以直接把循环延时写在中断中,只是画蛇添足的做法而已,通常学到一定阶段就不会这样写和调用了,因为中断就是有间隔的直接可当延时用。
作者: wulin    时间: 2020-9-24 16:33
在单片机定时器中断函数中加延时函数没有逻辑问题。一个成熟的代码不会在定时器中断函数中加延时函数,除非是必不可少的几us的延时。中断函数是打断主函数运行的需要及时处理的事件,占时尽可能短。插入较长延时会影响系统运行效率,甚至破坏其它外设的运行。优先级只是针对CPU响应各种中断函数的排序,与延时函数无关。
作者: univers    时间: 2020-9-24 16:48
可是可以,但中断里放延时函数是水货的做法。
作者: angmall    时间: 2020-9-24 22:33
通常在中断子程序中是不调用延时子程序的,这样会增加中断处理时间,如果有其它低级中断了,就会延误响应中断了。

作者: TTQ001    时间: 2020-9-25 08:11
最好不要在中断例程中使用延迟
作者: abcque    时间: 2020-9-25 08:26
当然可以使用啊,有优先级的,高级别的中断 打断低级别的中断
作者: KongQuan    时间: 2020-9-25 10:35
中断是用来快速响应事件的。加了延时,会影响其他更低优先级的中断响应,当然不能加了。可以做标志,然后在主循环中延时处理。
作者: maojiaqimaojiaq    时间: 2020-9-25 17:39
中断里面放延迟会影响处理速度,影响优先级

作者: lwh999995    时间: 2020-9-26 23:42
可以,例如定时器延时50MS,定时器中断那来一个delayms(2)函数,延时2毫秒是没问题的,只要控制在50MS之下勉强可以,但是还是不建议这样干,并不专业,不推荐

作者: gfshao    时间: 2020-9-29 15:16
一般不建议
作者: npn    时间: 2021-11-27 19:23
如果定时器中断内程序执行的时间,超过了定时器设定的时间。
中断不会被自己打断,而是定时器溢出后TF0会被硬件置1,中断返回后会再次进入该中断(硬件清0),导致定时器时间紊乱,main函数无法正常执行,如遇此情况请更换高性能1T单片机、优化代码、提高晶振频率。

作者: 红豆杉杉    时间: 2021-11-27 21:04
再没有使用操作系统的情况下可以,但是不好,一般中断函数要尽量短小,精简
作者: rayin    时间: 2021-11-29 09:50
中断的目的就是为了单片机快捷高效处理事务,如果加入延时, 是与这个初衷相悖的。
作者: 1296809905    时间: 2021-11-29 10:18
最好别用
作者: Hephaestus    时间: 2021-11-29 23:51
μs级别的延迟,如果确有必要,可以加,虽然不建议。

ms级别的延迟,定时器中断不够你用的吗?加上去显得太蠢了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1