目录
一、配置STM32开发环境
二、使用CubeMX生成代码
1.创建新工程
2.SYS选择Senal Wire
3.RCC选择Crystal/Ceramic Resonator
2.选择芯片类型
3.GPIO端口选择配置
选择 LED 灯引脚 PA5,设置引脚为输出模式 GPIO_Output;
选择作为外部中断的引脚 PB15,设置为与中断线 GPIO_EXTI15 连接
将 GPIO_PA5 命名为 LD1
将 GPIO_PB15 命令为 B1_EXTI ,触发方式选择下降沿触发
配置中断优先级
4.生成并打开代码
5.修改代码
在main函数中添加函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if( GPIO_Pin == B1_EXTI_Pin ) // 判断外部中断源
{
HAL_GPIO_TogglePin(LD1_GPIO_Port, LD1_Pin); // 翻转LD1状态
}
}
6.生成编辑生成.hex文件
7.效果图
三、proteus仿真
四、总结
使用CubeMX生成代码能比较方便地实现中断控制灯的亮灭,但需要注意GPIO引脚高低电平的设置和优先级的处理。在实验中是用杜邦线模拟代替开关,不考虑消抖,如果是按键开关就需要延迟消抖处理。
五、参考文献
HAL 库 STM32CubeMX 实现 LED 亮灭----中断模式_stm32f103 中断控制两个led同时亮灭-CSDN博客