本篇文章主要介绍如何使用STM32CubeMX初始化STM32L431RCT6的EXIT检测按键,讲述了一些NVIC的小知识,并一步一步探索了HAL库的中断处理机制。
1. 准备工作
硬件准备
- 开发板
首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi):
软件准备
- 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码;
Keil MDK和串口助手的安装包都可以关注“小熊派开源社区”微信公众号,在资料教程一栏中可获取安装包。
2.生成MDK工程
选择芯片型号
打开STM32CubeMX,打开MCU选择器:
搜索并选中芯片STM32L431RCT6
:
配置时钟源
- 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
- 如果使用默认内部时钟(HSI),这一步可以略过;
这里我都使用外部时钟:
配置LED的GPIO引脚
查看小熊派开发板的原理图,如下:
所以接下来我们选择配置PC13
引脚:
设置用户标签为LED:
配置GPIO引脚为外部中断引脚
查看小熊派开发板的原理图,如下:
所以接下来我们选择配置PB2
引脚和PB3
引脚为外部中断引脚:
因为没有设置硬件上拉,所以我们配置开启上拉电阻,并设置用户标签为KEY1
和KEY2
,接下来是最重要的一步:
- 开启下降沿触发中断:即在按下按键时电平由高变为低时触发
- 开启上升沿触发中断:即在按下按键后松开时电平由低变为高时触发
- 开启下降沿上升沿都触发中断:即在按下时触发,松开时再次触发
这里我选择开启下降沿触发中断:
配置NVIC设置中断优先级
知识小卡片 —— NVIC
NVIC全称Nested vectored interrupt controller
,即嵌套向量中断控制器,用来决定中断的优先级。
NVIC在 ARM Conrtex-M 内核中,用一个