芯源半导体CW32
直播中

发烧友推温针

9年用户 866经验值
擅长:光电显示
私信 关注
[经验]

将JTAG引脚用作普通IO

将JTAG引脚用作普通IO时,需要通过复用功能重映射来释放调试接口占用的引脚资源。

  • void JTAG_To_GPIO_Config(void)
  • {
  •     // 关闭JTAG功能(保留SWD调试接口)
  •     AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE;

  •     // 配置释放的JTAG引脚为普通IO
  •     // PA13/PA14/PA15配置
  •     GPIO_InitTypeDef GPIO_InitStruct = {0};

  •     // PA13 -> 输出模式
  •     GPIO_InitStruct.Pin = GPIO_PIN_13;
  •     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  •     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  •     HAL_GPIO_Init(GPIOA,  GPIO_InitStruct);

  •     // PA14 -> 输入模式带上拉
  •     GPIO_InitStruct.Pin = GPIO_PIN_14;
  •     GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  •     GPIO_InitStruct.Pull = GPIO_PULLUP;
  •     HAL_GPIO_Init(GPIOA,  GPIO_InitStruct);

  •     // PB3 -> 复用功能(如SPI1_SCK)
  •     GPIO_InitStruct.Pin = GPIO_PIN_3;
  •     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;      // 复用推挽输出
  •     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  •     HAL_GPIO_Init(GPIOB,  GPIO_InitStruct);
  • }

完全禁用SWD后,将无法通过调试器更新程序
建议保留SWD功能(AFIO_MAPR_SWJ_CFG_JTAGDISABLE)
若必须禁用所有调试接口,需保留BOOT0引脚用于ISP编程


更多回帖

发帖
×
20
完善资料,
赚取积分