EXTI:External interrupt/event controller 外部中断/事件控制器
功能框图
EXTI 有 20 个中断/事件线,每个 GPIO 都可以被设置为输入线,占用 EXTI0 至EXTI15,还有另外七根用于特定的外设事件, 4 根特定外设中断/事件线由外设触发 。
EXTI0 至 EXTI15 用于 GPIO,通过编程控制可以实现任意一个 GPIO 作为 EXTI 的输入源。如** EXTI0 可以通过 AFIO 的外部中断配置寄存器 1(AFIO_EXTICR1)的EXTI0[3:0]位选择配置,**为 PA0、 PB0、 PC0、 PD0、 PE0、 PF0、 PG0、 PH0 或者 PI0。
EXTI 初始化结构体详解
1) EXTI_Line: EXTI 中断/事件线选择,可选 EXTI0 至 EXTI19,可参考表 18-1 选择。
2) EXTI_Mode: EXTI 模式选择,可选为产生中断(EXTI_Mode_Interrupt)或者产生事件(EXTI_Mode_Event)。
3) EXTI_Trigger: EXTI 边沿触发事件,可选上升沿触发(EXTI_Trigger_Rising)、下降 沿 触 发 (EXTI_Trigger_Falling) 或 者 上 升 沿 和 下 降 沿 都 触 发( EXTI_Trigger_Rising_Falling)。
4) EXTI_LineCmd:控制是否使能 EXTI 线,可选使能 EXTI 线(ENABLE)或禁用(DISABLE)。
实验设计
程序编写
在user文件夹中,新建exti文件夹,文件夹中新建.c、.h文件
打开工程,USER中添加.c文件,在魔法棒中添加 .h文件
bsp_exti.c中编写
#include “bsp_exti.h”
bsp_exti.h中编写条件编译
#ifndef __BSP_EXTI_H
#define __BSP_EXTI_H
#include "stm32f10x.h" //使用寄存器
#endif /* __BSP_EXTI_H */
PA0连接到EXTI0