打印
[STM32F2]

GPIO 配合外设的典型应用

[复制链接]
336|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t60yz|  楼主 | 2024-12-11 08:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GPIO, IO, gp, pi
按键扫描
通过 GPIO 输入模式读取按键状态,检测按键是否按下(电平变化)。

单按键检测
按键硬件:
一端连接 GPIO,引脚上拉。
另一端接地,按下时引脚为低电平。
软件代码:
c
复制代码
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) {
    // 按键按下事件
}
矩阵键盘
矩阵键盘由行和列组成,按键按下时连接行和列。
配置行引脚为输出,列引脚为输入,上拉模式。
扫描算法:
每次设置一个行引脚为低电平,其余行拉高。
检测列引脚状态,判断按键位置。

使用特权

评论回复
沙发
公羊子丹| | 2025-3-24 08:17 | 只看该作者
你用的是中断方式还是轮询方式检测按键?如果按键数量不多,用 EXTI 中断可以减少 CPU 负担。

使用特权

评论回复
板凳
周半梅| | 2025-3-24 08:19 | 只看该作者
按键消抖处理你是怎么做的?可以用定时器或者简单的软件延时,避免误触发。

使用特权

评论回复
地板
帛灿灿| | 2025-3-24 08:20 | 只看该作者
矩阵键盘的扫描间隔建议设定多少?太短可能会导致误判,太长又会影响响应速度。

使用特权

评论回复
5
童雨竹| | 2025-3-24 08:21 | 只看该作者
如果矩阵键盘的行和列同时配置成输入模式,在上电瞬间可能会检测到误按键,你遇到过这种情况吗?

使用特权

评论回复
6
万图| | 2025-3-24 08:22 | 只看该作者
你试过用 GPIO_SetBits() 和 GPIO_ResetBits() 直接操作寄存器方式来优化按键扫描吗?相比 HAL 可能效率更高。

使用特权

评论回复
7
Wordsworth| | 2025-3-24 08:23 | 只看该作者
如果矩阵键盘超过 4×4,考虑使用 I2C 扩展 IO 口,比如 PCF8574,这样可以节省 MCU GPIO 资源。

使用特权

评论回复
8
Bblythe| | 2025-3-24 08:25 | 只看该作者
如果在低功耗模式下,你的按键如何唤醒 MCU?可以用外部中断 EXTI,并配置 WKUP 引脚。

使用特权

评论回复
9
Pulitzer| | 2025-3-24 08:26 | 只看该作者
你有试过用 PWM 驱动 GPIO 扫描矩阵键盘吗?可以减少软件定时的开销,提高 MCU 运行效率。

使用特权

评论回复
10
Uriah| | 2025-3-24 08:27 | 只看该作者
你的按键扫描代码是放在 while(1) 里轮询,还是用定时器中断周期性检测?定时器方式可以减少 CPU 负担。

使用特权

评论回复
11
Clyde011| | 2025-3-24 08:29 | 只看该作者
你有没有用 OLED 或 LCD 结合矩阵键盘做输入功能?可以结合 long press(长按检测)实现更丰富的交互。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

186

主题

1037

帖子

0

粉丝