標(biāo)題: 單片機(jī)定時(shí)器中斷會被下一個(gè)定時(shí)器中斷嗎? [打印本頁] 作者: lxh2002 時(shí)間: 2024-6-12 21:20 標(biāo)題: 單片機(jī)定時(shí)器中斷會被下一個(gè)定時(shí)器中斷嗎? 1、定時(shí)器設(shè)為5毫秒
2、第一次定時(shí)器中斷,程序開始處理一些事務(wù)
3、由于事務(wù)繁多,或預(yù)估的5毫秒時(shí)間不夠處理完事務(wù),這時(shí)下一個(gè)定時(shí)器中斷時(shí)間到了
4、請問,本次中斷會被下一個(gè)中斷打斷么,還是會忽略到來的中斷繼續(xù)處理沒做完的事務(wù),一直到完成本次中斷 作者: 188610329 時(shí)間: 2024-6-12 22:27
如果,你的定時(shí)器中斷周期是5ms, 而你中斷中需要處理的事件耗時(shí)需要超過5ms,那么,你這個(gè)設(shè)計(jì)是失敗的!
你根本出不了中斷,或者說,有出去這個(gè)動作,隨后又進(jìn)去了,那么,你還要中斷程序干什么?直接寫在 while(1)里面就好了。作者: 明日之星8 時(shí)間: 2024-6-12 23:54
定時(shí)間隔盡量設(shè)長一些,中斷內(nèi)的程序盡量少一些,
長時(shí)間才能處理完的任務(wù)要放在大循環(huán)中執(zhí)行。
“中斷函數(shù)重入”這種你不能預(yù)料的事情要杜絕。
一家之言。作者: xiaobendan001 時(shí)間: 2024-6-13 07:10
中斷可以被更高級的中斷,不能被平級或者自己再次中斷。把中斷里面的耗時(shí)的東西拿到主循環(huán)里面作者: rayin 時(shí)間: 2024-6-13 07:42
中斷執(zhí)行程序要盡可能的短小精悍, 耗時(shí)過長的任務(wù)放在main主程序中執(zhí)行. 5ms的中斷程序還沒執(zhí)行完畢, 下一個(gè)5ms又來, 中斷程序不可以被自己打斷的.要等到執(zhí)行完畢以后才能再次進(jìn)入5ms的中斷程序.中斷搶占是要被更高一級的中斷程序打斷.作者: wufa1986 時(shí)間: 2024-6-13 08:38
不會,但是如果一直這樣繁忙,mian函數(shù)就無法運(yùn)行了作者: wjhhhhh 時(shí)間: 2024-6-13 10:55
5#說的 “中斷程序不可以被自己打斷的.要等到執(zhí)行完畢 (這個(gè)中斷程序) 以后才能再次進(jìn)入...(這個(gè))中斷程序.” 是正確的作者: 04097 時(shí)間: 2024-6-13 11:31
要看中斷的優(yōu)先級,高的會打斷低的,低的或同等不會作者: yytytx 時(shí)間: 2024-6-13 11:48
如果中斷服務(wù)程序沒有屏蔽定時(shí)器中斷,并且下一個(gè)定時(shí)器中斷的優(yōu)先級不低于當(dāng)前正在處理的中斷,那么下一個(gè)定時(shí)器中斷會打斷當(dāng)前的中斷服務(wù)程序,并跳轉(zhuǎn)到新的中斷服務(wù)程序。這可能導(dǎo)致當(dāng)前中斷服務(wù)程序中的數(shù)據(jù)或狀態(tài)被破壞,除非它已經(jīng)被適當(dāng)?shù)乇Wo(hù)起來。作者: 54sulibin 時(shí)間: 2024-6-13 17:52
必須手動清除這個(gè)中斷標(biāo)志位以后,才會產(chǎn)生下一個(gè)中斷,你把事情處理完了,再清除標(biāo)志位,這樣就不會出現(xiàn)沖突的情況了。作者: heihei51aaaaa 時(shí)間: 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 時(shí)間: 2024-6-14 17:57
如果下一個(gè)定時(shí)器中斷比當(dāng)前中斷優(yōu)先級高就能會被打斷,否則不能,具體見數(shù)據(jù)手冊。作者: coody_sz 時(shí)間: 2024-6-15 11:26
正在處理中斷時(shí),不會被中斷打斷,會處理完成退出后,馬上又進(jìn)來。
中斷處理時(shí)間長于中斷間隔時(shí)間,結(jié)果是,CPU被拖死,設(shè)計(jì)嚴(yán)重不當(dāng)!一般要求所有中斷耗時(shí)最長時(shí)占CPU時(shí)間的一半以下為好。作者: lxh2002 時(shí)間: 2024-6-16 21:55
經(jīng)過嚴(yán)格測試,定時(shí)器中斷不會被自己下一個(gè)中斷打斷,在本次中斷未運(yùn)行完之前,會忽略正在發(fā)生的定時(shí)器中斷作者: 北方之鄙人 時(shí)間: 2024-6-21 23:13
會的,低優(yōu)先級的中斷會被高優(yōu)先級的中斷所打斷作者: npn 時(shí)間: 2024-6-22 11:26
定時(shí)器設(shè)定為5毫秒,定時(shí)器中斷內(nèi)的程序要求必須在5毫秒內(nèi)返回,否則會導(dǎo)致時(shí)間紊亂。作者: 小小夢魘 時(shí)間: 2024-6-22 16:51
中斷會不會被中斷,要看你自己的中斷優(yōu)先級,中斷等級低的會被中斷等級高的中斷作者: 胖道人 時(shí)間: 2024-7-21 20:29
不會,因?yàn)橹袛喾⻊?wù)子程序處理時(shí)間不在定時(shí)器計(jì)數(shù)時(shí)間內(nèi)作者: zyftank 時(shí)間: 2024-7-21 21:17
中斷只改變Flag變量,不干具體的事,具體業(yè)務(wù)處理放進(jìn)main里處理。作者: 1853403148 時(shí)間: 2024-7-21 21:22
中斷服務(wù)程序的執(zhí)行時(shí)間:一旦定時(shí)器中斷被觸發(fā),CPU會進(jìn)入相應(yīng)的中斷服務(wù)程序。如果當(dāng)前的中斷服務(wù)程序執(zhí)行時(shí)間過長,而下一個(gè)定時(shí)器中斷的時(shí)間已經(jīng)到達(dá),那么CPU的行為將取決于中斷優(yōu)先級的設(shè)置。 如果當(dāng)前中斷的優(yōu)先級高于下一個(gè)定時(shí)器中斷的優(yōu)先級,那么CPU將繼續(xù)執(zhí)行當(dāng)前的中斷服務(wù)程序,直到其完成。下一個(gè)定時(shí)器中斷將被暫時(shí)掛起,等待當(dāng)前中斷處理完畢后再進(jìn)行處理。 如果下一個(gè)定時(shí)器中斷的優(yōu)先級高于或等于當(dāng)前中斷的優(yōu)先級,那么CPU可能會立即響應(yīng)下一個(gè)定時(shí)器中斷,中斷當(dāng)前的中斷服務(wù)程序,轉(zhuǎn)而執(zhí)行新的中斷服務(wù)程序。這可能會導(dǎo)致當(dāng)前中斷服務(wù)程序中的部分工作被打斷,需要在新的中斷服務(wù)程序執(zhí)行完畢后,再由CPU決定是否繼續(xù)執(zhí)行之前被打斷的中斷服務(wù)程序。