为什么就你的灯不亮???(stm32)

该文章已生成可运行项目,

跳冒1 0状态,烧入程序,复位后,则程序停止。

跳冒0 0状态,复位后,运行烧入的程序。

所以,烧入程序后按下复位键,程序停止运行,此时需要将BOOT0移到0状态,再按下复位键即可。

以上是硬件问题,还有软件问题。

LED1.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
LED1.GPIO_Pin = GPIO_Pin_14||GPIO_Pin_13;
LED1.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOC,&LED1);

如果你的引脚是这样定义的:

恭喜你,踩坑了。这样虽然没有报错,但灯不亮。

你需要这样:

    LED1.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
	LED1.GPIO_Pin = GPIO_Pin_14;//引脚12
	LED1.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
	GPIO_Init(GPIOC,&LED1);
	
	LED1.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
	LED1.GPIO_Pin = GPIO_Pin_13;//引脚12
	LED1.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
	GPIO_Init(GPIOC,&LED1);

总结:STM32f103c8t6烧入程序后灯点亮,按下复位键灯灭,移植BOOT0,再按下复位键即可。或者软件引脚分开定义。

本文章已经生成可运行项目
### 可能的原因及解决方法 STM32按键控制LED灯不亮的问题可能由多种原因引起,以下从硬件和软件两个方面进行分析,并提供相应的解决方法。 #### 1. 硬件连接问题 - **GPIO引脚配置错误**:如果LED灯的GPIO引脚没有正确配置为输出模式,或者按键的GPIO引脚没有配置为输入模式,可能导致电路无法正常工作。需要检查`GPIO_Init()`函数中是否正确设置了引脚模式[^3]。 - **硬件连接异常**:检查LED灯与STM32之间的连线是否松动或断开,以及按键是否正确连接到对应的GPIO引脚。此外,确保LED灯的极性正确(长脚为正极,短脚为负极)[^3]。 - **电源问题**:确认STM32的供电电压是否正常,以及LED灯是否有足够的驱动电流。如果使用外部电源供电,需确保其电压范围符合STM32的工作要求[^1]。 #### 2. 软件代码问题 - **初始化函数未调用**:在主程序中,必须调用LED和按键的初始化函数(如`LED_Init()`和`Key_Init()`),以确保GPIO引脚和其他外设被正确配置[^3]。 - **PWM配置错误**:如果项目中使用了PWM来控制LED度,需检查TIMx定时器的初始化参数是否正确设置,包括时钟源、预分频器和自动重装载值等。例如,在引用[1]中提到通过同的PWM占空比实现六档度控制,因此需确保PWM信号能够正常输出。 - **按键扫描逻辑错误**:按键扫描函数`Key_Scan()`可能存在问题,导致无法正确识别按键状态。可以尝试在调试模式下打印出`KEY_Num`的值,验证按键扫描是否正常工作[^4]。 - **LED驱动函数错误**:检查LED的开关函数(如`Led_Toggle()`)是否正确实现了点和熄灭功能。可以在`main()`函数中直接调用这些函数测试LED灯是否正常工作[^3]。 ```c // 示例代码:测试LED灯是否正常工作 int main(void) { LED_Init(); while (1) { LED2_ON(); // 点LED2 Delay_ms(500); // 延时500ms LED2_OFF(); // 熄灭LED2 Delay_ms(500); // 延时500ms } } ``` #### 3. 调试建议 - 使用示波器检查PWM信号是否正确输出到指定引脚。 - 在开发环境中启用断点调试功能,逐步检查变量值和程序流程。 - 如果仍然无法解决问题,可以尝试重新下载固件到STM32芯片,排除程序加载异常的可能性。 --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新海诚学QT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值