一、环境
- 硬件:stm32f103c8t6 核心板
- 软件:STM32CubeMX 6.4.0
- 软件:keil5 mdk
二、使用stm32CubeMX创建文件
-
创建新项目,搜索框找到自己的板子型号
-
时钟RCC配置,将HSE选为外部晶振模式
-
管脚配置
选择PA5作为LED灯的连接管脚,PB9 作为杜邦线(等价于开关)的连接管脚;具体配置是:左击PA5端口选择GPIO_Output模式,PB9设为EXTI。
-
SYS设置,选择Serial Wire模式。
-
GPIO管脚设置
点击左侧GPIO,PA5是高电平触发,所以不需要改变设置,别名设为**“A5_LED”,选中PB9,将GPIO Mode设置为下降沿触发外部中断;
将GPIO 设置为上拉电阻模式(Pull-up**);别名设置为B9_EXTI。
6.NVIC配置,
勾选下方选项表示支持中断操作。
- 时钟树设置
- 设置工程路径、工程名
- 设置工程文件,并导出
三、配置代码
直接打开keil项目或者关闭STMCube再打开对应文件。并在main.c文件的main函数外重写一个回调函数。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if( GPIO_Pin == B9_EXTI_Pin) //判断中断源
{
HAL_GPIO_TogglePin(GPIOA, A5_LED_Pin); //翻转led管脚 A1口的电平
}
}
1、编译、烧录
2、效果
VID_20221023_205054
四、总结
学习了中断模式,并将其成功的应用在了LED的亮灭上,又一次使用STMCube进行HAL库的设置,增加了对STMCube的熟练操作。