標題: 單片機定時器中斷會被下一個定時器中斷嗎? [打印本頁] 作者: lxh2002 時間: 2024-6-12 21:20 標題: 單片機定時器中斷會被下一個定時器中斷嗎? 1、定時器設為5毫秒
2、第一次定時器中斷,程序開始處理一些事務
3、由于事務繁多,或預估的5毫秒時間不夠處理完事務,這時下一個定時器中斷時間到了
4、請問,本次中斷會被下一個中斷打斷么,還是會忽略到來的中斷繼續處理沒做完的事務,一直到完成本次中斷 作者: 188610329 時間: 2024-6-12 22:27
如果,你的定時器中斷周期是5ms, 而你中斷中需要處理的事件耗時需要超過5ms,那么,你這個設計是失敗的!
你根本出不了中斷,或者說,有出去這個動作,隨后又進去了,那么,你還要中斷程序干什么?直接寫在 while(1)里面就好了。作者: 明日之星8 時間: 2024-6-12 23:54
定時間隔盡量設長一些,中斷內的程序盡量少一些,
長時間才能處理完的任務要放在大循環中執行。
“中斷函數重入”這種你不能預料的事情要杜絕。
一家之言。作者: xiaobendan001 時間: 2024-6-13 07:10
中斷可以被更高級的中斷,不能被平級或者自己再次中斷。把中斷里面的耗時的東西拿到主循環里面作者: rayin 時間: 2024-6-13 07:42
中斷執行程序要盡可能的短小精悍, 耗時過長的任務放在main主程序中執行. 5ms的中斷程序還沒執行完畢, 下一個5ms又來, 中斷程序不可以被自己打斷的.要等到執行完畢以后才能再次進入5ms的中斷程序.中斷搶占是要被更高一級的中斷程序打斷.作者: wufa1986 時間: 2024-6-13 08:38
不會,但是如果一直這樣繁忙,mian函數就無法運行了作者: wjhhhhh 時間: 2024-6-13 10:55
5#說的 “中斷程序不可以被自己打斷的.要等到執行完畢 (這個中斷程序) 以后才能再次進入...(這個)中斷程序.” 是正確的作者: 04097 時間: 2024-6-13 11:31
要看中斷的優先級,高的會打斷低的,低的或同等不會作者: yytytx 時間: 2024-6-13 11:48
如果中斷服務程序沒有屏蔽定時器中斷,并且下一個定時器中斷的優先級不低于當前正在處理的中斷,那么下一個定時器中斷會打斷當前的中斷服務程序,并跳轉到新的中斷服務程序。這可能導致當前中斷服務程序中的數據或狀態被破壞,除非它已經被適當地保護起來。作者: 54sulibin 時間: 2024-6-13 17:52
必須手動清除這個中斷標志位以后,才會產生下一個中斷,你把事情處理完了,再清除標志位,這樣就不會出現沖突的情況了。作者: heihei51aaaaa 時間: 2024-6-13 18:12
When the processor is servicing the interrupt program, the first thing it does is to disable interrupts (this is automatic and it is done by the processor).
When you finish the interrupt and execute the "RETI" instruction (return from interrupt), this instruction automatically will return from interrupt and also it will reenable the interrupts (wich were disabled by the processor when it started executing this intrerrupt).作者: npn 時間: 2024-6-14 17:57
如果下一個定時器中斷比當前中斷優先級高就能會被打斷,否則不能,具體見數據手冊。作者: coody_sz 時間: 2024-6-15 11:26
正在處理中斷時,不會被中斷打斷,會處理完成退出后,馬上又進來。
中斷處理時間長于中斷間隔時間,結果是,CPU被拖死,設計嚴重不當!一般要求所有中斷耗時最長時占CPU時間的一半以下為好。作者: lxh2002 時間: 2024-6-16 21:55
經過嚴格測試,定時器中斷不會被自己下一個中斷打斷,在本次中斷未運行完之前,會忽略正在發生的定時器中斷作者: 北方之鄙人 時間: 2024-6-21 23:13
會的,低優先級的中斷會被高優先級的中斷所打斷作者: npn 時間: 2024-6-22 11:26
定時器設定為5毫秒,定時器中斷內的程序要求必須在5毫秒內返回,否則會導致時間紊亂。作者: 小小夢魘 時間: 2024-6-22 16:51
中斷會不會被中斷,要看你自己的中斷優先級,中斷等級低的會被中斷等級高的中斷作者: 胖道人 時間: 2024-7-21 20:29
不會,因為中斷服務子程序處理時間不在定時器計數時間內作者: zyftank 時間: 2024-7-21 21:17
中斷只改變Flag變量,不干具體的事,具體業務處理放進main里處理。作者: 1853403148 時間: 2024-7-21 21:22
中斷服務程序的執行時間:一旦定時器中斷被觸發,CPU會進入相應的中斷服務程序。如果當前的中斷服務程序執行時間過長,而下一個定時器中斷的時間已經到達,那么CPU的行為將取決于中斷優先級的設置。 如果當前中斷的優先級高于下一個定時器中斷的優先級,那么CPU將繼續執行當前的中斷服務程序,直到其完成。下一個定時器中斷將被暫時掛起,等待當前中斷處理完畢后再進行處理。 如果下一個定時器中斷的優先級高于或等于當前中斷的優先級,那么CPU可能會立即響應下一個定時器中斷,中斷當前的中斷服務程序,轉而執行新的中斷服務程序。這可能會導致當前中斷服務程序中的部分工作被打斷,需要在新的中斷服務程序執行完畢后,再由CPU決定是否繼續執行之前被打斷的中斷服務程序。