1.外部中断介绍
1.1 EXTI简介
STM32F10x外部中断/事件控制器(EXTI)包含多达 20 个用于产生事 件/中断请求的边沿检测器。EXTI的每根输入线都可单独进行配置,以选 择类型(中断或事件)和相应的
触发事件(上升沿触发、下降沿触发或 边沿触发),还可独立地被屏蔽。
1.2 EXTI结构框图
1.3 外部中断/事件线映射
STM32F10x的EXTI具有20个中断/事件线,如下:
2.外部中断配置步骤
要使用外部中断我们就需要先配置它,通常都需经过这几步:(EXTI 相关库函数在stm32f10x_exti.c和stm32f10x_exti.h文件中)
1)使能IO口时钟,配置IO口模式为输入
(2)开启 AFIO 时钟,设置 IO 口与中断线的映射关系
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
(3)配置中断分组(NVIC),使能中断
(4)初始化EXTI,选择触发方式
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct); typedef struct { uint32_t EXTI_Line; //中断/事件线 EXTIMode_TypeDef EXTI_Mode; //EXTI模式 EXTITrigger_TypeDef EXTI_Trigger; //EXTI触发方式 FunctionalState EXTI_LineCmd; //中断线使能或失能 }EXTI_InitTypeDef;
(5)编写EXTI中断服务函数
EXTI0_IRQHandler EXTI1_IRQHandler EXTI2_IRQHandler EXTI3_IRQHandler EXTI4_IRQHandler EXTI9_5_IRQHandler EXTI15_10_IRQHandler
3.硬件电路
4.编写外部中断控制程序
要实现外部中断方式控制LED,程序框架如下:
(1)初始化对应端口的EXTI
(2)编写EXTI中断函数
(3)编写主函数