新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)之--外部中斷

STM32學(xué)習(xí)之--外部中斷

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò) 收藏
misc.h中定義的NVIC_InitTypeDef類型的結(jié)構(gòu)體:

typedef struct
{
uint8_t NVIC_IRQChannel;//中斷向量

本文引用地址:http://butianyuan.cn/article/201611/321815.htm

uint8_t NVIC_IRQChannelPreemptionPriority;//中斷搶占優(yōu)先級(jí)

uint8_t NVIC_IRQChannelSubPriority;//中斷向量?jī)?yōu)先級(jí)

FunctionalState NVIC_IRQChannelCmd;//中斷使能(ENABLE or DISABLE)
} NVIC_InitTypeDef;

中斷優(yōu)先級(jí)組stm32中用4位來(lái)決定。



外部中斷初始化

1.開啟時(shí)鐘(外部中斷要開啟GPIO時(shí)鐘和AFIO時(shí)鐘)

2.配置嵌套向量中斷控制器NVIC

<1>選擇中斷優(yōu)先級(jí)組NVIC_PriorityGroup_0~NVIC_PriorityGroup_4。

調(diào)用函數(shù)NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)完成優(yōu)先級(jí)組設(shè)定。

<2>配置中斷源

配置中斷向量NVIC_IRQChannel;

配置中斷向量搶占優(yōu)先級(jí)NVIC_IRQChannelPreemptionPriority;

配置中斷向量響應(yīng)優(yōu)先級(jí)NVIC_IRQChannelSubPriority;

使能中斷NVIC_IRQChannelCmd; (ENABLE or DISABLE)

調(diào)用函數(shù) NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)完成配置。

3.GPIO口初始化

GPIO口選擇GPIO_Pin

外部中斷GPIO口為輸入模式,GPIO_Speed不用設(shè)置。

GPIO輸入模式GPIO_Mode

調(diào)用 GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) 完成配置。

4.配置EXTI中斷線工作模式。

調(diào)用GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);設(shè)置EXTI輸入線。

配置輸入線EXTI_Line;

配置輸入線模式為中斷模式.EXTI_Mode = EXTI_Mode_Interrupt;

配置中斷觸發(fā)方式.EXTI_Trigger = EXTI_Trigger_Falling;

使能中斷.EXTI_LineCmd = ENABLE;

調(diào)用函數(shù) EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)。



關(guān)鍵詞: STM32外部中

評(píng)論


技術(shù)專區(qū)

關(guān)閉