STM32 中斷系統

單片機學習

目錄

文章目錄

前言

一、中斷系統

1.1 什么是中斷

1.2 中斷優先級

1.3 中斷嵌套

1.4 C語言中的中斷程序

二、STM32的中斷通道和中斷向量

2.1 中斷通道

2.2 嵌套向量中斷控制器NVIC

2.2.1 什么是NVIC

2.2.2 NVIC基本結構

2.2.3搶占優先級和響應優先級

2.2.4 NVIC的優先級分組

三、STM32 外部中斷EXTI

3.1EXIT簡介

3.2EXIT基本結構

3.3AFIO復用IO口

3.4EXIT框圖

總結


前言

????????本文主要講述STM32的中斷系統和外部中斷,中斷系統是管理和執行中斷的邏輯結構;外部中斷是眾多能產生中斷的外設之一。


一、中斷系統

  • 中斷:在主程序運行過程中,出現了特定的中斷觸發條件(中斷源),使得CPU暫停當前正在運行的程序,轉而去處理中斷程序,處理完成后又返回原來被暫停的位置繼續運行。
  • 中斷優先級:當有多個中斷源同時申請中斷時,CPU會根據中斷源的輕重緩急進行裁決,優先響應更加緊急的中斷源。
  • 中斷嵌套:當一個中斷程序正在運行時,又有新的更高優先級的中斷源申請中斷,CPU再次暫停當前中斷程序,轉而去處理新的中斷程序,處理完成后依次進行返回。

1.1 什么是中斷

? ? ? ? 當CPU正在執行某個程序時,由計算機內部或外部原因引起的緊急事件向CPU發出請求處理的信號,CPU在允許的情況下響應請求信號,暫時停止正在執行的程序,保護好斷點處的現場,轉向執行一個用于處理該緊急事件的程序,處理完成后又返回被終止的程序斷點處,繼續執行原程序,這一過程就是上圖中中斷響應和處理的過程。

1.2 中斷優先級

? ? ? ? 1.中斷優先級就是中斷的緊急程度。

? ? ? ? 2.中斷優先級是我們根據程序設計的需求,自己設置的。

? ? ? ? 3.中斷優先級是為了在多個中斷同時申請時,判斷一下,應該先處理哪個。如果事件非常緊急,就把優先級設置高一些;如果事件不緊急,就把優先級設置低一些。這樣可以更好的安排這些中斷事件,防止緊急的事件被別的中斷耽誤。

1.3 中斷嵌套

? ? ? ? 中斷嵌套就是把中斷程序再次中斷的現象,中斷嵌套也是為了處理非常緊急的中斷。

? ? ? ? 如果在CPU已經在執行某個中斷程序時,又發生了一個非常緊急的中斷,那這個非常緊急的中斷就可以把當前的中斷程序進行二次中斷。這樣新的緊急中斷就可以立即被執行了。等緊急的中斷結束,再繼續執行原來的中斷。原來的中斷結束再繼續主程序

? ? ? ? 能否進行中斷嵌套,是由中斷優先級來決定的。

1.4 C語言中的中斷程序

? ? ? ? 帶有中斷程序的代碼示例:

int main(void)//主函數
{while(1){//主程序//……//主程序}
}void EXTI0_IRQHandler(void)
{//中斷程序//……//中斷程序
}

? ? ? ? 在主函數中,while(1) 死循環里就是主程序。正常情況下,程序就是在主程序里不斷循環執行。當中斷條件滿足時,主程序就會暫停,自動跳轉到中斷程序里運行。中斷程序執行完之后,再返回主程序繼續執行。

? ? ? ? 一般中斷程序都是在一個子函數里的,這個子函數不需要我們調用。當中斷來臨時,由硬件自動調用這個函數。

二、STM32的中斷通道和中斷向量

2.1 中斷通道

? ? ? ? 中斷通道就是中斷源的意思。

????????可屏蔽中斷通道包含EXTI外部中斷、TIM定時器、ADC模數轉換器、USART串口、SPI通信、I2C通信、RTC實時時鐘等多個外設。

2.2 嵌套向量中斷控制器NVIC

2.2.1 什么是NVIC

? ? ? ? NVIC就是STM32中用來管理中斷、分配優先級的。

????????使用NVIC統一管理中斷,每個中斷通道都擁有16個可編程的優先等級,可對優先級進行分組,進一步設置搶占優先級和響應優先級。

STM32F10xxx產品(小容量、中容量和大容量)的向量表

STM32內核中斷:

STM32外設中斷:

? ? ? ? 表中EXTI0、EXTI1、EXTI2、EXTI3、EXTI4、EXTI9_5、EXTI15_10是外部中斷對應的中斷資源。

? ? ? ? 表的最右邊一列是中斷對應的地址,這是因為程序中斷函數的地址是由編譯器來分配的,是不固定的。但是我們的中斷跳轉,由于硬件的限制,只能跳轉到固定的地址執行程序。所以為了能讓硬件跳轉到一個不固定的中斷函數里,這里就需要在內存中定義一個地址的列表。列表地址是固定的,中斷發生后,就跳到這個固定的位置。然后在這個固定位置,由編譯器再加上一條跳轉到中斷函數的代碼,這樣中斷跳轉就可以跳轉到任意位置了。這個中斷地址的列表就叫中斷向量表,相當于中斷跳轉的一個跳板。

2.2.2 NVIC基本結構

????????NVIC的名字叫做嵌套中斷向量控制器。在STM32中,它是用來統一分配中斷優先級和管理中斷的。NVIC是一個內核外設,是CPU的小助手,NVIC有很多輸入口,有多少中斷線路都可以接過來,比如圖中可以接到EXTI、TIM、ADC、USART等。

????????圖中線上畫了個斜杠,上面寫了n,意思是一個外設可能會同時占用多個中斷通道,所以這里有n條線。NVIC只有一個輸出口,NVIC根據每個中斷的優先級分配中斷的先后順序,之后通過右邊這一個輸出口告訴CPU,該處理哪個中斷。對于中斷先后分配的任務,CPU不需要知道。

2.2.3搶占優先級和響應優先級

1.搶占優先級:pre-emption priority (先占優先級)

? ? ? ? 搶占是指打斷其他中斷的屬性,即低搶占優先級的中斷A可以被高搶占優先級的中斷B打斷,執行完中斷服務函數B后,再返回繼續執行中斷服務函數A,由此會出現中斷嵌套。

2.響應優先級:subpriority(從占優先級)

? ? ? ? 響應屬性應用在搶占屬性相同的情況下,也就是當兩個中斷源的搶占優先級相同時,分以下幾種情況處理:

  1. 如果兩個中斷同時到達,則中斷控制器會優先處理響應優先級高的中斷。
  2. 當一個中斷到來后,如果正在處理另一個中斷,則這個后到的中斷就要等到前一個中斷處理完之后才能被處理(高優先級的中斷不可以打斷低響應優先級的中斷)。
  3. 如果他們的搶占優先級和響應優先級都相等,則根據它們在中斷表中的排位順序決定先處理哪一個。

2.2.4 NVIC的優先級分組

? ? ? ? 為了處理不同形式的優先級,STM32的NVIC可以對優先級進行分組,分為搶占優先級和響應優先級。

????????NVIC的中斷優先級由優先級寄存器的4位(0~15)決定,這4位可以進行切分,分為高n位的搶占優先級和低4-n位的響應優先級

????????搶占優先級高的可以中斷嵌套,響應優先級高的可以優先排隊,搶占優先級和響應優先級均相同的按中斷號排隊,中斷號就是上文向量表中優先級那一列。數值小的優先響應。

? ? ? ? STM32的中斷不存在先來后到的排隊方式,在任何時候,都是優先級高的先響應。

? ? ? ? 這個分組方式可選擇,通過調用STM32固件庫的函數NVIC_PriorityGroupConfig(); 來選擇優先分組方式。選好分組方式之后,在配置優先級的時候要注意搶占優先級和響應優先級的取值范圍。不要超出表里規定的取值范圍。

三、STM32 外部中斷EXTI

3.1EXIT簡介

  • EXTI(Extern Interrupt)外部中斷
  • EXTI可以監測指定GPIO口的電平信號,當其指定的GPIO口產生電平變化時,EXTI將立即向NVIC發出中斷申請,經過NVIC裁決后即可中斷CPU主程序,使CPU執行EXTI對應的中斷程序
  • 支持的觸發方式:上升沿/下降沿/雙邊沿/軟件觸發
  • 支持的GPIO口:所有GPIO口,但相同的Pin不能同時觸發中斷(如PA0、PB0、PC0這樣的端口GPIO_Pin一樣的不能同時用,只能選1個作為中斷引腳。若有多個中斷引腳,要選擇不同Pin的引腳,如PA6、PA7、PB9、PC0這樣的。)
  • 通道數:16個GPIO_Pin(對應GPIO_Pin_0到GPIO_Pin_15),外加PVD輸出、RTC鬧鐘、USB喚醒、以太網喚醒
  • 觸發響應方式:中斷響應/事件響應
  1. 中斷響應就是申請中斷,讓CPU執行中斷函數。
  2. 事件響應是STM32對外部中斷增加的一種額外的功能,當外部中斷檢測到引腳電平變化時,正常的流程時選擇觸發中斷,但在STM32中也可以選擇觸發一個事件。如果選擇觸發事件,那外部中斷的信號就不會通向CPU了,而是通向其他外設,用來觸發其他外設的操作,如觸發ADC轉換、觸發DMA等。
  3. 觸發響應方式總結:中斷響應是正常流程,引腳電平變化觸發中斷。事件響應不會觸發中斷,而是觸發別的外設操作,屬于外設之間的聯合工作。

3.2EXIT基本結構

? ? ? ? 上圖為外部中斷的整體結構圖。最左邊是GPIO口的外設,比如GPIOA、GPIOB、GPIOC等等。每個GPIO外設有16個引腳,所以每個GPIO外設都進來16根線。

????????上文說到EXTI模塊只有16個GPIO的通道,但每個GPIO外設都有16個引腳,如果每個引腳占用一個通道,那EXIT的16個通道顯然就不夠用了。所以在GPIO外設和EXIT中間會有一個AFIO中斷引腳選擇的電路模塊。

? ? ? ? AFIO就是一個數據選擇器,它根據GPIO外設端口的引腳序號不同,把不同GPIO端口的同一個序號的引腳組成一組(如PA0、PB0、PC0、PD0、PE0、PF0、PG0為一組),每組對應一個通道連接到EXIT。所以上文說,相同的Pin不能同時觸發中斷,因為對于PA0、PB0、PC0這些相同的Pin,通過AFIO選擇后,只有其中一個能接到EXIT的通道EXIT0上。這也就是所有的GPIO口都能觸發中斷,但相同的Pin不能同時觸發中斷的原因。

? ? ? ? 通過AFIO選擇之后的16個通道,就接到了EXIT邊沿檢測及控制電路上。同時下方的PVD輸出、RTC鬧鐘、USB喚醒、ETH以太網喚醒的外設也是并列接進來的。這些加起來就組成了EXIT的20個輸入信號。

? ? ? ? 經過EXIT電路之后,分為了兩種輸出,其中上方的EXTI0、EXTI1、EXTI2、EXTI3、EXTI4、EXTI9_5、EXTI15_10、PVD、RTC、USB、ETH這些接到了NVIC,是用來觸發中斷的。下方有20條輸出線路連接到了其他外設,用來觸發其他外設操作的,就是事件響應。

????????這里注意,本來20路輸入,應該有20路中斷輸出,但是為了節約NVIC的通道資源,把其中外部中斷的9~5分配到一個通道EXTI9_5,中斷的15~10也分配到一個通道EXTI15_10。也就是外部中斷的9~5會觸發同一個中斷函數,外部中斷的15~10也會觸發同一個中斷函數。在編程的時候,對這兩個中斷函數需要再根據標志位來區分是哪個中斷進來的。

3.3AFIO復用IO口

  • AFIO主要用于引腳復用功能的選擇和重定義,也就是數據選擇器的作用。
  • 在STM32中,AFIO主要完成兩個任務:復用功能引腳重映射、中斷引腳選擇

? ? ? ? 上圖為AFIO選擇中斷引腳的結構圖。

3.4EXIT框圖


總結

????????以上就是今天要講的內容,本文僅僅簡單介紹了STM32的中斷基礎知識。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/167731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167731.shtml
英文地址,請注明出處:http://en.pswp.cn/news/167731.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

間隔分區表(DM8:達夢數據庫)

DM8:達夢數據庫 - 間隔分區表 環境介紹1 按 年 - 間隔分區表2 按 月 - 間隔分區3 按 日 - 間隔分區4 按 數值 - 間隔分區表5 達夢數據庫學習使用列表 環境介紹 間隔分區表使用說明: 僅支持一級范圍分區創建間隔分區。 只能有一個分區列,且分區列類型為…

究竟什么是阻塞與非阻塞、同步與異步

文章目錄 前言阻塞與非阻塞同步與異步復雜的網絡IO真正的異步IOIO分類與示例總結 前言 這幾個名詞在程序開發時經常聽到,但是突然問起來各個詞的含義一時間還真是說不清楚,貌似這幾個詞都是翻譯過來的,每個人的解釋都不太一樣,我…

深度學習卷積神經網絡參數計算難點重點

目錄 一、卷積層圖像輸出尺寸 二、池化層圖像輸出尺寸 三、全連接層輸出尺寸 四、卷積層參數數量 五、全連接層參數數量 六、代碼實現與驗證 以LeNet5經典模型為例子并且通道數為1 LeNet5網絡有7層: ? 1.第1層:卷積層 ? 輸入:原始的圖片像素…

c語言數字轉圈

數字轉圈 題干輸入整數 N(1≤N≤9),輸出如下 N 階方陣。 若輸入5顯示如下方陣: * 1** 2** 3** 4** 5* *16**17**18**19** 6* *15**24**25**20** 7* *14**23**22**21** 8* *13**12**11**10** 9*輸入樣例3輸出樣例* 1*…

PTA 海盜分贓

P 個海盜偷了 D 顆鉆石后來到公海分贓,一致同意如下分贓策略: 首先,P 個海盜通過抽簽決定 1 - P 的序號。然后由第 1 號海盜提出一個分配方案(方案應給出每個海盜分得的具體數量),如果能夠得到包括 1 號在…

linux高級篇基礎理論六(firewalld,防火墻類型,,區域,服務端口,富語言)

??作者:小劉在C站 ??個人主頁: 小劉主頁 ??不能因為人生的道路坎坷,就使自己的身軀變得彎曲;不能因為生活的歷程漫長,就使求索的 腳步遲緩。 ??學習兩年總結出的運維經驗,以及思科模擬器全套網絡實驗教程。專欄:云計算技…

基于戰爭策略算法優化概率神經網絡PNN的分類預測 - 附代碼

基于戰爭策略算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于戰爭策略算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于戰爭策略優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要:針對PNN神…

測試工具JMeter的使用

目錄 JMeter的安裝配置 測試的性能指標 TPS 響應時長 并發連接 和 并發用戶 CPU/內存/磁盤/網絡 負載 性能測試實戰流程 JMeter JMeter快速上手 GUI模式 運行 HTTP請求默認值 錄制網站流量 模擬間隔時間 Cookie管理器 消息數據關聯 變量 后置處理器 CSV 數據文…

中國企業500強的排名也在不斷變化。面對不確定性的挑戰,企業如何應對?

隨著全球經濟的不斷發展和變化,中國企業500強的排名也在不斷變化。面對不確定性的挑戰,企業如何應對?在本文中,挖數據平臺將提供數據源探討中國企業500強在應對不確定性方面的突圍與變革。 一、數據挖掘與分析 從2006年到2023年&…

【電子通識】什么是物料清單BOM(Bill of Material))

BOM (Bill of Materials)是我們常說的物料清單。BOM是制造業管理的重點之一,用于記載產品組成所需要的全部物料(Items)。物料需求的計算是從最終產品開始,層層往下推算出部件,組件,零件和原材料的需求量。這…

【C++11】nullptr關鍵字使用詳解

系列文章目錄 C11新特性使用詳解-持續更新 https://blog.csdn.net/xiaofeizai1116/category_12498334.html 文章目錄 系列文章目錄一、簡介二、引入nullptr原因1. 消除歧義2. 兼容性問題3. 類型安全 三、使用場景1. 初始化指針變量2. 判斷指針是否為空3. 釋放內存后置為空 四、…

【nlp】3.5 Transformer論文復現:3.解碼器部分(解碼器層)和4.輸出部分(線性層、softmax層)

Transformer論文復現:3.解碼器部分(解碼器層)和4.輸出部分(線性層、softmax層) 3.1 解碼器介紹3.2 解碼器層3.2.1 解碼器層的作用3.2.2 解碼器層的代碼實現3.2.3 解碼器層總結3.3 解碼器3.3.1 解碼器的作用3.3.2 解碼器的代碼實現3.3.3 解碼器總結4.1 輸出部分介紹4.2 線性…

Python---函數定義時缺省參數(參數默認值)

缺省參數也叫默認參數,用于定義函數,為參數提供默認值,調用函數時可不傳該默認參數的值(注意:所有位置參數必須出現在默認參數前,包括函數定義和調用)。 def user_info(name, age, gender男):pr…

Elaticsearch學習

Elaticsearch 索引 1、索引創建 PUT /index_v1 {"settings": {"number_of_shards": 3,"number_of_replicas": 1},"mappings": {"properties": {"aaa": {"type": "keyword","store&qu…

匯編-CALL和RET指令

CALL指令調用一個過程, 使處理器從新的內存位置開始執行。過程使用RET(從過程返回) 指令將處理器轉回到該過程被調用的程序點上。 CALL指令的動作: 1.將CALL指令的下一條指令地址壓棧(作為子過程返回的地址) 2.將被調過程的地址復制到指令指針寄存器E…

搜維爾科技:Faceware面部捕捉最佳實踐!

視頻源和分辨率: 我們的軟件針對 RGB 彩色素材進行了優化,不支持使用紅外攝像機。 我們建議視頻分辨率為 720p 和 1080p。低于 720p 的分辨率可能會對跟蹤質量產生負面影響,而高于 1080p 的分辨率會導致存儲要求和傳輸時間增加,而…

python——第十三天

uuid 是通用唯一識別碼(Universally Unique identifier)的縮寫 UUID是一個128比特的數值 uuid模塊: 獲取一個128位(比特)的永不重復的數字,當然我們使用的時候會轉換為32個的字符串 impor uuud uui…

【Java 進階篇】Jedis:讓Java與Redis輕松對話的利器

在現代軟件開發中,緩存系統是提高系統性能的常見手段之一,而Redis作為一個高性能的緩存數據庫,被廣泛應用于各類系統。如果你是Java開發者,那么使用Jedis庫可以讓你輕松地與Redis進行交互。本文將帶你深入了解Jedis的快速入門&…

c語言-冒泡排序

冒泡排序原理: 冒泡排序是一種簡單直觀的排序算法,它重復地遍歷待排序的元素序列,比較相鄰的兩個元素,如果它們的順序不符合要求(例如升序要求前面的元素小于后面的元素),則交換它們的位置。遍歷…

國家開放大學平時作業 練習題

試卷代號:1377 理工英語3 參考試題 一、交際用語(共計10分,每小題2分) 1-5題:選擇正確的語句完成下列對話,并將答案序號寫在答題紙上。 1.-1 won the first prize in todays speech contest. - …