EXTI 外部中斷

目錄

STM32中斷

NVIC 中斷控制器

NVIC優先級分組

EXTI 外部中斷

AFIO 復用IO口

外部中斷/事件控制器(EXTI)框圖


STM32中斷

????????在STM32微控制器中,共有68個可屏蔽中斷通道,涵蓋了多個外設,如外部中斷(EXTI)、定時器(TIM)、模擬數字轉換器(ADC)、串行外設接口(USART)、串行外設接口(SPI)、I2C總線、實時時鐘(RTC)等。
????????這些中斷通道的管理由嵌套向量中斷控制器(NVIC)負責。NVIC提供了統一的中斷管理機制,允許對每個中斷通道設置16個可編程優先級。這些優先級可以通過分組進行配置,用戶可以設定中斷的搶占優先級和響應優先級,從而實現對中斷的精細化控制。這種機制有助于在復雜系統中合理地調度中斷,確保實時性和系統響應性。

NVIC 中斷控制器

????????NVIC(Nested Vectored Interrupt Controller)嵌套向量中斷控制器,是 Cortex-M 內核中的一部分,用于管理中斷的觸發、優先級排序和 CPU 響應。
簡而言之:
????????NVIC 是 STM32 中用來 統一管理各個中斷事件 的模塊,決定了“誰能打斷 CPU”、“什么時候打斷”、“打斷完誰先執行”。

NVIC 的核心功能

功能說明
中斷使能/屏蔽可以啟用或關閉某個中斷源
中斷優先級管理每個中斷可以分配優先級(0~15)
中斷響應控制控制 CPU 響應中斷的方式
中斷掛起清除手動觸發/清除掛起中斷

中斷源外設
包括:
EXTI:外部中斷(如按鍵觸發)
TIM:定時器(溢出中斷、PWM更新中斷)
ADC:模數轉換完成中斷
USART:串口接收/發送完成中斷
這些外設都可以產生中斷信號。

黑色 “n” 路線:中斷請求線
每個外設可能有多個中斷類型(如 TIM1 有更新中斷、比較中斷等),這些中斷通過中斷請求線發給 NVIC。

NVIC 模塊
NVIC 收到多個中斷請求后:
根據中斷源設置的優先級
決定哪個中斷先被 CPU 響應處理
若一個中斷發生時有更高級的中斷,也可以實現嵌套中斷
NVIC 的優先級從 0(最高)~15(最低)。圖中綠色框優先級0~優先級15 表示優先級調度隊列。

橙色區域:STM32 內核(CPU核心 + NVIC)
NVIC 是屬于 Cortex-M 內核的一部分,圖中 NVIC 模塊包裹在內核塊中,最終中斷是由 CPU 執行對應的中斷服務函數(ISR)

NVIC優先級分組

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

分組方式搶占優先級(高位)響應優先級(低位)
分組00 位,取值為 04 位,取值為 0~15
分組11 位,取值為 0~13 位,取值為 0~7
分組22 位,取值為 0~32 位,取值為 0~3
分組33 位,取值為 0~71 位,取值為 0~1
分組44 位,取值為 0~150 位,取值為 0

EXTI 外部中斷

????????EXTI(External Interrupt)外部中斷 是STM32微控制器中用于監測外部信號并觸發中斷的一種機制。EXTI模塊能夠監測指定GPIO引腳的電平信號變化,并在GPIO引腳發生電平變化時立即向NVIC發出中斷請求。當NVIC接收到該請求后,會根據中斷優先級的設置決定是否中斷當前的CPU主程序,并執行與該中斷關聯的中斷服務程序。
EXTI的主要特點:
支持的觸發方式:
上升沿觸發: 當GPIO引腳的電平從低電平變為高電平時觸發中斷。
下降沿觸發: 當GPIO引腳的電平從高電平變為低電平時觸發中斷。
雙邊沿觸發: 當GPIO引腳的電平發生變化,無論是從低到高,還是從高到低時都會觸發中斷。
軟件觸發: 可以通過軟件命令觸發中斷,不依賴GPIO引腳的電平變化。
支持的GPIO口:
????????EXTI可以監測幾乎所有的GPIO口,包括STM32的所有引腳。但是同一個GPIO引腳不能同時觸發多個中斷通道。一個引腳只能與一個中斷通道綁定。
中斷通道:
????????EXTI模塊支持最多16個GPIO引腳觸發的外部中斷,另外還包括一些特殊的觸發源,如PVD(電壓檢測輸出)、RTC鬧鐘、USB喚醒和以太網喚醒等。
觸發響應方式:
????????EXTI不僅支持傳統的中斷響應,還支持事件響應。在事件響應模式下,系統可以響應外部信號的變化,但并不一定中斷當前的CPU任務。根據配置,可以選擇不同的響應方式來滿足不同的應用需求。

? ? ? ? 總之,EXTI外部中斷功能能夠監測GPIO引腳的電平變化,并通過不同的觸發方式(上升沿、下降沿、雙邊沿或軟件觸發)來生成中斷請求,經過NVIC的裁決后,CPU可被打斷并執行相關的中斷服務程序。EXTI模塊支持多種GPIO口,并能夠處理多種外部信號觸發,靈活地支持不同的響應模式。

從 GPIO 到中斷觸發的完整路徑:
GPIOx → AFIO(引腳選擇)→ EXTI(邊沿檢測)→ NVIC(優先級管理)→ CPU 執行中斷服務函數

GPIO 外設輸入端口(GPIOA、GPIOB、GPIOC…)
每個 GPIO 端口有 16 個引腳(0~15)
這些引腳可以作為普通輸入,也可以配置為中斷觸發輸入
但多個端口(如 PA0、PB0、PC0)不能同時映射到同一個 EXTI0 線,需要選擇誰占用

AFIO 模塊(Alternate Function IO)
AFIO:中斷引腳選擇器
它的作用是告訴 EXTI 哪個 GPIO 引腳連接到哪一條 EXTI 線。
關鍵點:
STM32F1 的 EXTI 有 16 條(EXTI0 ~ EXTI15)
每條 EXTI 線最多只能掛接一個引腳
AFIO_EXTICRx 寄存器用來設置:
例如 EXTI0 ← PA0 或 PB0 或 PC0,由軟件配置

EXTI 模塊(邊沿檢測與中斷控制器)
EXTI = External Interrupt/Event Controller
它負責:
監控外部信號的上升沿 / 下降沿
將觸發事件發出中斷請求
將中斷信號傳遞給 NVIC
還可以控制:
是否屏蔽中斷(IMR)
是否只作為事件觸發(EMR)

AFIO 復用IO口

????????在 STM32 微控制器中,AFIO(Alternate Function I/O)模塊是一個非常關鍵的外設控制單元,主要負責 引腳的復用功能選擇與重定義。由于 STM32 的某些外設功能(如 USART、TIM、SPI 等)可以復用到多個不同的引腳上,因此需要通過 AFIO 模塊來進行合理的映射和配置。
AFIO 主要完成以下兩個核心任務:
????????復用功能引腳的重映射:當默認的外設引腳與實際設計沖突時,可以通過 AFIO 對這些引腳的映射關系進行重新定義,將某個功能分配到另一個引腳上。例如,可以將 USART1 的 Tx/Rx 引腳從默認的 PA9/PA10 重映射到其他可選引腳。
????????外部中斷引腳的選擇(EXTI 配置):STM32 的 EXTI(外部中斷控制器)支持將 GPIOA、GPIOB、GPIOC 等多個端口的同一編號引腳(如 PA0、PB0、PC0)接到同一條 EXTI 線(如 EXTI0)。而 AFIO 則負責選擇當前哪一個具體的引腳與某條 EXTI 中斷線相連。

外部中斷/事件控制器(EXTI)框圖

這張圖主要完成了兩件事:
1. 檢測外部輸入信號是否發生邊沿變化(上升/下降)
2. 如果檢測到了,決定是否向 NVIC 發起中斷或事件觸發
整體流程:從輸入引腳 → EXTI → 中斷或事件
【1】邊沿檢測電路
來自 GPIO(或其他模塊)的電平輸入信號進入。
通過上升沿觸發寄存器和下降沿觸發寄存器設置:
是否對上升沿、下降沿敏感。
一旦檢測到配置的邊沿變化,輸出一個觸發信號。

【2】生成中斷或事件請求
邊沿檢測信號經過兩個分支:
A)進入中斷控制通路(上面那條線)
請求掛起寄存器(PR):記錄這次中A)進入中斷控制通路(上面那條線)斷事件發生了
中斷屏蔽寄存器(IMR):決定這個中斷能否被 NVIC 接收
如果沒有被屏蔽 → 送到 NVIC,啟動中斷服務函數
B)進入事件控制通路(下面那條線)
事件屏蔽寄存器(EMR):決定是否產生“事件信號”
如果允許事件 → 送入 脈沖發生器(用于觸發 DMA 或其他模塊)

【3】軟件觸發支持
軟件可直接寫入 軟件中斷事件寄存器(SWIER),人為觸發中斷或事件,模擬一次外部信號觸發。

【4】附加控制
所有寄存器都有 20 位(支持 EXTI0~EXTI19,F1 通常用前16個)
最終與門(AND)和或門(OR)控制是否允許請求生效

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

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

相關文章

WebApplicationType.REACTIVE 的webSocket

通用請求體類 Data ApiModel("websocket請求消息") public class WebSocketRequest<T> implements Serializable {private static final long serialVersionUID 1L;/*** 參考&#xff1a;com.mcmcnet.gacne.basic.service.common.pojo.enumeration.screen.AiB…

降本增效!自動化UI測試平臺TestComplete并行測試亮點

在跨平臺自動化測試中&#xff0c;企業常面臨設備投入高、串行測試耗時長、測試覆蓋率難以兼顧的困境。自動化UI測試平臺TestComplete的并行測試引擎提供了有效的解決方案&#xff1a;通過云端海量設備池與CI/CD深度集成&#xff0c;實現多平臺、多瀏覽器并行測試&#xff0c;顯…

云、實時、時序數據庫混合應用:醫療數據管理的革新與展望(上)

云、實時、時序數據庫混合應用:醫療數據管理的革新與展望 1、引言 1.1 研究背景與意義 在信息技術飛速發展的當下,醫療行業正經歷著深刻的數字化轉型。這一轉型不僅是技術層面的革新,更是關乎醫療體系未來發展方向的深刻變革。從醫療服務的提供方式,到醫療管理的模式,再…

代碼隨想錄算法訓練營十六天|二叉樹part06

LeetCode 530 二叉搜索樹的最小絕對差 題目鏈接&#xff1a;530. 二叉搜索樹的最小絕對差 - 力扣&#xff08;LeetCode&#xff09; 給你一個二叉搜索樹的根節點 root &#xff0c;返回 樹中任意兩不同節點值之間的最小差值 。 差值是一個正數&#xff0c;其數值等于兩值之差…

自增主鍵為什么不是連續的?

前言 如果一個線程回滾&#xff0c;例如唯一鍵沖突的情況回滾時&#xff0c;回滾了sql語句&#xff0c;但是并沒有把自增的值也-1。那么就會導致下一條插入的數據自增id出現了跳躍。 自增主鍵為什么不是連續的&#xff1f;前言執行時機為什么自增主鍵不是連續的為什么不回滾自…

OpenCV圖像基本操作:讀取、顯示與保存

在圖像處理項目中&#xff0c;圖像的 讀取&#xff08;imread&#xff09;、顯示&#xff08;imshow&#xff09; 和 保存&#xff08;imwrite&#xff09; 是最基礎也是最常用的三個操作。本文將詳細介紹這三個函數的功能、用法和注意事項&#xff0c;并提供一個完整示例供讀者…

.NET控制臺應用程序中防止程序立即退出

在VB.NET控制臺應用程序中防止程序立即退出&#xff0c;主要有以下幾種常用方法&#xff0c;根據需求選擇適合的方案&#xff1a; 方法1&#xff1a;等待用戶輸入&#xff08;推薦&#xff09; Module Module1Sub Main()Console.WriteLine("程序開始運行...") 這里是…

Vue3 + Three.js 極速入門:打造你的第一個3D可視化項目

文章目錄前言一、環境準備1.1 創建Vue3項目1.2 安裝Three.js二、Three.js核心概念速覽三、實戰&#xff1a;創建旋轉立方體3.1 組件化初始化四、核心代碼解析4.1 Vue3響應式整合技巧4.2 性能優化要點五、進階功能擴展5.1 數據驅動控制5.2 加載3D模型六、常見問題解決七、資源推…

【設計模式】享元模式(輕量級模式) 單純享元模式和復合享元模式

享元模式&#xff08;Flyweight Pattern&#xff09;詳解一、享元模式簡介 享元模式&#xff08;Flyweight Pattern&#xff09; 是一種 結構型設計模式&#xff08;對象結構型模式&#xff09;&#xff0c;它通過共享技術實現相同或相似對象的重用&#xff0c;以減少內存占用和…

驅動開發_2.字符設備驅動

目錄1. 什么是字符設備2. 設備號2.1 設備號概念2.2 通過設備號dev分別獲取主、次設備號的宏函數2.3 主設備號的申請靜態申請動態分配2.4 注銷設備號3. 字符設備3.1 注冊字符設備3.2 注銷字符設備3.3 應用程序和驅動程序的關系3.4 file_opertaions結構體3.5 class_create3.6 創建…

直播推流技術底層邏輯詳解與私有化實現方案-以rmtp rtc hls為例-優雅草卓伊凡

直播推流技術底層邏輯詳解與私有化實現方案-以rmtp rtc hls為例-優雅草卓伊凡由于我們的甲方客戶要開始為我們項目產品上加入私有化的直播&#xff0c;這塊不得不又撿起來曾經我們做直播推流的事情了&#xff0c;其實私有化直播一直并不是一件容易的事情&#xff0c;現在大部分…

一文讀懂現代卷積神經網絡—深度卷積神經網絡(AlexNet)

目錄 深度卷積神經網絡&#xff08;AlexNet&#xff09;是什么&#xff1f; 一、AlexNet 的核心創新 1. 深度架構 2. ReLU 激活函數 3. 數據增強 4. Dropout 正則化 5. GPU 并行計算 6. 局部響應歸一化&#xff08;LRN&#xff09; 二、AlexNet 的網絡結構 三、AlexN…

JVM 垃圾收集算法全面解析

1. 引言1.1 為什么需要垃圾收集&#xff1f;在Java應用中&#xff0c;垃圾收集&#xff08;Garbage Collection&#xff0c;GC&#xff09;是一個至關重要的機制&#xff0c;它使得開發者不需要手動管理內存。與傳統的語言&#xff08;如C或C&#xff09;不同&#xff0c;Java通…

Vmware中安裝的CentOS7如何擴展硬盤大小

起初創建虛擬機時&#xff0c;大小設置不合理&#xff0c;導致我在嘗試開源項目時空間不足重新擴展硬盤&#xff0c;不僅需要在虛擬機設置中配置&#xff0c;還需要在系統內重新進行分區一、虛擬機設置打開虛擬機設置→硬盤→擴展&#xff0c;將大小設置為自己期望的大小&#…

Python+MongoDB高效開發組合

如大家所知&#xff0c;Python與MongoDB的結合是一種高效的開發組合&#xff0c;主要用于通過Python進行數據存儲、查詢及管理&#xff0c;利用MongoDB的文檔型數據庫特性實現靈活的數據處理。下面讓 Python 連接上 MongoDB&#xff1a;安裝 PyMongo&#xff1a;pip3 install p…

【論文閱讀】Masked Autoencoders Are Effective Tokenizers for Diffusion Models

introduce什么樣的 latent 空間更適合用于擴散模型&#xff1f;作者發現&#xff1a;相比傳統的 VAE&#xff0c;結構良好、判別性強的 latent 空間才是 diffusion 成功的關鍵。研究動機&#xff1a;什么才是“好的 latent 表征”&#xff1f;背景&#xff1a;Diffusion Models…

每日一SQL 【游戲玩法分析 IV】

文章目錄問題案例執行順序使用分組解決問題 案例 執行順序 SQL 語句的執行順序&#xff08;核心步驟&#xff09; 同一層級的select查詢內部, 別名在整個 SELECT 計算完成前不生效 使用分組解決 select distinct s.product_id, Product.product_name from Sales sleft join …

內部文件審計:企業文件服務器審計對網絡安全提升有哪些幫助?

企業文件服務器審計工作不僅對提升企業網絡信息安全起到重要作用&#xff0c;還能對企業內部網絡文件信息是否合規進行判斷。因此企業文件服務器審計一直被高度重視。 一、文件服務器為何成為攻擊焦點&#xff1f; 企業文件服務器通常集中存儲財務報表、人事檔案、研發資料、客…

FusionOne HCI 23 超融合實施手冊(超聚變超融合)

產品介紹 FusionOne HCI作為實現企業信息一體化的IT基礎設施平臺&#xff0c;以“軟硬件垂直深度集成和調優”、“快速部署”、“統一管理”的理念&#xff0c;提供應用融合部署&#xff0c;提升核心業務運作效率&#xff0c;降低整體采購成本。 FusionOne HCI代表了IT產品的…

AI算姻緣測算小工具流量主微信小程序開源

功能特點 響應式設計&#xff1a;完美適配各種移動設備屏幕尺寸 精美UI界面&#xff1a; 柔和的粉紅色漸變背景 圓角卡片設計 精心設計的字體和間距 愛心圖標點綴 動態效果&#xff1a; 點擊按鈕時的動畫反饋 測算結果的平滑過渡動畫 愛心漂浮動畫 進度條動態填充 AI測算功能&a…