外部中斷實驗

2021-10-11 11:10:27 字數 2829 閱讀 4536

外部中斷概述

1、stm32的每個io都可以作為外部中斷輸入。

2、stm32的中斷控制器支援19個外部中斷/事件請求:

思考:stm32供io使用的中斷線只有16個,但是stm32f10x系列的io口多達上百個,stm32f103zet6(112),stm32f103rct6(51),那麼中斷線怎麼跟io口對應呢?請看下圖:

由上圖可知:

gpiox.0對映到exti0

gpiox.1對映到exti1

…gpiox.15對映到exti15

對於每個中斷線,我們可以設定相應的觸發方式(上公升沿觸發,下降沿觸發,邊沿觸發)以及使能,同一時間只能有乙個io口對映到一條中斷線,比如:gpioa.0映**exti0同一時間其他的gpio就不能對映在exti0這條中斷線上。

是不是16個中斷線就可以分配16個中斷服務函式呢?

io口外部中斷在中斷向量表中只分配了7個中斷向量,也就是只能使用7個中斷服務函式

從表中可以看出,外部中斷線5到9分配乙個中斷向量,共用乙個服務函式外部中斷線10~15分配乙個中斷向量,共用乙個中斷服務函式。

中斷服務函式列表:

外部中斷常用庫函式:

1、void

gpio_extilineconfig

(uint8_t gpio_portsource, uint8_t gpio_pinsource)

;//設定io口與中斷線的對映關係

exp:

gpio_extilineconfig

(gpio_portsourcegpioe,gpio_pinsource2)

;2、void

exti_init

(exti_inittypedef* exti_initstruct)

;//初始化中斷線:觸發方式等

3、itstatus exti_getitstatus

(uint32_t exti_line)

;//判斷中斷線中斷狀態,是否發生

4、void

exti_clearitpendingbit

(uint32_t exti_line)

;//清除中斷線上的中斷標誌位

exti_init函式:

void

exti_init

(exti_inittypedef* exti_initstruct);

typedef

struct

exti_inittypedef;

exti_initstructure.exti_line=exti_line2;

exti_initstructure.exti_mode = exti_mode_interrupt;

exti_initstructure.exti_trigger = exti_trigger_falling;

exti_initstructure.exti_linecmd = enable;

exti_init

(&exti_initstructure)

;

外部中斷的一般配置步驟:

gpio_init()

;

rcc_apb2periphclockcmd

(rcc_apb2periph_afio,enable)

;

void

gpio_extilineconfig()

;

exti_init()

;

nvic_init()

;

extix_irqhandler()

;

exti_clearitpendingbit()

;

外部中斷初始化和中斷函式部分**:

void

extix_init

(void

)void

exti3_irqhandler

(void

)exti_clearitpendingbit

(exti_line3);}

void

exti4_irqhandler

(void

)exti_clearitpendingbit

(exti_line4);}

void

exti0_irqhandler

(void

)exti_clearitpendingbit

(exti_line0);}

void

exti2_irqhandler

(void

)exti_clearitpendingbit

(exti_line2)

;}

外部中斷實驗

crotex m3 核心支援 256 個中斷,其中包含了 16 個核心中斷和 240 個外部中斷。stm32f10x 晶元有 84 個中斷通道,包括 16 個核心中斷和 68 個可遮蔽中斷,對於stm32f103系列晶元只有60個可遮蔽中斷,參考 stm32f10x 中文參考手冊 9 中斷和事件章節...

外部中斷實驗

需要新增的韌體庫檔案有 misc.c stm32f4xx exti.c stm32f4xx gpio.c stm32f4xx rcc.c stm32f4xx syscfg.c 五個。1 使能 io 口時鐘,初始化 io 口為輸入 首先,我們要使用 io 口作為中斷輸入,所以我們要使能相應的 io 口...

外部中斷與定時器中斷實驗

已知微控制器晶振頻率為12mhz,自行選取定時 計數器,定時 計數器工作方式自選,編寫程式,使p1.7端輸出週期為0.5ms方波。解題思路 假設方波訊號的占空比為50 已知條件可以得,機器週期為1us,所以決定採用t0定時,工作方式0,已知輸出週期為0.5ms,則每定時0.25ms計數使p1.7輸出...