这里是基于正点原子开发板的学习记录。
首先你要加入固件库
stm32f10x_exti.h 和 stm32f10x_exti.c
1、STM32中每个io口都可以作为外部中断的中断输入口。
2、STM32F103的中断控制器支持19个外部中断/事件请求:
线 0~15:对应外部 IO 口的输入中断。
线 16:连接到 PVD 输出。
线 17:连接到 RTC 闹钟事件。
线 18:连接到 USB 唤醒事件。
不同滴事件咱就滴选不同滴线。
GPIO 的管教 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线 0~15。
这样我们就可以吧所有IO口控制起来啦。
所以呢简简单单,咱们就配置GPIO与中断线配置起来就行了啊
运用函数GPIO_EXTILineConfig()
例如:GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);
这里我们先写exti.h
#ifndef __EXTI_H
#define __EXIT_H
#include "sys.h"
void EXTIX_Init(void);//ÍⲿÖжϳõʼ»¯¡
#endif
再写exti.c文件
#include "exti.h"
#include "led.h"
#include "key.h"
#include "delay.h"
#include "usart.h"
#include "beep.h"
#include "stm32f10x_exti.h"
//ÏÈд¶ÔÄÇЩÏß×öÖжÏ
//ÔÙдÖж϶ÔÓ¦µÄÓÅÏȼ¶
void EXTIX_Init(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
KEY_Init(); //°´¼ü¶Ë¿Ú³õʼ»¯
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//ʹÄܸ´Óù¦ÄÜʱÖÓ
//ÏÖÔÚ¶ÔGPIOE.2 ÖжÏÏßÒÔ¼°Öжϳõʼ»¯ÅäÖà ϽµÑØ´¥·¢
GPIO_EXTILineConfig