[研电赛技术支持] GD32E103 PA15 JTDI 配置使用的正确方法

[复制链接]
1464|0
荣陶陶 发表于 2025-9-6 08:50 | 显示全部楼层 |阅读模式
   您在使用GD32E103 PA15可能会发现这个管脚怎么配置都不好使,不能当普通的GPIO用。查手册和网上的文章都没有一个清晰的解决方案,只好下次硬件设计时避开这个管脚。

      理论上用以下配置语句应该能正确配置当作输入管脚使用:

gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_15);

      理论上用以下配置语句应该能正确配置当作输出管脚使用:

gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_15);

      可是调试起来咋都不好使。

      没有那么高深,点到为止。仔细查阅手册会发现这个管脚的Default 功能是 JTDI 。而PA15 (GPIO) 是 Remap功能:

Default: JTDI

Alternate: SPI2_NSS , I2S2_WS

Remap: TIMER1_CH0, TIMER1_ETI PA15 , SPI0_NSS

      所以应该按照以下方式配置输入:

rcu_periph_clock_enable(RCU_AF);

rcu_periph_clock_enable(RCU_GPIOA);

//Disable JTAG for PA15   

gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE);

gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_15);

      应该按照以下方式配置输出:

rcu_periph_clock_enable(RCU_AF);

rcu_periph_clock_enable(RCU_GPIOA);

//Disable JTAG for PA15   

gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE);

gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_15);

      网上看到的文章多半推荐以下语句,是不好使的:

gpio_pin_remap_config(GPIO_SWJ_DISABLE_REMAP,ENABLE);

      如果GPIO资源紧张,要使用 PA13(JTMS, SWDIO) , PA14(JTCK, SWCLK)  。方法一样,但其初始化和使用需要放到SWD基本可以不用的控制逻辑里。如需观察,需要用撤掉SWD调试器,用逻辑分析仪+串口LOG的方式调试。

      GD32 的其他系列以及STM32也存在类似问题。网友可以举一反三。
————————————————
版权声明:本文为CSDN博主「小庐知行」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tideyin123/article/details/150874551

您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

240

帖子

1

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