STM32外部中斷(實現按鍵控制LED)

2022-07-20 09:09:10 字數 1341 閱讀 7956

「中斷」 這個概念,指的是在微控制器執行過程中,在指定條件發生時,停下當前所有工作,去執行中斷處理函式內的內容。就像我們在教室上課時,突然**了,不出意外的話我們都需要停下手中學習任務,去進行一系列的避險動作。

這一節我們通過中斷的方式,完成通過按鍵控制led亮滅的操作。

stm32的中斷控制器支援19個外部中斷/事件請求。這十九個外部中斷為:

配置使用時,需要先將io口與相應中斷線的對映關係建立,再對其進行使用。那對映關係是怎樣的呢?

gpiox.0 ~ gpiox.15(x = a,b,c,d,e,f,g)分別對應中斷線0 ~ 15

配置gpio與中斷線關係的函式是void gpio_extilineconfig(uint8_t gpio_portsource, uint8_t gpio_pinsource)

eg:gpio_extilineconfig(gpio_portsourcegpioe,gpio_pinsource2);

把gpio作為exti外部中斷時,需要開啟afio時鐘。

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...