基于STM32中斷講解

基于STM32中斷講解

一、NVIC講解

簡介:當一個中斷請求到達時,NVIC會確定其優先級并決定是否應該中斷當前執行的程序,以便及時響應和處理該中斷請求。這種設計有助于提高系統的響應速度和可靠性,特別是在需要處理大量中斷請求的實時應用程序中。
NVIC 支持:256個中斷(16內核+240外部),支持:256個優先級,允許裁剪。
NVIC工作原理
從上圖中可以看出主要運用的寄存器有**中斷使能寄存器(ISER)、中斷失能寄存器(ICER)、應用程序中斷及復位控制寄存器(AIRCR)、中斷優先級寄存器(IPR)**只用對上述寄存器進行配置就行。

中斷優先級幾種類型:
1、搶占優先級
如果一個中斷的搶占優先級高于當前正在執行的中斷,那么它可以打斷當前中斷,優先得到執行。數值越小,優先級越高。
2、響應優先級
如果兩個中斷同時到達,且它們的搶占優先級相同,那么響應優先級高的中斷將首先得到響應。數值越小,優先級越高。
3、自然優先級
自然優先級是由硬件固定并預先設定的,用戶無法更改。當搶占優先級和響應優先級都相同時,自然優先級將決定哪個中斷先得到處理。
優先級執行順序
當多個中斷同時發生時,執行順序首先由搶占優先級決定。如果搶占優先級相同,則進一步由響應優先級決定。如果響應優先級也相同,則最終由自然優先級決定。
在中斷嵌套的情況下,高搶占優先級的中斷可以打斷低搶占優先級的中斷,但高響應優先級的中斷不能打斷低響應優先級的中斷(當它們具有相同的搶占優先級時)。

優先級分組
優先級寄存器 IPR 有 8 位,但實際只使用到高 4 位,用于決定搶占優先級、響應優先級的等級。一般分為兩組。

二、EXTI講解

簡介:EXTI 是 External Interrupt 的縮寫,表示外部中斷事件控制器。EXTI 可以監測指定 GPIO 口的電平信號變化,并在檢測到指定條件時,向內核的中斷控制器 NVIC 發出中斷申請。NVIC 在裁決后,如果滿足條件,會中斷CPU的主程序,使 CPU 轉而執行 EXTI 對應的中斷服務程序。
EXTI 支持的觸發方式:上升沿、下降沿、雙邊沿或軟件觸發。
EXTI 支持所有的 GPIO 口,但需要注意的是,**相同的 Pin 不能同時觸發中斷。**例如,PA0 和 PB0 不能同時被配置為中斷源。
EXTI 提供了 16 個 GPIO_Pin 的中斷線,以及額外的中斷線如 PVD 輸出、RTC 鬧鐘、USB 喚醒和以太網喚醒。

中斷/事件區分

中斷會打斷CPU當前正在執行的程序,轉而去執行中斷服務程序,待中斷服務程序執行完畢后,CPU會返回到原來的程序執行點繼續執行。
事件只是簡單地表示某個動作或狀態的變化,而不會打斷CPU當前正在執行的程序。當事件發生時,它會根據配置來決定是否觸發相應的中斷。如果開放了對應的中斷屏蔽位(輸入0為屏蔽中斷,輸入1為打開中斷),事件就可以觸發相應的中斷,否則事件只會作為一個信號存在,不會被CPU處理。
中斷屏蔽位作用圖 中斷屏蔽位作用圖前三行位中斷觸發,后三行位事件觸發前三行位中斷觸發,后三行位事件觸發

EXTI結構
配置中斷結構圖配置中斷結構圖

三、AFIO講解

簡介:AFIO 是 Alternate Function Input/Output 的縮寫,表示復用功能 IO,主要用于實現 I/O 端口的復用功能以及外部中斷的控制。
為了優化64腳或100腳封裝的外設數量,有時需要將一些復用功能重新映射到其他引腳上。這時,就可以使用AFIO的復用重映射功能。通過設置復用重映射和調試I/O配置寄存器(AFIO_MAPR),可以實現引腳的重新映射,使得復用功能不再映射到它們的原始分配上。
此外,AFIO 還用于控制外部中斷,用來配置 EXTI 中斷線 0~15 對應哪個具體 IO 口。
AFIO簡化圖
AFIO對于外設的選用

四、配置原理

配置圖:
中斷配置圖
配置代碼:以按鍵電燈為例

void exit_init(void)
{
GPIO_InitTypeDef gpio_initstruct;//設結構體//打開GPIO的時鐘__HAL_RCC_GPIOA_CLK_ENABLE();gpio_initstruct.Pin = GPIO_PIN_0;gpio_initstruct.Mode = GPIO_MODE_IT_FALLING;//中斷按鍵為下降沿模式觸發gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;//高速gpio_initstruct.Pull = GPIO_PULLUP;      //上拉HAL_GPIO_Init(GPIOA,&gpio_initstruct);HAL_NVIC_SetPriority(EXTI0_IRQn,2,0);//GPIOA/B..00系列HAL_NVIC_EnableIRQ(EXTI0_IRQn);		//NVIC中斷使能函數
}
void EXTI0_IRQHandler(void)         //配置中斷服務函數
{
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_pin)     //回調函數  回調函數_week類型返回uint16_t傳參,可寫相應的執行功能
{//delay_ms(20);/*if(GPIO_pin == GPIO_PIN_0)//檢測按鍵是否是pin0腳{if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET){led_toggle();}}*/
}   

其中優先級分組一般為兩組,只需配置一次即可,在HAL_Init()里面進行配置。

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

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

相關文章

游戲盾和高防ip有什么區別

游戲盾和高防IP都是針對網絡攻擊的防護方案,但??核心目標、技術側重點和應用場景存在顯著差異??。以下是兩者的詳細對比分析: ??一、核心定位與目標?? ??維度????高防IP????游戲盾????核心目標??抵御大流量網絡攻擊&#xff08…

Spark-SQL3

Spark-SQL 一.Spark-SQL核心編程(四) 1.數據加載與保存: 1)通用方式: SparkSQL 提供了通用的保存數據和數據加載的方式。這里的通用指的是使用相同的API,根據不同的參數讀取和保存不同格式的數據&#…

DeepSeek與Napkin:信息可視化領域的創新利器

摘要 在數字化信息爆炸的時代,如何高效地組織思路并將其轉化為直觀、清晰的可視化圖表,成為眾多領域面臨的關鍵問題。本文深入剖析了DeepSeek與Napkin這兩款工具,詳細探討它們在信息處理與可視化過程中的功能特性、協同工作機制、應用場景、…

conda 創建、激活、退出、刪除環境命令

參考博客:Anaconda創建環境、刪除環境、激活環境、退出環境 使用起來覺得有些不方便可以改進,故寫此文。 1. 創建環境 使用 -y 跳過確認 conda create -n 你的環境名 -y 也可以直接選擇特定版本 python 安裝,以 3.10 為例: co…

嵌入式芯片中的 低功耗模式 內容細講

電源域與運行級別概述 電源域(Power Domain) 核心域(Core Domain):包括 CPU 核心和關鍵架構模塊(如 NVIC、CPU 內核寄存器)。 外設域(Peripheral Domain):…

Java中常見的鎖synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock

在Java中,鎖是實現多線程同步的核心機制。不同的鎖適用于不同的場景,理解其實現原理和使用方法對優化性能和避免并發問題至關重要。 一、隱式鎖:synchronized 關鍵字 實現原理 基于對象監視器(Monitor):每…

@JsonView + 單一 DTO:如何實現多場景 JSON 字段動態渲染

JsonView 單一 DTO:如何實現多場景 JSON 字段動態渲染 JsonView 單一 DTO:如何實現多場景 JSON 字段動態渲染1、JsonView 注解產生的背景2、為了滿足不同場景下返回對應的屬性的做法有哪些?2.1 最快速的實現則是針對不同場景新建不同的 DTO…

Etcd 壓縮整理

etcd數據存儲 在實際生產中使用 ETCD 存儲元數據,起初集群規模不大的時候元數據信息不多沒有發現什么問題。隨著集群規模越來越大,可能引發存儲問題。 —auto-compaction-retention 由于ETCD數據存儲多版本數據,隨著寫入的主鍵增加歷史版本需…

【更新完畢】2025媽媽杯C題 mathercup數學建模挑戰賽C題數學建模思路代碼文章教學:音頻文件的高質量讀寫與去噪優化

完整內容請看文章最下面的推廣群 我將先給出文章、代碼、結果的完整展示, 再給出四個問題詳細的模型 面向音頻質量優化與存儲效率提升的自適應編碼與去噪模型研究 摘 要 隨著數字媒體技術的迅速發展,音頻處理技術在信息時代的應用愈加廣泛,特別是在存儲…

React-請勿在循環或者條件語句中使用hooks

這是React Hooks的首要規則,這是因為React Hooks 是以單向循環鏈表的形式存儲,即是有序的。循環是為了從最后一個節點移到一個節點的時候,只需通過next一步就可以拿到第一個節點,而不需要一層層回溯。React Hooks的執行&#xff0…

【大模型】 LangChain框架 -LangChain實現問答系統

LangChain 介紹與使用方法 1. 什么是 LangChain?2. LangChain 的主要功能3. 如何使用 LangChain?3.1 環境準備3.2 基本使用示例3.2.1 簡單的問答系統3.2.2 結合外部工具 3.3 高級用法 4. 常見問題及解決方法4.1 安裝問題4.2 運行問題4.3 性能問題 5. 實戰…

企業級HAProxy高可用離線部署實戰(附Kubernetes APIServer負載均衡配置)

企業級HAProxy高可用離線部署實戰(附Kubernetes APIServer負載均衡配置) 摘要:本文深入講解在離線環境下部署HAProxy 3.1.1的全流程,涵蓋源碼編譯、系統服務封裝、K8S APIServer四層負載配置等核心環節,并提供生產級高…

Python網絡爬蟲設計(一)

目錄 一、網絡爬蟲 1、基本的爬蟲 2、獲取URL 3、查找網頁源碼關鍵字 4、代碼實現 二、requests庫 1、requests的優勢和劣勢 2、獲取網頁的其他庫 (1)selenium庫 (2)pyppeteer庫 三、pyppeteer庫 1、pyppeteer庫的來歷…

BR_頻譜20dB 帶寬(RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Bandwidth])

目錄 一、規范要求 1、協議章節 2、測試目的 二、測試方法 1、樣機初值條件: 2、測試步驟: 方法一:頻譜儀 方法二:綜測儀CMW500 3、預期結果 一、規范要求 1、協議章節 4.5.5 RF/TRM/CA/BV-05-C [TX Output Spectrum – 20 dB Ba…

【橘子大模型】初探rag知識庫的構建

一、簡介 我們在實現了一系列功能之后,終于來到了rag的部分,下面我們將基于langchain來實現一個rag檢索。 關于rag方面的知識,可以查看這兩篇文章: 大模型應用之RAG詳解 什么是 RAG(檢索增強生成) 或者是去…

CentOS7執行yum命令報錯 Could not retrieve mirrorlist http://mirrorlist.centos.org

CentOS7執行yum命令報錯 引更新yum源備份原有源創建新的源文件清理并重建緩存 引 CentOS 7 系統無法連接到 CentOS 的官方鏡像站點。這通常是由于網絡問題或 CentOS 7 已停止維護導致的(2024年6月30日后 CentOS 7 已進入 EOL) 報錯明細: 已…

VSCode安裝與環境配置(Mac環境)

20250419 - 概述 大概是非常久之前了,裝了VSCode,估計都得21的時候了,電腦上也沒更新過。當時安裝也直接裝上就完事了。這次把版本更新一下,同時記錄一下這個安裝過程。 安裝 mac下安裝非常簡單,直接從官網下載&am…

QML動畫--ParallelAnimation和SequentialAnimation

一、ParallelAnimation ParallelAnimation 是 QML 中用于并行執行多個動畫的容器動畫類型,可以同時運行多個子動畫。 基本用法 qml import QtQuick 2.15Rectangle {id: rectwidth: 100; height: 100color: "red"x: 0; y: 0; opacity: 1.0ParallelAnim…

NLP高頻面試題(四十三)——什么是人類偏好對齊中的「對齊稅」(Alignment Tax)?如何緩解?

一、什么是「對齊稅」(Alignment Tax)? 所謂「對齊稅」(Alignment Tax),指的是在使人工智能系統符合人類偏好的過程中,所不可避免付出的性能損失或代價。換句話說,當我們迫使AI遵循人類價值觀和規范時,AI系統往往無法達到其最大理論性能。這種性能上的妥協和折衷,就…

速查手冊:TA-Lib 超過150種量化技術指標計算全解 - 1. Overlap Studies(重疊指標)

速查手冊:TA-Lib 超過150種量化技術指標計算全解 - 1. Overlap Studies(重疊指標) TA-Lib(Technical Analysis Library)是廣泛使用的金融技術分析庫,實現了超過150種技術指標計算函數,適用于股票…