当前位置: 首页 > news >正文

HC32L130安全复用SWD引脚方案

目录

一、引脚与寄存器基础

二、安全配置方案(推荐)

1. 代码实现(上电延时 + 条件切 GPIO)

2. 下载恢复方法(ISP 模式)

三、关键注意事项

四、总结


要让 HC32L130 的SWDIO (PA13)、SWCLK (PA14) 作为通用 IO,同时不影响程序下载,核心是:上电先保留 SWD 下载窗口,延时后再切 GPIO;恢复下载靠 ISP 串口 + BOOT0

一、引脚与寄存器基础

  • SWDIO =PA13,SWCLK =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_IO=1 // 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 串口下载恢复:

  1. 硬件操作:
    • 断电 → 将BOOT0(PD03)高电平→ 重新上电
    • 芯片进入ISP 编程模式,SWD 引脚自动恢复为调试状态
  2. 软件操作:
    • HDSC MCU Programmer或 Keil 通过UART(PA9/PA10)下载新固件
    • 新固件中去掉 SWD 转 GPIO 代码,即可恢复 SWD 下载

三、关键注意事项

  1. 下载窗口必须留:上电必须加 **≥2 秒延时 ** 再执行 SWD 转 GPIO,否则一上电就锁死 SWD,只能靠 ISP 救回
  2. ISP 是唯一恢复手段:量产务必预留UART(PA9/PA10)BOOT0引脚,用于救砖与升级
  3. 上电默认状态:复位后 SWD 引脚默认上拉输入,切 GPIO 前电平不受控,硬件需做防护
  4. 寄存器操作顺序:必须先解锁 SYSCTRL2,再写 SYSCTRL1,否则配置无效

四、总结

  • 运行时:延时后切 GPIO,PA13/PA14 正常做 IO
  • 下载时:BOOT0 拉高 + ISP 串口,即可恢复 SWD 下载
  • 安全边界:延时窗口 + ISP 备份,兼顾 IO 复用与下载可靠性
http://www.jsqmd.com/news/669759/

相关文章:

  • OpCore-Simplify:三步搞定黑苹果配置,告别繁琐手动调试的终极方案
  • nanobot应用场景:高校学生用nanobot+Qwen3搭建课程实验AI助教系统
  • Zabbix面试官最爱问的10个实战问题,附保姆级解答与避坑指南
  • Pixel Language Portal 开发利器:在 IDEA 中集成模型实现智能代码审查与重构建议
  • Qwen3.5-9B-AWQ-4bit惊艳效果:模糊截图、低光照图、多列表格的OCR鲁棒性展示
  • ENVI实战:用ROI工具和外部矢量文件,5分钟搞定复杂区域的精准图像裁剪
  • 实现鼠标滚轮在容器滚动到底部后无缝传递至页面的平滑过渡
  • C++实现带头双向链表高效增删查改
  • c语言指的是什么意思
  • Internet Protocol Version 8(IPv8)技术草案
  • 浅学线性回归与逻辑回归
  • 降AI率工具哪个好上手?嘎嘎降AI从注册到出结果完整教程
  • 从源头杜绝损坏!EV录屏高手都在用的MKV格式录制与无损修复全攻略
  • DAMO-YOLO手机检测结果结构化解析:JSON输出格式与数据库存储设计
  • 【Gazebo进阶指南】仿真调试利器:日志记录与场景复现实战
  • LobeChat应用指南:如何利用可扩展插件,定制个性化机器人?
  • 2026机场护栏网厂家推荐 产能规模与专利技术双领先(产能+专利+服务) - 爱采购寻源宝典
  • 算法4.19好题推荐
  • 移动端未来:探讨Qwen3-ForcedAligner-0.6B在Android端的量化部署可能
  • PyTorch 2.8 镜像下的C++扩展开发指南:提升模型推理性能
  • 5步搞定Gemma-3-12B-IT:无需代码基础,快速搭建AI对话平台
  • 别再手动拔跳线帽了!STM32串口下载的BootLoader原理与一键下载电路实战(FlyMcu配置详解)
  • 雪女-斗罗大陆-造相Z-Turbo环境配置进阶:Ubuntu系统依赖深度解析
  • 2026护栏网厂家推荐排行榜产能与专利双优的权威选择 - 爱采购寻源宝典
  • Wan2.2-I2V-A14B多场景应用:跨境电商商品多角度展示视频自动生成
  • 不止于TSP:用Python+LKH算法解决车辆路径规划(VRP)问题的思路与代码示例
  • Janus-Pro-7B赋能运维可视化:自动生成服务器监控图表分析报告
  • Python Web应用负载均衡方案_结合Nginx权重设置实现高可用
  • Ollama+DeepSeek-R1实战:快速部署推理模型,解决复杂问题
  • 从正则表达式到词法分析器:图解NFA确定化与最小化的完整工作流