本帖最后由 kkhkbb 于 2018-3-3 09:53 編輯
一、概述 1、中斷簡介 中斷是指計算機運行過程中,出現某些意外情況需主機干預時,機器能自動停止正在運行的程序并轉入處理新情況的程序,處理完畢后又返回原被暫停的程序繼續運行。 中斷的分類: (1)硬件中斷 - 可屏蔽中斷:硬件中斷的一類,可通過在中斷屏蔽寄存器中設定位掩碼來關閉。
- 非可屏蔽中斷:硬件中斷的一類,無法通過在中斷屏蔽寄存器中設定位掩碼來關閉。典型例子是時鐘中斷(一個硬件時鐘以恒定頻率—如50Hz—發出的中斷)。
- 處理器中斷:一種特殊的硬件中斷。由處理器發出,被其它處理器接收。僅見于多處理器系統,以便于處理器間通信或同步。
- 偽中斷:一類不希望被產生的硬件中斷。發生的原因有很多種,如中斷線路上電氣信號異常,或是中斷請求設備本身有問題。
(2)軟件中斷:是一條CPU指令,用以自陷一個中斷。由于軟中斷指令通常運行一個切換CPU至內核態的子例程,它常被用作實現系統調用。 中斷優先權: 在某一時刻有幾個中斷源同時發出中斷請求時,處理器只響應其中優先權最高的中斷源。當處理機正在運行某個中斷服務程序期間出現另一個中斷源的請求時,如果后者的優先權低于前者,處理機不予理睬,反之,處理機立即響應后者,進入所謂的“嵌套中斷”。中斷優先權的排序按其性質、重要性以及處理的方便性決定,由硬件的優先權仲裁邏輯或軟件的順序詢問程序來實現。 中斷過程: (1)中斷源發出中斷請求; (2)判斷當前處理機是否允許中斷和該中斷源是否被屏蔽; (3)優先權排隊; (4)處理機執行完當前指令或當前指令無法執行完,則立即停止當前程序保護斷點地址和處理機當前狀態,轉入相應的中斷服務程序。 (5)執行中斷服務程序; (6)恢復被保護的狀態,執行“中斷返回”指令回到被中斷的程序或轉入其他程序。 2、外部中斷/事件控制器(EXTI) EXTI主要特性: (1)每個中斷/事件線上都具有獨立的觸發和屏蔽。 (2)每個中斷線都具有專用的狀態位。 (3)支持多達23個軟件事件/中斷請求。
190602dqqlrddvbdxw2lpw.png (54.32 KB, 下載次數: 26)
下載附件
2018-2-3 00:38 上傳
圖3_0外部中斷/事件控制器框圖 外部中斷/事件線映射: 多達140個的GPIO通過以下方式連接到16個外部中斷/事件線:
190722vixljcjclinnl5tp.png (56.06 KB, 下載次數: 39)
下載附件
2018-2-3 00:38 上傳
圖3_1外部中斷/事件線映射圖 另外七根EXTI線連接方式如下: - EXTI線16連接到PVD輸出。
- EXTI線17連接到RTC鬧鐘事件。
- EXTI線18連接到USB OTG FS 喚醒事件。
- EXTI線19連接到以太網喚醒事件。
- EXTI線20連接到USB OTG HS (在FS中配置)喚醒事件。
- EXTI線21連接到RTC入侵和時間戳事件。
- EXTI線22連接到RTC喚醒事件。
3、STM32中斷優先級的判斷 STM32 目前支持的中斷共為 84 個(16 個內核+68 個外部), 16 級可編程中斷優先級的設置(僅使用中斷優先級設置 8bit 中的高 4 位)和16個搶占優先級(因為搶占優先級最多可以有四位數)。 STM32(Cortex-M3)中有兩個優先級的概念——搶占式優先級和響應優先級,有人把響應優先級稱作'亞優先級'或'副優先級',每個中斷源都需要被指定這兩種優先級。 具有高搶占式優先級的中斷可以在具有低搶占式優先級的中斷處理過程中被響應,即中斷嵌套,或者說高搶占式優先級的中斷可以嵌套低搶占式優先級的中斷。 當兩個中斷源的搶占式優先級相同時,這兩個中斷將沒有嵌套關系,當一個中斷到來后,如果正在處理另一個中斷,這個后到來的中斷就要等到前一個中斷處理完之后才能被處理。如果這兩個中斷同時到達,則中斷控制器根據他們的響應優先級高低來決定先處理哪一個;如果他們的搶占式優先級和響應優先級都相等,則根據他們在中斷表中的排位順序決定先處理哪一個。 優先級分組: 中斷優先級分組域中,可以有8種分配方式,如下: 所有8位用于指定響應優先級。 最高1位用于指定搶占式優先級。 最低7位用于指定響應優先級。 最高2位用于指定搶占式優先級。 最低6位用于指定響應優先級。 最高3位用于指定搶占式優先級。 最低5位用于指定響應優先級。 最高4位用于指定搶占式優先級。 最低4位用于指定響應優先級。 最高5位用于指定搶占式優先級。 最低3位用于指定響應優先級。 最高6位用于指定搶占式優先級。 最低2位用于指定響應優先級。 最高7位用于指定搶占式優先級。 最低1位用于指定響應優先級。 二、硬件電路
190943vssx673d1npdcscs.png (8.12 KB, 下載次數: 30)
下載附件
2018-2-3 00:38 上傳
圖3_2引腳分布圖
191002w4fhc7nx4cueaex2.png (13.9 KB, 下載次數: 27)
下載附件
2018-2-3 00:38 上傳
圖3_3電路原理圖 在iCore3雙核心開發板中,采用一個獨立的按鍵與STM32F407的GPIO相連,另一端接地,且PH15外接一個1k電阻大小的上拉電阻。 三、實驗原理 按鍵的一端與SMT32的GPIO(PH15)相連,另一端接地,且PH15外接一個1K電流大小的上拉電阻。初始化時把PH15設置成輸入模式。當按鍵彈起時候,PH15由于上拉電阻的作用呈高電平(3.3V);當按鍵按下時候,PH15直接被按鍵短接到GND,呈低電平。因此PH15的電平變化產生下降沿,從而進入中斷函數,可得到按鍵狀態。原理圖如下:
191055werhcrtzc7amy6ae.png (21.12 KB, 下載次數: 22)
下載附件
2018-2-3 00:38 上傳
圖3_4實驗原理圖 四、源代碼 1、主函數
|