事件是中斷的觸發(fā)源,開(kāi)放了對(duì)應(yīng)的中斷屏蔽位,則事件可以觸發(fā)相應(yīng)的中斷。事件還是其它一些操作的觸發(fā)源,比如DMA,還有TIM中影子寄存器的傳遞與更新;而中斷是不能觸發(fā)這些操作的,所以要把事件與中斷區(qū)分開(kāi)。當(dāng)你只要產(chǎn)生中斷而不想觸發(fā)其它操作時(shí),就可以用事件屏蔽寄存器實(shí)現(xiàn)。
在STM32中,中斷與事件不是等價(jià)的,一個(gè)中斷肯定對(duì)應(yīng)一個(gè)事件,但一個(gè)事件不一定對(duì)應(yīng)一個(gè)中斷。
這張圖是一條外部中斷線或外部事件線的示意圖,圖中信號(hào)線上劃有一條斜線,旁邊標(biāo)志19字樣的注釋,表示這樣的線路共有19套.圖中的藍(lán)色虛線箭頭,標(biāo)出了外部中斷信號(hào)的傳輸路徑,首先外部信號(hào)從編號(hào)1的芯片管腳進(jìn)入,經(jīng)過(guò)編號(hào)2的邊沿檢測(cè)電路,通過(guò)編號(hào)3的或門(mén)進(jìn)入中斷掛起請(qǐng)求寄存器,最后經(jīng)過(guò)編號(hào)4的與門(mén)輸出到NVIC中斷檢測(cè)電路,這個(gè)邊沿檢測(cè)電路受上升沿或下降沿選擇寄存器控制,用戶可以使用這兩個(gè)寄存器控制需要哪一個(gè)邊沿產(chǎn)生中斷,因?yàn)檫x擇上升沿或下降沿是分別受2個(gè)平行的寄存器控制,所以用戶可以同時(shí)選擇上升沿或下降沿,而如果只有一個(gè)寄存器控制,那么只能選擇一個(gè)邊沿了.
按下來(lái)是編號(hào)3的或門(mén),這個(gè)或門(mén)的另一個(gè)輸入是軟件中斷/事件寄存器,從這里可以看出,軟件可以優(yōu)先于外部信號(hào)請(qǐng)求一個(gè)中斷或事件,即當(dāng)軟件中斷/事件寄存器的對(duì)應(yīng)位為"1"時(shí),不管外部信號(hào)如何,編號(hào)3的或門(mén)都會(huì)輸出有效信號(hào).
一個(gè)中斷或事件請(qǐng)求信號(hào)經(jīng)過(guò)編號(hào)3的或門(mén)后,進(jìn)入掛起請(qǐng)求寄存器,到此之前,中斷和事件的信號(hào)傳輸通路都是一致的,也就是說(shuō),掛起請(qǐng)求寄存器中記錄了外部信號(hào)的電平變化.
外部請(qǐng)求信號(hào)最后經(jīng)過(guò)編號(hào)4的與門(mén),向NVIC中斷控制器發(fā)出一個(gè)中斷請(qǐng)求,如果中斷屏蔽寄存器的對(duì)應(yīng)位為"0",則該請(qǐng)求信號(hào)不能傳輸?shù)脚c門(mén)的另一端,實(shí)現(xiàn)了中斷的屏蔽.
明白了外部中斷的請(qǐng)求機(jī)制,就很容易理解事件的請(qǐng)求機(jī)制了.圖中紅色虛線箭頭,標(biāo)出了外部事件信號(hào)的傳輸路徑,外部請(qǐng)求信號(hào)經(jīng)過(guò)編號(hào)3的或門(mén)后,進(jìn)入編號(hào)5的與門(mén),這個(gè)與門(mén)的作用與編號(hào)4的與門(mén)類(lèi)似,用于引入事件屏蔽寄存器的控制;最后脈沖發(fā)生器的一個(gè)跳變的信號(hào)轉(zhuǎn)變?yōu)橐粋€(gè)單脈沖,輸出到芯片中的其它功能模塊.從這張圖上我們也可以知道,從外部激勵(lì)信號(hào)來(lái)看,中斷和事件的產(chǎn)生源都可以是一樣的.之所以分成2個(gè)部分,由于中斷是需要CPU參與的,需要軟件的中斷服務(wù)函數(shù)才能完成中斷后產(chǎn)生的結(jié)果;但是事件,是靠脈沖發(fā)生器產(chǎn)生一個(gè)脈沖,進(jìn)而由硬件自動(dòng)完成這個(gè)事件產(chǎn)生的結(jié)果,當(dāng)然相應(yīng)的聯(lián)動(dòng)部件需要先設(shè)置好,比如引起DMA操作,AD轉(zhuǎn)換等;
簡(jiǎn)單舉例:外部I/O觸發(fā)AD轉(zhuǎn)換,來(lái)測(cè)量外部物品的重量;如果使用傳統(tǒng)的中斷通道,需要I/O觸發(fā)產(chǎn)生外部中斷,外部中斷服務(wù)程序啟動(dòng)AD轉(zhuǎn)換,AD轉(zhuǎn)換完成中斷服務(wù)程序提交最后結(jié)果;要是使用事件通道,I/O觸發(fā)產(chǎn)生事件,然后聯(lián)動(dòng)觸發(fā)AD轉(zhuǎn)換,AD轉(zhuǎn)換完成中斷服務(wù)程序提交最后結(jié)果;相比之下,后者不要軟件參與AD觸發(fā),并且響應(yīng)速度也更塊;要是使用事件觸發(fā)DMA操作,就完全不用軟件參與就可以完成某些聯(lián)動(dòng)任務(wù)了。
總結(jié):
可以這樣簡(jiǎn)單的認(rèn)為,事件機(jī)制提供了一個(gè)完全有硬件自動(dòng)完成的觸發(fā)到產(chǎn)生結(jié)果的通道,不要軟件的參與,降低了CPU的負(fù)荷,節(jié)省了中斷資源,提高了響應(yīng)速度(硬件總快于軟件),是利用硬件來(lái)提升CPU芯片處理事件能力的一個(gè)有效方法。
-
STM32
+關(guān)注
關(guān)注
2270文章
10915瀏覽量
356774 -
中斷
+關(guān)注
關(guān)注
5文章
900瀏覽量
41596
原文標(biāo)題:【清晰明了】STM32中斷和事件的區(qū)別!
文章出處:【微信號(hào):fcsde-sh,微信公眾號(hào):fcsde-sh】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論