欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關于單片機的中斷嵌套執行的問題
[打印本頁]
作者:
Heddea—
時間:
2022-8-20 12:02
標題:
關于單片機的中斷嵌套執行的問題
我遇到了一個問題:
按照中斷優先級來說,中斷的執行會先比較“搶占優先級”,如果前者相同再比較“子優先級”,如果“子優先級”也相同在比較各自的“序號”。
那么如果一個中斷函數執行時,該中斷又被觸發了,兩者的優先級都是相同的,此時該如何執行呢?
我了解到的一種說法是雖然兩者的優先級相同,但是還是會發生“中斷的嵌套”,即前一個同優先級的中斷會被后一個中斷打斷。
如果是這樣的話,對于按照一定時間進入一次中斷函數的中斷一定是無法執行的了,因為該中斷會被無限的嵌套下去。
但是如果在以下的使用情景中,中斷嵌套還會很大的影響程序的運行嗎?
即:通過IO口檢測外部的上升沿,進而觸發中斷,而該上升沿由按鍵按下產生,按鍵按下時會產生抖動,如果不進行消抖的話,可能會導致單片機的IO口接收到很多的上升沿信號,進而產生多個中斷,但是該種中斷的數量是有限的,中斷函數也比較簡單(這里中斷函數的內容即使執行多次對程序也無任何不良影響),所以此時即使產生了多個中斷的嵌套,單片機應該也可以快速的將這些嵌套處理完畢,即此時可以將中斷嵌套的影響忽略不計。
請問我上面的想法對嗎?
作者:
yzwzfyz
時間:
2022-8-22 17:05
本帖最后由 yzwzfyz 于 2022-8-23 08:23 編輯
有頭腦,善于思考問題。汝子可教也!
1、中斷是不是響應,取決于中斷源自己的標記:F。(其它的中斷允許、屏蔽不在此討論,并假設中斷源標記是 F)。
對于 F的清除有兩種方式(具體看手冊):
其一、響應后CPU硬件自動清除。其二響應后需人工清除。
2、在你進入中斷程序后(已響應),就不會再響應本源的中斷。假如你已清除了F,而這時中斷源又動作了,它只能將F置1,無法做任何事,中斷N次,也只是將F置1而矣,一次與N次都一樣。
3、當你退出中斷服務程序后(以RETI為標志),CPU硬件會再次識別F是否為1。是1則再次響應。CPU并不識別中斷源動作了多少次,而只識別F是否為1。
4、在你進入中斷程序后(已響應),中斷源又動作了N次,它只能將F置1,而你在退出中斷之前,又做了一個【缺德】的事,清F清0了!這時,你再退出中斷服務程序后。程序不會再進入中斷,因為CPU看不見F了。
CPU響應中斷有以下條件:
1、本源F標記=1。
2、中斷被允許。
3、無更高級或同級中斷已被響應。
4、當前指令已執行結束(當前指令未執行完不響應)。
5、RETI 的一條指令已被執行(看手冊,是否有這一條。一些單片機需要RETI后再執行1-2條指令才能識別到F)。
總結:
1、中斷源動作只能使 F=1,并不能讓CPU立即響應中斷。
2、中斷源動作N次,在未被CPU響應之前,只有最后一個起作用,CPU不識別動作次數。
3、中斷源動作N次,而中斷已被CPU響應,是否再次被響應,取決于本次中斷服務程序退出時,F是否為1。當然如果有更高級的中斷發生,即使未退出,也被搶了。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1