昨天學(xué)習(xí)了從圖形化開(kāi)始設(shè)計(jì),今天開(kāi)始要每天學(xué)習(xí)一個(gè)外設(shè)。本堂課學(xué)習(xí)中斷。
中斷:
中斷是硬件管理的一種手段,在中斷講解之初,要引入概念:異常。中斷是異常的中的一種,所謂中斷就是在任務(wù)執(zhí)行過(guò)程中打斷,強(qiáng)行執(zhí)行一個(gè)另外的任務(wù)。目前可以等同理解。
第一個(gè)啟動(dòng)文件中,第一件事是設(shè)置棧容量和復(fù)位中斷。
異常向量表:各個(gè)子程序入口,所有的中斷和異常都要以地址形式訪問(wèn)
中斷的過(guò)程:
[if !supportLists]1.??????????[endif]保護(hù)現(xiàn)場(chǎng),
[if !supportLists]2.??????????[endif]儲(chǔ)存返回地址
[if !supportLists]3.??????????[endif]進(jìn)入ISR
[if !supportLists]4.??????????[endif]釋放資源并返回現(xiàn)場(chǎng)
[if !supportLists]5.??????????[endif]程序交給PC
中斷過(guò)程會(huì)把目前MPU的所有寄存器狀態(tài)壓入一個(gè)專用的棧中,并把返回地址儲(chǔ)存起來(lái),這是中斷的第一步,即保護(hù)現(xiàn)場(chǎng)。
然后將當(dāng)前要跳轉(zhuǎn)的程序交給中斷子程序。
中斷子程序用ISR表示
異常用于解決系統(tǒng)性的問(wèn)題,中斷是用戶使用的,在中斷/異常向量表中,異常用灰色表示,中斷用白色表示。
中斷的優(yōu)先級(jí):優(yōu)先級(jí)值越小,優(yōu)先級(jí)越高,但中斷都高于前后臺(tái)的用戶程序。
中斷嵌套控制器(NVIC):
中斷打斷中斷即稱為中斷嵌套,通過(guò)優(yōu)先級(jí)實(shí)現(xiàn)。兩類優(yōu)先級(jí):搶占式優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)。
設(shè)置優(yōu)先級(jí)組:表示優(yōu)先級(jí)的只有4位,即0~15共16個(gè)優(yōu)先級(jí),搶占式和響應(yīng)式并存,但是分為兩組,共同參與4位的分配,
搶占式優(yōu)先級(jí)的用法是誰(shuí)的優(yōu)先級(jí)高,就可以搶占,多用于中斷嵌套。搶占優(yōu)先級(jí)高可以打斷搶占優(yōu)先級(jí)低的。
響應(yīng)式優(yōu)先級(jí),在搶占相同時(shí),響應(yīng)高的才能執(zhí)行,當(dāng)搶占、響應(yīng)都相同,則應(yīng)當(dāng)參考中斷向量表,誰(shuí)先執(zhí)行
中斷的使用:
初始化NVIC
配置優(yōu)先級(jí)(優(yōu)先級(jí)組、優(yōu)先級(jí)值)
使能對(duì)應(yīng)外設(shè)的中斷,
?
外設(shè)的中斷
外部中斷EXTI:
外部輸入引發(fā)中斷,在51單片機(jī)中,可能是高電平、低電平、上升沿、下降沿引發(fā)中斷,而在stm32中,只有邊沿引發(fā)中斷
上升沿
下降沿
雙邊沿
管理一百多根線中斷的也只有16根引腳,除了引腳電平變化,還有內(nèi)部溫度采樣、或其他內(nèi)部一些狀態(tài)可以引發(fā),一共有23個(gè)中斷