前期准备:

  1. STM32CubeMX
  2. Proteus 8
  3. IDE Keil(MDK-ARM)

STM32CubeMX部分



1. 配置时钟

依旧是选择STM32F103C4系列芯片,选择高速外部时钟,配置晶振。
在这里插入图片描述

将HCLK设置为最大频率72MHz
在这里插入图片描述

2. 选择IO口

在这里插入图片描述
PA1、PA2选择GPIO_Output模式,用作点灯
PA3、PA4选择GPIO_EXTI模式,用作外部中断

3. 引脚模式设置

在这里插入图片描述

GPIO:

level:高电平
mode:推挽输出
是否上下拉:不上下拉
引脚速度:中

关于Output模式的配置上一章内容有,这里就不再详细操作了。

EXTI:

在这里插入图片描述
mode:下降沿触发
是否上下拉:不上下拉

4. 中断优先级管理设置

在这里插入图片描述
将line3和line4中断使能勾选

5. 工程管理设置

在这里插入图片描述

在这里插入图片描述
依旧是我推荐的几个选项,然后GENERATE CODE,STM32CubeMX部分完成。


MDK 5部分

在这里插入图片描述
打开工程,发现HAL_GPIO_EXTI_IRQHandler(中断服务函数) 在stm32f1xx_it.c文件下
在这里插入图片描述
接着右键HAL_GPIO_EXTI_IRQHandler(中断服务函数),点击Go To Definition Of " "进入此函数
在这里插入图片描述

此函数的作用是清除中断标志位,之后进入HAL_GPIO_EXTI_Callback(中断回调函数)

中断运行结束后不会立马退出,而是进入HAL_GPIO_EXTI_Callback(中断回调函数),处理完中断回调函数的事件后,再退出中断,所以我们一般都是将需要响应的事件代码写入中断回调函数中

继续进入HAL_GPIO_EXTI_Callback(中断回调函数)
在这里插入图片描述

HAL_GPIO_EXTI_Callback(中断回调函数) 中写入响应程序:KEY1按下,LED1和LED2发光
KEY2按下,LED1和LED2熄灭

Proteus 8 部分



如图搭建电路
在这里插入图片描述

将.HEX文件放入单片机,最后点击左下角的仿真即可看到效果
在这里插入图片描述

QQ录屏20210617163004

本期工程文档——>Gitee





在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐