news 2026/4/24 15:55:52

华大HC32F460配置JTAG调试引脚为普通GPIO(PB03、PA15等)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华大HC32F460配置JTAG调试引脚为普通GPIO(PB03、PA15等)

背景

由于项目需要,使用的SWD调试对芯片进行下载与调试,未使用JTAG相关功能,同时GPIO引脚不够用,于是需要将PB03(JTDO/SWO)和PA15(JTDI)设置为普通的GPIO来使用;

问题

由于PB03(JTDO/SWO)和PA15(JTDI)默认用于JTAG功能,其无法直接像普通的IO口那样直接配置引脚复用,需要先关闭引脚对应的debug功能。
直接像普通GPIO引脚一样配置是无效的。

处理方法

使用GPIO_SetDebugPort函数进行配置。
该函数位于hc32_II_gpio.c文件中,函数定义如下:

/** * @brief GPIO debug port configure. Set debug pins to GPIO * @param [in] u8DebugPort: @ref GPIO_DebugPin_Sel for each product * @param [in] enNewState: An @ref en_functional_state_t enumeration value. * @arg ENABLE: set to debug port (SWD/JTAG) * @arg DISABLE: set to GPIO * @retval None */voidGPIO_SetDebugPort(uint8_tu8DebugPort,en_functional_state_tenNewState){/* Parameter validity checking */DDL_ASSERT(IS_GPIO_DEBUG_PORT(u8DebugPort));DDL_ASSERT(IS_FUNCTIONAL_STATE(enNewState));DDL_ASSERT(IS_GPIO_UNLOCK());if(ENABLE==enNewState){SET_REG16_BIT(CM_GPIO->PSPCR,((uint16_t)u8DebugPort&GPIO_PSPCR_SPFE));}else{CLR_REG16_BIT(CM_GPIO->PSPCR,((uint16_t)u8DebugPort&GPIO_PSPCR_SPFE));}}

其中输入参数定义为:

/** * @defgroup GPIO_DebugPin_Sel GPIO Debug Pin Selection * @{ */#defineGPIO_PIN_TCK(0x01U)#defineGPIO_PIN_TMS(0x02U)#defineGPIO_PIN_TDO(0x04U)#defineGPIO_PIN_TDI(0x08U)#defineGPIO_PIN_TRST(0x10U)#defineGPIO_PIN_DEBUG_JTAG(0x1FU)#defineGPIO_PIN_SWCLK(0x01U)#defineGPIO_PIN_SWDIO(0x02U)#defineGPIO_PIN_SWO(0x04U)#defineGPIO_PIN_DEBUG_SWD(0x07U)#defineGPIO_PIN_DEBUG(0x1FU)/** * @brief Functional state */typedefenum{DISABLE=0U,ENABLE=1U,}en_functional_state_t;

针对于我的关闭PA15和PB03的需求,进行如下配置即可:

// 关闭 PA15 (JTDI) 的调试功能,释放为普通 GPIOGPIO_SetDebugPort(GPIO_PIN_TDI,DISABLE);// 关闭 PB03 (JTDO/TRACESWO) 的调试功能,释放为普通 GPIOGPIO_SetDebugPort(GPIO_PIN_TDO,DISABLE);

而后即可按照普通的GPIO进行配置。

额外需要注意的

观察GPIO_DebugPin_Sel 的定义可以发现,JTAG和SWD的部分引脚底层是相同的,例如:

#define GPIO_PIN_TCK (0x01U)
#define GPIO_PIN_SWCLK (0x01U)
#define GPIO_PIN_TMS (0x02U)
#define GPIO_PIN_SWDIO (0x02U)

这意味着部分JTAG功能引脚被关闭会导致SWD引脚也无法工作。
例如关闭JTAG所有功能GPIO_PIN_DEBUG_JTAG,或TCK和SWCLK,均会导致SWD调试下载使用的GPIO_PIN_SWCLK、GPIO_PIN_SWDIO无法工作。
进而导致你没有一个口可用于调试和下载了。
此时,只能通过在线烧录器或离线烧录器,按下图所示,将芯片切换到串口烧写模式,从而擦除错误的代码,抢救芯片。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 23:46:10

全电动平板车服务商

全电动平板车服务商:杭州龙立智能科技的卓越之选在现代物流与工业生产领域,全电动平板车凭借其环保、高效等优势,成为了众多企业物料搬运的重要工具。而选择一家专业可靠的全电动平板车服务商,对于企业的生产运营至关重要。杭州龙…

作者头像 李华
网站建设 2026/4/17 22:14:30

当AI成为你的学术副驾驶:PaperZZ如何在不越界的前提下,帮你把毕业论文从“焦虑源”变成“高光时刻”——一个工科生的真实复盘与深度体验

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertation 引言:写论文不是一个人的战斗,但你得先找到靠谱的队友 凌晨两点,屏幕幽…

作者头像 李华
网站建设 2026/4/20 15:15:30

paperzz AI 文献综述藏的 “学术懒癌救星”:从文献堆里扒逻辑,3000 字拆透它的 “轻量学术辅助”

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 文献综述https://www.paperzz.cc/journalsReviewed 写文献综述大概是学术写作里最 “磨人” 的环节:翻几十篇文献却理不清脉络、相同观点重复堆砌、研究缺口找不准…… 当 “熬夜扒…

作者头像 李华
网站建设 2026/4/23 1:13:32

LobeChat部署常见错误汇总及解决方案(新手避坑指南)

LobeChat部署常见错误汇总及解决方案(新手避坑指南) 在如今大语言模型(LLM)快速普及的背景下,越来越多开发者希望将强大的AI能力落地为实际可用的聊天助手。但现实往往是:模型跑得起来,前端却连…

作者头像 李华
网站建设 2026/4/24 13:15:44

【机器学习Rademacher复杂度

目录 1. 引言 2. Rademacher 复杂度是什么 2.1 基本定义与数学表达 2.2 直观理解 3. Rademacher 复杂度的理论性质 3.1 上界性质 3.2 次加性 3.3 缩放性 4. Rademacher 复杂度的计算与估计 4.1 蒙特卡洛估计方法 4.2 常见函数类的复杂度上界 5. Rademacher 复杂度的…

作者头像 李华
网站建设 2026/4/22 6:40:32

LobeChat自动补全与流式输出体验优化技巧分享

LobeChat自动补全与流式输出体验优化技巧分享 在构建现代AI对话系统时,用户对“响应速度”和“交互自然度”的期待早已超越了简单的问答功能。我们不再满足于点击发送后等待几秒才看到整段回复——那种体验像是在和一台缓慢加载的终端通信,而非与一个智能…

作者头像 李华