1. 程式人生 > >STM32的中斷與事件

STM32的中斷與事件

這張圖是一條外部中斷線或外部事件線的示意圖,圖中訊號線上劃有一條斜線,旁邊標誌19字樣的註釋,表示這樣的線路共有19套.圖中的藍色虛線箭頭,標出了外部中斷訊號的傳輸路徑,首先外部訊號從編號1的晶片管腳進入,經過編號2的邊沿檢測電路,通過編號3的或門進入中斷掛起請求暫存器,最後經過編號4的與門輸出到NVIC中斷檢測電路,這個邊沿檢測電路受上升沿或下降沿選擇暫存器控制,使用者可以使用這兩個暫存器控制需要哪一個邊沿產生中斷,因為選擇上升沿或下降沿是分別受2個平行的暫存器控制,所以使用者可以同時選擇上升沿或下降沿,而如果只有一個暫存器控制,那麼只能選擇一個邊沿了.
接下來是編號3的或門,這個或門的另一個輸入是軟體中斷/事件暫存器,從這裡可以看出,軟體可以優先於外部訊號請求一箇中斷或事件,即當軟體中斷/事件暫存器的對應位為"1"時,不管外部訊號如何,編號3的或門都會輸出有效訊號.
一箇中斷或事件請求訊號經過編號3的或門後,進入掛起請求暫存器,到此之前,中斷和事件的訊號傳輸通路都是一致的,也就是說,掛起請求暫存器中記錄了外部訊號的電平變化。外部請求訊號最後經過編號4的與門,向NVIC中斷控制器發出一箇中斷請求,如果中斷遮蔽暫存器的對應位為"0",則該請求訊號不能傳輸到與門的另一端,實現了中斷的遮蔽.
明白了外部中斷的請求機制,就很容易理解事件的請求機制了.圖中紅色虛線箭頭,標出了外部事件訊號的傳輸路徑,外部請求訊號經過編號3的或門後,進入編號5的與門,這個與門的作用與編號4的與門類似,用於引入事件遮蔽暫存器的控制;最後脈衝發生器的一個跳變的訊號轉變為一個單脈衝,輸出到晶片中的其它功能模組.從這張圖上我們也可以知道,從外部激勵訊號來看,中斷和事件的產生源都可以是一樣的.之所以分成2個部分,由於中斷是需要CPU參與的,需要軟體的中斷服務函式才能完成中斷後產生的結果;但是事件,是靠脈衝發生器產生一個脈衝,進而由硬體自動完成這個事件產生的結果,當然相應的聯動部件需要先設定好,比如引起DMA操作,AD轉換等;
簡單舉例:外部I/O觸發AD轉換,來測量外部物品的重量;如果使用傳統的中斷通道,需要I/O觸發產生外部中斷,外部中斷服務程式啟動AD轉換,AD轉換完成中斷服務程式提交最後結果;要是使用事件通道,I/O觸發產生事件,然後聯動觸發AD轉換,AD轉換完成中斷服務程式提交最後結果;相比之下,後者不要軟體參與AD觸發,並且響應速度也更塊;要是使用事件觸發DMA操作,就完全不用軟體參與就可以完成某些聯動任務了。
總結:
可以這樣簡單的認為,事件機制提供了一個完全有硬體自動完成的觸發到產生結果的通道,不要軟體的參與,降低了CPU的負荷,節省了中斷資源,提高了響應速度(硬體總快於軟體),是利用硬體來提升CPU晶片處理事件能力的一個有效方法;

相關推薦

STM32中斷事件的區別

中斷和事件的產生源都可以是一樣的! 之所以分成2個部分,由於中斷是需要CPU參與的,需要軟體的中斷服務函式才能完成中斷後產生的結果; 但是事件,是靠脈衝發生器產生一個脈衝,進而由硬體自動完成這個事件產生的結果,當然相應的聯動部件需要先設定好,比如引起DMA操作,AD轉換等; 簡單舉例:外部I/O觸發AD轉換,

STM32中斷事件---中斷事件的區別

這張圖是一條外部中斷線或外部事件線的示意圖,圖中訊號線上劃有一條斜線,旁邊標誌19字樣的註釋,表示這樣的線路共有19套.圖中的藍色虛線箭頭,標出了外部中斷訊號的傳輸路徑,首先外部訊號從編號1的晶片管腳進入,經過編號2的邊沿檢測電路,通過編號3的或門進入中斷掛起請求暫存器,

STM32中斷事件

這張圖是一條外部中斷線或外部事件線的示意圖,圖中訊號線上劃有一條斜線,旁邊標誌19字樣的註釋,表示這樣的線路共有19套.圖中的藍色虛線箭頭,標出了外部中斷訊號的傳輸路徑,首先外部訊號從編號1的晶片管腳進入,經過編號2的邊沿檢測電路,通過編號3的或門進入中斷掛起請求暫存器,最後經過編號4的與門輸出到NVIC中斷

STM32 中斷事件

凡從事過ST MCU應用開發的人往往會遇到事件、中斷事件 中斷三個概念或術語。這三個概念彼此關聯,有時會讓人有點混淆或犯迷糊。 先拿一件生活中的事情打比方對上述三個概念做個基本的粗略理解,之後再分享一個STM32 GPIO外部中斷配置案例。比如一老師在教室裡給學生們上課。課堂

stm32中斷學習篇(2)——以外部中斷為例多箇中斷的使用

上一篇簡單寫了一下中斷的理論,給了一個定時器的例子。 這一篇主要寫一下外部中斷的例子。這個例子中使用了兩個外部中斷,使用多個的話道理差不多。 還是對照著理論把程式寫出來。 配置GPIO的部分就不說了。程式在後面給出,有詳細註釋。 直接開始說配置NVIC和

STM32中使用systick時鐘進行延時的中斷中斷兩種方法

一、第一種方法是進入核心中斷的方式 //以下程式是根據官方程式修改的 #include "systick.h" /* Private variables ---------------------------------------------------------*/ u32 Timin

STM32中斷事件

上圖框圖中對應的暫存器可以在技術手冊中找到相關的意義。 上圖19箇中斷源的意義也可以在技術手冊中找到, 可以這樣簡單的理解: 詳細點的理解: 在STM32中,中斷與事件不是等價的,一箇中斷肯定對應一個事件,但一個事件不一定對應一箇中斷。 事件只是一個觸發訊號(脈衝

STM32 中斷應用概覽

arm emp nvic ann 參考手冊 其它 文件中 type 嵌套 本章參考資料《 STM32F4xx 中文參考手冊》第十章-中斷和事件、《ARM Cortex?-M4F 技術參考手冊》 -4.3 章節: NVIC 和 4.4 章節: SCB—4.4.5 的 AIRC

JS中的事件監聽事件

pan 交互 ack 其他 獲得 發生 listen 監聽器 pre 事件監聽:   使用監聽器(eventListener)來預定事件,在傳統軟件工程中稱成為觀察者模式   執行某種操作時(特定的交互瞬間),會產生對象,對象會沿事件流的方向傳播。 事件流:   事件流有

C#委托事件學習筆記

調用函數 msdn http msd proc for reac .net 委托方 今天跟隨視頻學習了一下C#中最重要的一些概念之委托與事件。老楊的視頻講的還是挺深入淺出,不過剛接觸C#.NET的人還是朦朦朧朧,就像張子陽先生說的“每次見到委托和事件就覺得心裏別

Redis 內存管理事件處理

erp 監聽端口 nal 回調 files poll 其中 監聽服務 repl 1 Redis內存管理 Redis內存管理相關文件為zmalloc.c/zmalloc.h,其只是對C中內存管理函數做了簡單的封裝,屏蔽了底層平臺的差異,並增加了內存使用情況統計的功能。 v

C# 委托事件

觀察 自動完成 代碼 委托 約定 .html 完成 blog htm c#事件 委托: 1.類似觀察者模式。 2.當某個對象(類),執行某個動作時,之前委托的事情會自動完成。 (如B,C訂閱A的事件,當A執行某動作,B和C均會按照約定進行對應動作)使用步驟

c# 委托事件的區別

變量 del 另一個 ext 類型 編譯 擴展 hand 例子 委托與事件的區別 委托和事件沒有可比性,因為委托是數據類型,事件是對象(可以理解為對委托變量的封裝。),下面說的是委托的對象(用委托方式實現的事件)和(標準的event方式實現)事件的區別。事件的內部是用委托

事件捕獲事件冒泡

點擊 web 不想 dhtml 參考 model 兼容 dom style 一、背景 假設有一個HTML代碼片段如下: <div id="div"> <input type="button" value="點擊測試"></input&

QT中的線程事件循環理解(2)

註釋 由於 做什麽 hid post 適用於 tsig call 循環 1. Qt多線程與Qobject的關系   每一個 Qt 應用程序至少有一個事件循環,就是調用了QCoreApplication::exec()的那個事件循環。不過,QThread也可以開啟事件循環

js 事件冒泡事件捕獲

nodename 瀏覽器兼容 而不是 rop 希望 bubble lis 彈出 element 一、事件冒泡 事件冒泡是指在事件發生過程中先從目標節點開始執行,並一層一層的相父節點依次查詢直到document,並執行相同事件的過程。 btn1.addEventListe

事件流,事件捕獲事件冒泡-基礎知識總結------彭記(018)

sca ie9 com pre 類型 har code 做出 viewport 事件流: -事件流包括三個階段-事件捕獲階段、處於目標階段和事件冒泡階段。 -首先發生的是事件捕獲,為截獲事件提供了機會,然後是實際的目標接收到事件,最後一個階段是冒泡階段,可以在這個階段對事件

委托事件

list 異步多線程 one for 順序 邏輯 外部 each 聲明 委托是一種類型;事件是委托的一個實例。委托的意義:異步多線程、邏輯分離 public delegate void CateAction();//委托 public event CateAction Ca

信號槽 事件區別

消息傳遞 only nbc 普通 阻塞 send cat 自動分配 aware 信號槽 與事件區別 仔細來看,事件與信號其實並無多大差別,從我們對其需求上來說,都只要能註冊事件或信號響應函數,在事件或信號產生時能夠被通知到即可。但有一項區別在於,事件處理函數的返回值是有

Vue深度學習(4)-方法事件處理器

() 一個 span 修飾 語句 特殊變量 方法 left stop 方法處理器 可以用 v-on 指令監聽 DOM 事件: <div id="app"> <button v-on:click = "greet">Greet<