目录
4. 按键外部中断
1. 实验内容及步骤:
实验内容:
通过按键中断,在中断函数中点亮LED灯,并在中断中等待按键松开;
在主函数中进行LED灭灯操作。
实验步骤:
1. 开启LED时钟(PB5)、配置LED推挽输出,10MHz;
2. 开启按键时钟(PE4)、配置上拉输入;
3. 开启外部中断时钟,配置按键(PE4)为下降沿中断。
2. 硬件说明
3. 寄存器说明
时钟部分:
在本实验中,时钟部分一共包含GPIO时钟、中断线时钟(EXTI)、AFIO时钟
GPIO时钟,包括按键(PE4),LED(PB5),因此需要使能GPIOB和GPIOE时钟。GPIO挂载在APB2上,因此通过配置RCC_APB2ENR寄存器使能GPIO时钟。(为什么挂载在APB2,可以参考“STM32中文参考手册”P28)
RCC_APB2ENR|=0000 0000 0100 1001(二进制);
RCC_APB2ENR |= 0x0049;
GPIO部分:
LED部分与第一章一致,因此不详细讲解。
按键部分,根据GPIO外设配置表可知(STM32中文参考手册P113),外部中断需要配置为:浮空输入或带上拉输入或带下拉输入。具体的配置内容参考第二章。
中断配置根据中断框图顺序配置:
中断线(EXTI)部分:
根据外部中断通用I/O映象表可知,(PE4)的中断线为EXTI4。
配置中断线 外部中断配置寄存器 (AFIO_EXTICRX)选择EXTIX外部中断输入源。(就是配置那个引脚中断)(STM32中文参考手册P127)
本实验中使用的是PE4作为下降沿中断,因此配置为:
AFIO_EXTICR2 &=1111 1111 1111 0000; (先清零)
AFIO_EXTICR2 |= 0000 0000 0000 0100;(PE[4]为中断源)
=> AFIO_EXTICR2 &=0xFFF0; (先清零)
=> AFIO_EXTICR2 |=0x0004; (PE[4]为中断源)
配置中断屏蔽器寄存器:
在本实验中PE4的中断线为EXTI4,因此中断屏蔽器因开放MR4
EXTI_IRM |= 0000 0000 0000 0000 0000 0000 0001 0000(二进制)
EXTI_IRM |= 0x0000 0010;
上下边缘触发配置:
在本实验中,需配置PE4为下降沿触发,因此:
EXTI_FTSR |= 0000 0000 0000 0000 0000 0000 0001 0000(二进制)
EXTI_FTSR |= 0x0000 0010;