STM32CubeMX开发之路—6外部中断
运行环境
- Windows10
- STM32CubeMX___Version 5.0.0
- Keil5(MDK5)___Version 5.15
简介
本例程主要讲解如何设置外部中断,采用中断的方式按键是否按下,在中断中进行打印数据。
STM32CubeMx基本配置
基础配置过程请参考 STM32CubeMx(Keil5)开发之路—配置第一个项目
STM32CubeMx 外部中断配置
查看电路图,如下图所示
K1——K3为外部输入引脚,连接PE2——PE4,并且按下按键时为低电平,因此待会儿需要设置为下降沿触发
为了方便调试,重定向printf,进行usart设置
1——点击USART1进行设置
2——模式选择Asynchronous异步传输
3——可以看到右边自动出现了Tx和Rx
4——可以自行设置波特率,停止位,校验位等参数
- 在芯片图上面找到PE2,PE3,PE4,鼠标左击,分别选择GPIO_EXTI2,GPIO_EXTI3,GPIO_EXTI4,如下图所示
1——点击选择GPIO
2——点击PE2进行更细节的设置
3——GPIO mode选择 “****** edge Falling ****” 选项
4——选择默认拉高
PE3,PE4也进行类似设置,如下图所示
1——点击选择NVIC
2——将3个中断进行勾选上
3——分别设置优先级
如下图所示
代码修改
1——选中main.c
2——重定向printf
3——添加中断响应函数进行状态打印(进行10ms的消抖处理)
如下图所示
/* USER CODE BEGIN 0 */
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1, 0xFFFF);
return ch;
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
HAL_Delay(10);
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_2)==RESET)
{
printf("K1");
}
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3)==RESET)
{
printf("K2");
}
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==RESET)
{
printf("K3");
}
}
/* USER CODE END 0 */
烧录代码后打开出口调试助手,分别按下对应按键,正确的话会看到如下输出