打印
[STM32L1]

STM32L152RE调试 Sleep 会导致代码中出现异常

[复制链接]
490|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
唐纳德d|  楼主 | 2025-5-10 23:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我已经将 MBED-OS blinkly 程序移植到 StmCubeIDE 上,程序会在两次闪烁之后使设备进入睡眠状态。当我仿真该程序时会出现硬内存故障。但是,如果我重新启动,未进入仿真前,它工作正常是正常的。

使用特权

评论回复
沙发
公羊子丹| | 2025-5-25 07:34 | 只看该作者
看起来像是在 Sleep 状态下仿真器无法正常跟踪程序导致的。

使用特权

评论回复
板凳
周半梅| | 2025-5-25 07:35 | 只看该作者
STM32 的低功耗模式和调试器不太兼容,调试前可以先屏蔽 sleep。

使用特权

评论回复
地板
帛灿灿| | 2025-5-25 07:35 | 只看该作者
CubeIDE 里可以配置 DBGMCU 的寄存器,在 sleep 模式保持调试连接。

使用特权

评论回复
5
童雨竹| | 2025-5-25 07:36 | 只看该作者
你试过设置 HAL_DBGMCU_EnableDBGStopMode() 吗?可以防止调试断开。

使用特权

评论回复
6
万图| | 2025-5-25 07:37 | 只看该作者
我也遇到过类似情况,最后是注释掉 sleep 测试程序逻辑再调试的。

使用特权

评论回复
7
Wordsworth| | 2025-5-25 07:38 | 只看该作者
有些 ST-Link 固件版本老了,在低功耗模式会崩,更新一下也许能解决。

使用特权

评论回复
8
Bblythe| | 2025-5-25 07:39 | 只看该作者
可以在进入 sleep 前加个延时或日志,看是不是还没 sleep 就挂了。

使用特权

评论回复
9
Pulitzer| | 2025-5-25 07:40 | 只看该作者
建议用串口打印或 GPIO 测试替代断点调试 Sleep 的逻辑。

使用特权

评论回复
10
Uriah| | 2025-5-25 07:41 | 只看该作者
调试低功耗相关功能最好使用 printf 或外部逻辑分析仪观察行为。

使用特权

评论回复
11
Clyde011| | 2025-5-25 07:42 | 只看该作者
mbedOS 默认可能对底层电源控制处理不一致,建议手动初始化电源部分。

使用特权

评论回复
12
4y1b3| | 2025-5-31 23:48 | 只看该作者
在调试状态下不让 MCU 真的进入低功耗,而是“跳过”或“仿真”低功耗行为。

使用特权

评论回复
13
4y1b3| | 2025-5-31 23:49 | 只看该作者
可以在程序中这样写:

cpp
复制
编辑
#if defined(DEBUG) || defined(_DEBUG)
// 禁止低功耗用于调试
HAL_DBGMCU_EnableDBGSleepMode();
HAL_DBGMCU_EnableDBGStopMode();
HAL_DBGMCU_EnableDBGStandbyMode();
#endif
或使用 Mbed 的 API(如果仍部分保留 Mbed):

cpp
复制
编辑
sleep_manager_lock_deep_sleep();  // 禁止进入 Deep Sleep(Stop/Standby)

使用特权

评论回复
14
小迷糊仙| | 2025-6-4 12:32 | 只看该作者
感谢分享  学习了

使用特权

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

本版积分规则

23

主题

23

帖子

0

粉丝