目录
1 、 电路构成及原理图
2 、编写实现代码
main.c
exti.c
3、代码讲解
4、烧录到开发板调试、验证代码
5、检验效果
开发板介绍
相关笔记
此笔记基于朗峰 STM32F103 系列全集成开发板的记录
1 、 电路构成及原理图
外部中断---EXTI
EXTI(External interrupt/event controller)—外部中断/事件控制器,
管理着控制器的 20 个中断/事件线并且每个中断/事件线都对应有
一个边沿(上升沿/下降沿)检测器,可以实现输入信号的边沿检测。
EXTI 可对每个中断/事件线进行单独配置,可以配置为中断或者事件,
以及触发事件的属性。STM32F103 的中断控制器支持 20 个外部中
断/事件请求。
2 、编写实现代码
main.c
exti.c
3、代码讲解
按部就班的先初始化产生中断的引脚 PC8 也就是 KEY1 引脚,因KEY1 的另一个引脚连接在低电平 GND 端所以选择下降沿触发(按下按键时 PC8 引脚会由高电平被拉到低电平),也是这个原因 PC8 选择上拉即平时没有按下 KEY1 时 PC8 是高电平状态。
随后就要用 HAL 库函数 HAL_NVIC_SetPriority()设置中断的优先级别了,这里中断线我们选择 EXTI9_5 因前面介绍了中断线和中断服务 函 数 的 对 应 关 系 , 引 脚 PC8 对 应 的 中 断 服 务 函 数 是EXTI9_5_IRQHandler()。
main 没有更多好说的,依旧是初始化 HAL 库、初始化系统时钟(72Mhz)、初始化 LED、初始化按键最后初始化按键的外部中断。 因控制逻辑写在了中断服务函数里,程序运行后有中断产生时就自动运行了,所以 main 函数里也就没有什么需要处理了。
4、烧录到开发板调试、验证代码
工程编译没有问题后就下载到开发板中检验代码运行情况,把代码下载到朗峰 F1 开发板方法是:用朗峰 F1 开发板保护盒配的 ST-LINK 下载器 ,连接到开发板的 SWD 插针上注意引脚对应关系,不要插错了。
然后编译一次(按 ),编译结果显示 0 错误 0 警告就 OK
之后再按 将代码下载到开发板。
5、检验效果
下载完成后,连接好开发板电源并按下电源开关,
按下 KEY1 看到LED1 亮起,
再次按 KEY1 键 LED1 熄灭。
工程到此验证无误。
开发板介绍
STM32F103RCT6开发板——全集成开发板,外设齐全,资料详尽,新手学习好帮手!
相关笔记
STM32介绍-CSDN博客
STM32入坑-CSDN博客
STM32-寄存器和HAL库以及如何使用-CSDN博客
STM32-开发环境之MDK5-CSDN博客
STM32-开发环境之STM32CubeMX-CSDN博客
STM32-开发工具-CSDN博客
STM32-开发板介绍-CSDN博客
STM32-点亮 LED-CSDN博客
STM32-启用蜂鸣器-CSDN博客
STM32—启用按键-CSDN博客
STM32—触摸键-CSDN博客
STM32—PWM输出-CSDN博客
STM32—控制蜂鸣器(定时器)CSDN博客