[软件资料] JTAG脚用作普通GPIO

[复制链接]
 楼主| forgot 发表于 2025-4-30 11:45 | 显示全部楼层 |阅读模式
将JTAG引脚用作普通IO时,需要通过复用功能重映射来释放调试接口占用的引脚资源。
  1. void JTAG_To_GPIO_Config(void)
  2. {
  3.     // 关闭JTAG功能(保留SWD调试接口)
  4.     AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;

  5.     // 配置释放的JTAG引脚为普通IO
  6.     // PA13/PA14/PA15配置
  7.     GPIO_InitTypeDef GPIO_InitStruct = {0};
  8.    
  9.     // PA13 -> 输出模式
  10.     GPIO_InitStruct.Pin = GPIO_PIN_13;
  11.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  12.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  13.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  14.    
  15.     // PA14 -> 输入模式带上拉
  16.     GPIO_InitStruct.Pin = GPIO_PIN_14;
  17.     GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  18.     GPIO_InitStruct.Pull = GPIO_PULLUP;
  19.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  20.    
  21.     // PB3 -> 复用功能(如SPI1_SCK)
  22.     GPIO_InitStruct.Pin = GPIO_PIN_3;
  23.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;      // 复用推挽输出
  24.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  25.     HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  26. }
完全禁用SWD后,将无法通过调试器更新程序
建议保留SWD功能(AFIO_MAPR_SWJ_CFG_JTAGDISABLE)
若必须禁用所有调试接口,需保留BOOT0引脚用于ISP编程

10299823 发表于 2025-5-3 23:47 | 显示全部楼层
在特定情况下可以当作普通 GPIO
uptown 发表于 2025-5-4 01:04 | 显示全部楼层
优先使用SWD替代JTAG              
olivem55arlowe 发表于 2025-5-4 02:37 | 显示全部楼层
通过GPIO_PinRemapConfig函数关闭JTAG调试端口,释放引脚
wyde518 发表于 2025-5-4 10:53 | 显示全部楼层
可以完全禁用SWD,但必须利用复位脚,程序上电后增加一定延时
iyoum 发表于 2025-5-4 19:47 | 显示全部楼层
在资源受限的设计中,如果I/O资源紧张且JTAG功能不是必需的,复用JTAG引脚可能是一个合理的选择。
mmbs 发表于 2025-5-6 09:39 | 显示全部楼层
部分芯片的JTAG引脚可能与其他功能复用(如USART、TIM),需检查数据手册。
linfelix 发表于 2025-5-6 11:37 | 显示全部楼层
AFIO 时钟是配置引脚重映射的前提
plsbackup 发表于 2025-5-6 13:25 | 显示全部楼层
可能需要额外的配置来重映射这些引脚作为GPIO使用。
updownq 发表于 2025-5-6 15:15 | 显示全部楼层
使用ST-Link Utility等工具强制重新启用JTAG模式
elsaflower 发表于 2025-5-6 17:23 | 显示全部楼层
后续能通过SWD重新烧录程序。              
qiufengsd 发表于 2025-5-6 19:11 | 显示全部楼层
避免在原理图上将JTAG引脚作为固定拉高/拉低或连接其他信号,否则可能导致引脚状态冲突
uytyu 发表于 2025-5-6 21:28 | 显示全部楼层
在进行引脚功能切换之前,要检查硬件连接
sesefadou 发表于 2025-5-11 10:08 | 显示全部楼层
​​无法烧录程序​​        SWDIO/SWCLK被禁用
olivem55arlowe 发表于 2025-5-11 11:50 | 显示全部楼层
JTAG引脚默认用于调试和编程。
benjaminka 发表于 2025-5-11 17:29 | 显示全部楼层
你的电路设计支持这种转换,即没有外部设备依赖于JTAG引脚作为其默认用途。
zhengshuai888 发表于 2025-5-12 07:42 来自手机 | 显示全部楼层
复用成普通IO后会影响再次烧写程序
adolphcocker 发表于 2025-5-13 16:58 | 显示全部楼层
在将JTAG引脚复用为GPIO之前,必须确认这样做不会影响芯片的调试和测试功能。某些芯片在启动时可能需要JTAG信号进行初始化,或者在特定模式下需要保留JTAG功能。
lzbf 发表于 2025-5-13 19:19 | 显示全部楼层
禁用JTAG功能后,将无法通过JTAG接口进行调试或程序下载。
jkl21 发表于 2025-5-13 21:25 | 显示全部楼层
一旦JTAG引脚被重新配置为GPIO, 将失去通过JTAG进行调试的能力。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2064

主题

14492

帖子

59

粉丝
快速回复 在线客服 返回列表 返回顶部

2064

主题

14492

帖子

59

粉丝
快速回复 在线客服 返回列表 返回顶部