|
中斷的執(zhí)行過程,大概是這樣的:(假設(shè)中斷1,中斷2,且中斷1優(yōu)先級(jí)高)
1、中斷1發(fā)生中斷了,執(zhí)行這個(gè)中斷服務(wù)程序。
2、在中斷1執(zhí)行服務(wù)程序期間,中斷2發(fā)生了,由于它的優(yōu)先級(jí)低,所以等待。
3、中斷1服務(wù)程序執(zhí)行完畢,返回中斷點(diǎn),再去執(zhí)行中斷2的服務(wù)程序。看到?jīng)],兩個(gè)中斷服務(wù)程序都執(zhí)行了的。
4、在中斷2服務(wù)程序執(zhí)行期間,中斷1又發(fā)生了,由于它的優(yōu)先級(jí)高,所以立即去執(zhí)行中斷1的服務(wù)程序,即中斷2的服務(wù)程序被打斷了。
5、當(dāng)中斷1的服務(wù)程序執(zhí)行完畢,回到中斷2的服務(wù)程序剛才打斷的點(diǎn),繼續(xù)執(zhí)行中斷2的服務(wù)程序。看到?jīng)],兩個(gè)中斷服務(wù)程序還是執(zhí)行了的。
6、中斷2服務(wù)程序執(zhí)行完畢,回到主程序剛才中斷2打斷的位置處,繼續(xù)執(zhí)行主程序。
不論兩個(gè)中斷服務(wù)程序是不是有代碼重復(fù),單片機(jī)CPU會(huì)自動(dòng)認(rèn)為是兩個(gè)函數(shù),自動(dòng)會(huì)按照一定的規(guī)則去執(zhí)行它們,你是不需要擔(dān)心的。
當(dāng)然,這種中斷嵌套,也是有麻煩的。套得太深(多次打斷中斷服務(wù)程序),有可能出現(xiàn)不可預(yù)料的結(jié)果。所以,通常不是很緊要的操作,都不設(shè)置優(yōu)先級(jí)。我只在給新手演示中斷可以嵌套這個(gè)時(shí)候用過優(yōu)先級(jí),在實(shí)際應(yīng)用中,只在智能小車用按鍵調(diào)速、選擇功能時(shí),讓按鍵的外部中斷優(yōu)先級(jí)高于用于PWM波的定時(shí)器中斷優(yōu)先級(jí)。
|
|