微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32学习之--外部中断

STM32学习之--外部中断

时间:11-26 来源:互联网 点击:
misc.h中定义的NVIC_InitTypeDef类型的结构体:

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

uint8_t NVIC_IRQChannelPreemptionPriority;//中断抢占优先级

uint8_t NVIC_IRQChannelSubPriority;//中断向量优先级

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

中断优先级组stm32中用4位来决定。



外部中断初始化

1.开启时钟(外部中断要开启GPIO时钟和AFIO时钟)

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

<1>选择中断优先级组NVIC_PriorityGroup_0~NVIC_PriorityGroup_4。

调用函数NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)完成优先级组设定。

<2>配置中断源

配置中断向量NVIC_IRQChannel;

配置中断向量抢占优先级NVIC_IRQChannelPreemptionPriority;

配置中断向量响应优先级NVIC_IRQChannelSubPriority;

使能中断NVIC_IRQChannelCmd; (ENABLE or DISABLE)

调用函数 NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)完成配置。

3.GPIO口初始化

GPIO口选择GPIO_Pin

外部中断GPIO口为输入模式,GPIO_Speed不用设置。

GPIO输入模式GPIO_Mode

调用 GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) 完成配置。

4.配置EXTI中断线工作模式。

调用GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);设置EXTI输入线。

配置输入线EXTI_Line;

配置输入线模式为中断模式.EXTI_Mode = EXTI_Mode_Interrupt;

配置中断触发方式.EXTI_Trigger = EXTI_Trigger_Falling;

使能中断.EXTI_LineCmd = ENABLE;

调用函数 EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top