You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F103C8T6上拉输入异常:按下按钮PC13 LED状态不符问题咨询

问题分析与解决方案

核心原因:LED电平逻辑与代码控制逻辑不匹配

1. PC13板载LED的硬件特性

大部分STM32开发板(如Blue Pill)的板载LED采用高电平熄灭、低电平点亮的接线方式——LED一端接VCC,另一端连接PC13引脚。当引脚输出HIGH时,LED两端无电压差,无法导通;输出LOW时,引脚拉低,LED形成导通回路点亮。

你的代码逻辑是:按下STOP按钮(此时STOP==0)时,给PC13输出HIGH,正好和LED的点亮逻辑完全相反,导致按下按钮时LED熄灭。

2. 上拉输入的信号逻辑是正常的

你配置INPUT_PULLUP后,引脚默认处于高电平(digitalRead返回1);当按钮按下时,引脚被拉到GND,digitalRead返回0,这部分的硬件和代码逻辑是正确的。

修正方案

只需将LED的控制逻辑反转,匹配硬件特性即可:

void loop(void) {
    buttons();

    if(STOP == 0)
    {
        digitalWrite(PC13, LOW); // 按下按钮时拉低引脚,点亮LED
    }
    else
    {
        digitalWrite(PC13, HIGH); // 松开按钮时输出高电平,熄灭LED
    }
}

额外排查点

如果修正后仍有问题,检查按钮接线:

  • 确认STOP按钮是接在PA1与GND之间(上拉输入的标准接法);如果误接在PA1与VCC之间,按下时引脚会被拉高,需要改为INPUT_PULLDOWN或者调整代码判断条件(判断STOP==1时点亮LED)。

内容的提问来源于stack exchange,提问作者user1543571

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:25:06