[其他ST产品] STM32L0热插拔时不启动程序

[复制链接]
957|14
 楼主| 咚了个咚 发表于 2025-4-2 10:00 | 显示全部楼层 |阅读模式
本帖最后由 咚了个咚 于 2025-7-28 22:22 编辑

我的代码刷入 STM32L0xx 系列控制器,当断开ST-Link  并重新插入为芯片供电时,程序没有运行需要硬件复位才能运行此代码。
没有设计复位按钮。如何实现热插拔时启动程序

公羊子丹 发表于 2025-4-3 07:36 | 显示全部楼层
可能是 BOOT 配置的问题,你检查一下 BOOT0/BOOT1 引脚有没有正确连接?如果 BOOT0 处于高电平,可能会进入系统 Bootloader,而不是你的程序。
周半梅 发表于 2025-4-3 07:37 | 显示全部楼层
你试试在 SystemInit 里手动设置 RCC->CSR |= RCC_CSR_RMVF; 清除复位标志,有时候掉电后 MCU 可能进入异常状态,需要手动清理。
帛灿灿 发表于 2025-4-3 07:37 | 显示全部楼层
这个问题看着像是电源上电顺序导致的,建议你用示波器看看 VDD 和 NRST 引脚的波形,确认是否存在不稳定情况。
童雨竹 发表于 2025-4-3 07:38 | 显示全部楼层
你可以尝试在 main 函数里加一段代码检查 RCC->CSR 的复位原因,并手动触发 NVIC_SystemReset() 试试看。
万图 发表于 2025-4-3 07:39 | 显示全部楼层
你试试在 CubeMX 里开启 IWDG(独立看门狗),这样如果 MCU 没有正常启动,看门狗超时会自动复位,可能能解决你的问题。
Wordsworth 发表于 2025-4-3 07:40 | 显示全部楼层
STM32L0 有低功耗模式,你看看是不是进入了 STOP 或 STANDBY 模式,导致上电后 MCU 没有正常运行?
Bblythe 发表于 2025-4-3 07:41 | 显示全部楼层
你的供电电路稳定吗?如果电源上升时间过长或者波动大,可能 MCU 没有正确上电复位,导致程序卡住。
Pulitzer 发表于 2025-4-3 07:42 | 显示全部楼层
你试试在 startup_stm32l0xx.s 里加个 BKP->CR |= BKP_CR_TAMP1E; 之类的代码,看能不能让芯片在上电后更快启动。
Uriah 发表于 2025-4-3 07:43 | 显示全部楼层
可以试着外加一个上拉电阻(10KΩ 左右)到 NRST 引脚,避免 MCU 复位信号不稳定导致程序未正常启动。
Clyde011 发表于 2025-4-3 07:44 | 显示全部楼层
你看看是不是 ST-Link 在调试模式下设置了某些寄存器,导致掉电后 MCU 运行模式不正常?可以尝试使用 Option Bytes 禁止调试模式后再试。
elephant00 发表于 2025-4-3 11:04 | 显示全部楼层
可能是电源问题,热插拔时,由于电源的瞬间波动或不稳定,可能导致STM32L0无法正常启动。
elephant00 发表于 2025-4-3 11:04 | 显示全部楼层
特别是当设备从断电状态迅速切换到通电状态时,电源线的浪涌电流可能对电源稳定性造成影响。
stormwind123 发表于 2025-4-3 11:09 | 显示全部楼层
用示波器来监测复位信号是否正常。
两只袜子 发表于 2025-4-3 12:36 | 显示全部楼层
热插拔过程中,复位信号可能受到干扰或未能正确触发,导致STM32L0无法正确复位并进入程序执行状态。
jcky001 发表于 2025-4-3 13:45 | 显示全部楼层
如果STM32L0的程序存在错误,或者配置不正确,可能导致在热插拔后无法正常启动。
cr315 发表于 2025-4-3 14:59 | 显示全部楼层
看看引脚配置、时钟配置是否有误吧。
laocuo1142 发表于 2025-4-3 16:56 | 显示全部楼层
可能是硬件连接问题吧。
flycamelaaa 发表于 2025-4-3 17:24 | 显示全部楼层
热插拔时,由于连接不良或接口松动,可能导致STM32L0与其他组件之间的通信或电源连接中断,从而无法正常启动。
powerantone 发表于 2025-4-3 18:16 | 显示全部楼层
试试在电源设计中加入浪涌抑制电路或稳压电路,以减少热插拔时的电源波动。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

82

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部