硬件如下:
1.中断的基本知识点
STM32F103ZET6有112个基本的GPIO口都可以用来做外部中断的中断输入口。
STM32F103 的中断控制器支持 19 个外部中断/事件请求,具体如下:
线 0~15:对应外部 IO 口的输入中断。
线 16:连接到 PVD 输出。
线 17:连接到 RTC 闹钟事件。
线 18:连接到 USB 唤醒事件。
STM32 供 IO 口使用的中断线只有 16 个,要分配给112个IO口,分配关系如下:
2.编写代码
2.1时钟使能,AFIO时钟使能,GPIO初始化
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //开启AFIO 时钟
- GPIO_InitTypeDef GPIO_InitStructure;
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //设置为下拉输入
- GPIO_Init(GPIOA, &GPIO_InitStructure);
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //PE2 3 4设置成上拉输入
- GPIO_Init(GPIOE, &GPIO_InitStructure);
2.2PA0,PE2,PE3,PE4与中断线映射起来
|