HC32L130安全复用SWD引脚方案

张开发
2026/4/20 5:51:31 15 分钟阅读

分享文章

HC32L130安全复用SWD引脚方案
目录一、引脚与寄存器基础二、安全配置方案推荐1. 代码实现上电延时 条件切 GPIO2. 下载恢复方法ISP 模式三、关键注意事项四、总结要让 HC32L130 的SWDIO (PA13)、SWCLK (PA14) 作为通用 IO同时不影响程序下载核心是上电先保留 SWD 下载窗口延时后再切 GPIO恢复下载靠 ISP 串口 BOOT0。一、引脚与寄存器基础SWDIO PA13SWCLK PA14控制位SYSCTRL1.SWD_USE_IO写 1 启用 GPIO 模式SWD 下载失效解锁写保护先向SYSCTRL2依次写0x5A5A、0xA5A5才能改 SYSCTRL1二、安全配置方案推荐1. 代码实现上电延时 条件切 GPIO#include hc32l130.h void SWD_As_GPIO(void) { // 1. 打开GPIO时钟 PWC-FCCR | (1 8); // GPIO时钟使能 // 2. 解锁系统控制寄存器 SYSCTRL-SYSCTRL2 0x5A5A; SYSCTRL-SYSCTRL2 0xA5A5; // 3. 使能SWD引脚为GPIO模式 SYSCTRL-SYSCTRL1 | (1 1); // SWD_USE_IO1 // 4. 配置PA13、PA14为GPIO示例推挽输出 // PA13 GPIOA-PODR ~(1 13); // 初始低 GPIOA-DDR | (1 13); // 输出 GPIOA-PUCR ~(1 13); // 无上拉 GPIOA-PDCR ~(1 13); // 无下拉 // PA14 GPIOA-PODR ~(1 14); GPIOA-DDR | (1 14); GPIOA-PUCR ~(1 14); GPIOA-PDCR ~(1 14); } int main(void) { // 关键上电延时2~3秒保留SWD下载窗口 for (volatile uint32_t i 0; i 2000000; i); // 延时后切为GPIO SWD_As_GPIO(); while (1) { // 应用逻辑 GPIOA-PODR ^ (1 13); for (volatile uint32_t i 0; i 100000; i); } }2. 下载恢复方法ISP 模式当 SWD 被切为 GPIO 后SWD 下载失效改用ISP 串口下载恢复硬件操作断电 → 将BOOT0(PD03)接高电平→ 重新上电芯片进入ISP 编程模式SWD 引脚自动恢复为调试状态软件操作用HDSC MCU Programmer或 Keil 通过UART(PA9/PA10)下载新固件新固件中去掉 SWD 转 GPIO 代码即可恢复 SWD 下载三、关键注意事项下载窗口必须留上电必须加 **≥2 秒延时 ** 再执行 SWD 转 GPIO否则一上电就锁死 SWD只能靠 ISP 救回ISP 是唯一恢复手段量产务必预留UART(PA9/PA10)与BOOT0引脚用于救砖与升级上电默认状态复位后 SWD 引脚默认上拉输入切 GPIO 前电平不受控硬件需做防护寄存器操作顺序必须先解锁 SYSCTRL2再写 SYSCTRL1否则配置无效四、总结运行时延时后切 GPIOPA13/PA14 正常做 IO下载时BOOT0 拉高 ISP 串口即可恢复 SWD 下载安全边界延时窗口 ISP 备份兼顾 IO 复用与下载可靠性

更多文章