1. 项目概述
在嵌入式开发中,GPIO(通用输入输出)是最基础也是最重要的外设之一。前文我们已经实现了GPIO的输出功能,通过控制LED灯的亮灭来验证了输出功能。本文将重点介绍GPIO的输入功能实现,特别是通过外部中断方式来检测按键动作。
STM32L562 Discovery Kit开发板上提供了一个用户可用的蓝色按键(标记为USER),这个按键连接在PC13引脚上。当按键未被按下时,PC13通过电阻接地处于低电平状态;当按键按下时,PC13直接连接到3.3V电源变为高电平。这种设计在硬件上实现了按键状态的明确区分。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件设计与原理分析
2.1 按键电路设计
开发板上的用户按键电路设计采用了常见的上拉电阻配置。具体电路原理如下:
- 按键一端连接PC13引脚
- 按键另一端连接3.3V电源
- PC13引脚通过10kΩ电阻接地
这种设计有以下特点:
- 按键未按下时:PC13通过电阻接地,处于稳定的低电平状态
- 按键按下时:PC13直接连接到3.3V电源,变为高电平
- 电阻起到限流和防抖动作用
2.2 外部中断触发机制
STM32的GPIO可以配置为外部中断模式,当中断条件满足时,会触发中断服务程序。对于按键检测,我们通常选择边沿触发方式:
- 上升沿触发:当电平从低变高时触发
- 下降沿触发:当电平从高变低时触发
- 双边沿触发:两种变化都会触发
在本项目中,由于按键按下时产生上升沿,释放时产生下降沿,我们选择上升沿触发可以更准确地捕捉按键动作。
3. 开发环境配置
3.1 STM32CubeMX设置
- 打开已有的STM32CubeMX工程
- 找到PC13引脚配置
- 将PC13设置为GPIO_EXTI13模式
- 在GPIO配置中设置:
- Mode: External Interrupt Mode with Rising edge trigger detection
- Pull-up/Pull-down: Pull-down (与硬件设计匹配)
- 确保NVIC中使能了EXTI13中断
3.2 中断优先级配置
在NVIC配置中,建议将EXTI13中断优先级设置为中等优先级(如2),这样既不会影响高优先级任务,也能及时响应按键事件。
