「中斷」 這個概念,指的是在微控制器執行過程中,在指定條件發生時,停下當前所有工作,去執行中斷處理函式內的內容。就像我們在教室上課時,突然**了,不出意外的話我們都需要停下手中學習任務,去進行一系列的避險動作。
這一節我們通過中斷的方式,完成通過按鍵控制led亮滅的操作。
stm32的中斷控制器支援19個外部中斷/事件請求。這十九個外部中斷為:
配置使用時,需要先將io口與相應中斷線的對映關係建立,再對其進行使用。那對映關係是怎樣的呢?
gpiox.0 ~ gpiox.15(x = a,b,c,d,e,f,g)分別對應中斷線0 ~ 15
配置gpio與中斷線關係的函式是把gpio作為exti外部中斷時,需要開啟afio時鐘。void gpio_extilineconfig(uint8_t gpio_portsource, uint8_t gpio_pinsource)
eg:
gpio_extilineconfig(gpio_portsourcegpioe,gpio_pinsource2);
stm32的afio時鐘什麼時候需要開啟
初始化完線上中斷和中斷條件等內容,還需要配置中斷分組。配置中斷分組之前,我們需要先確定如何進行分組。這裡就需要用到nvic。
關於nvic的具體內容可檢視這篇博文:巢狀向量中斷控制器(nvic)詳解。
int main(void)
#ifndef __exti_h
#define __exit_h
#include "sys.h"
void extix_init(void); //外部中斷初始化
#endif
void extix_init(void)
void exti0_irqhandler(void) //中斷服務函式
exti_clearitpendingbit(exti_line0); //清除中斷位
}
中斷服務函式的名稱是固定的,寫錯會導致無法中斷。
stm32的io口外部中斷函式只有六個。分別為:
中斷線0 ~ 4各對應乙個中斷服務函式,中斷線5 ~ 9共用exti9_5_irqhandler
,中斷線10 ~ 15共用exti15_10_irqhandler
。
void exti3_irqhandler(void)
}
STM32之外部中斷控制
一 stm32外部中斷 1 stm32外部中斷結構圖 如上圖所示 主要包括四個環節,gpio afio exti nvic。以stm32f103ve 100腳 為例說明硬體模組的數量 gpio 80個 afio選擇通道 16個 外部中斷線exti 16 3 19個 nvic 1個 2 exti控制器...
STM32外部中斷
一 基本概念 arm coetex m3核心共支援256個中斷,其中16個內部中斷,240個外部中斷和可程式設計的256級中斷優先順序的設定。stm32目前支援的中斷共84個 16個內部 68個外部 還有16級可程式設計的中斷優先順序的設定,僅使用中斷優先順序設定8bit中的高4位。stm32可支援...
stm32外部中斷
外部中斷程式配置流程 rcc 時鐘配置 void rcc configuration void 時鐘配置 開啟各路時鐘 rcc apb2periphclockcmd rcc apb2periph usart1 rcc apb2periph gpioa rcc apb2periph afio,enab...