DeepSleep 模式下 SWD 调试接口失能是低功耗设计的正常行为。根据 CW32L083 用户手册,深度休眠模式下高速时钟(HSE、HSIOSC)自动关闭,调试接口随之失能。要在这种状态下建立连接,需要让芯片在调试器接管前处于唤醒状态。
方法一:强制硬件复位
这是最直接的方式。按住开发板上的复位键(S3),同时让调试器发起连接。复位信号会强制芯片退出 DeepSleep 状态,在复位释放后的短暂窗口期内,SWD 接口重新可用,调试器可以“抢占”接管。
方法二:连接前先触发唤醒源
如果代码中配置了 GPIO 唤醒功能,可以在连接调试器之前,先手动触发唤醒引脚。例如按下连接到唤醒 GPIO 的用户按键(如 S1 或 S2),让芯片退出 DeepSleep 进入运行模式,随后再通过 SWD 连接。
方法三:配置调试器“复位时连接”
在 Keil 或 IAR 的调试器设置中,将连接模式改为 “Connect under Reset”(复位时连接)。调试器会在芯片复位信号有效期间建立 SWD 连接,此时用户代码尚未执行,DeepSleep 配置还未生效,可以稳定接管芯片。
方法四:修改代码避免上电即休眠
如果问题出在“上电后立即进入 DeepSleep”,导致调试器完全没有连接窗口,可以在代码中加一段上电延时。官方建议“在进入低功耗模式前加一段时间的延迟,以免出现上电就进入低功耗模式,无法烧录程序”。调试阶段可以暂时将进入 DeepSleep 的代码放到延时之后,或通过条件编译暂时禁用。
推荐操作顺序
优先尝试 “Connect under Reset”,无需改动硬件。如果调试器不支持该模式,则 按住复位键 → 发起连接 → 释放复位键。若芯片已经烧录了“上电即休眠”的程序且复位键无效,则需要通过 BOOT 模式或 ISP 方式擦除 Flash 来恢复。 |
|