標題: 能不能在單片機定時器中斷函數(shù)中加延時函數(shù)? [打印本頁]

作者: fsdafasdfasdf    時間: 2020-9-24 14:31
標題: 能不能在單片機定時器中斷函數(shù)中加延時函數(shù)?
能不能在單片機定時器中斷函數(shù)中加延時函數(shù)?如果加了延時會造成什么效果呢,到底是定時器優(yōu)先級高還是延時函數(shù)優(yōu)先級高呢?

作者: xianfajushi    時間: 2020-9-24 16:23
通常是指循環(huán)延時,如果延時函數(shù)在中斷中調(diào)用則優(yōu)先級同中斷。中斷當然可以調(diào)用延時,也可以直接把循環(huán)延時寫在中斷中,只是畫蛇添足的做法而已,通常學(xué)到一定階段就不會這樣寫和調(diào)用了,因為中斷就是有間隔的直接可當延時用。
作者: wulin    時間: 2020-9-24 16:33
在單片機定時器中斷函數(shù)中加延時函數(shù)沒有邏輯問題。一個成熟的代碼不會在定時器中斷函數(shù)中加延時函數(shù),除非是必不可少的幾us的延時。中斷函數(shù)是打斷主函數(shù)運行的需要及時處理的事件,占時盡可能短。插入較長延時會影響系統(tǒng)運行效率,甚至破壞其它外設(shè)的運行。優(yōu)先級只是針對CPU響應(yīng)各種中斷函數(shù)的排序,與延時函數(shù)無關(guān)。
作者: univers    時間: 2020-9-24 16:48
可是可以,但中斷里放延時函數(shù)是水貨的做法。
作者: angmall    時間: 2020-9-24 22:33
通常在中斷子程序中是不調(diào)用延時子程序的,這樣會增加中斷處理時間,如果有其它低級中斷了,就會延誤響應(yīng)中斷了。

作者: TTQ001    時間: 2020-9-25 08:11
最好不要在中斷例程中使用延遲
作者: abcque    時間: 2020-9-25 08:26
當然可以使用啊,有優(yōu)先級的,高級別的中斷 打斷低級別的中斷
作者: KongQuan    時間: 2020-9-25 10:35
中斷是用來快速響應(yīng)事件的。加了延時,會影響其他更低優(yōu)先級的中斷響應(yīng),當然不能加了。可以做標志,然后在主循環(huán)中延時處理。
作者: maojiaqimaojiaq    時間: 2020-9-25 17:39
中斷里面放延遲會影響處理速度,影響優(yōu)先級

作者: lwh999995    時間: 2020-9-26 23:42
可以,例如定時器延時50MS,定時器中斷那來一個delayms(2)函數(shù),延時2毫秒是沒問題的,只要控制在50MS之下勉強可以,但是還是不建議這樣干,并不專業(yè),不推薦

作者: gfshao    時間: 2020-9-29 15:16
一般不建議
作者: npn    時間: 2021-11-27 19:23
如果定時器中斷內(nèi)程序執(zhí)行的時間,超過了定時器設(shè)定的時間。
中斷不會被自己打斷,而是定時器溢出后TF0會被硬件置1,中斷返回后會再次進入該中斷(硬件清0),導(dǎo)致定時器時間紊亂,main函數(shù)無法正常執(zhí)行,如遇此情況請更換高性能1T單片機、優(yōu)化代碼、提高晶振頻率。

作者: 紅豆杉杉    時間: 2021-11-27 21:04
再沒有使用操作系統(tǒng)的情況下可以,但是不好,一般中斷函數(shù)要盡量短小,精簡
作者: rayin    時間: 2021-11-29 09:50
中斷的目的就是為了單片機快捷高效處理事務(wù),如果加入延時, 是與這個初衷相悖的。
作者: 1296809905    時間: 2021-11-29 10:18
最好別用
作者: Hephaestus    時間: 2021-11-29 23:51
μs級別的延遲,如果確有必要,可以加,雖然不建議。

ms級別的延遲,定時器中斷不夠你用的嗎?加上去顯得太蠢了。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1