有没有小伙伴遇到这种情况:在使用GD32F303的时候,想要将PA13~15以及PB3和PB4作为IO口来使用,却怎么也不成功呢?下面小编就来告诉大家原因。
我们先来看下GD32F303 datasheet中这几个引脚的定义:
原来,这几个引脚比较特殊,它们在默认情况下,是用于调试的JTAG/SWD口功能,想要当做普通IO口或者其他复用功能来使用需要进行“remap”。
那么如何进行remap呢?我们再来看下GD32F303 用户手册中的《GPIO和AFIO》章节中的JTAG/SWD 备用功能重映射介绍:
可以看到,remap有多种模式可以选择,比如将SWJ_CFG设置为“010”,那么就可以保留SWD功能,即PA13和PA14还可以用于调试,而PA15、PB3和PB4则被“释放”,从而可以当做普通IO或者其他复用功能引脚使用;若设置SWJ_CFG为“100”,那么PA13~PA15、PB3、PB4都可以当做普通IO口来使用,但注意,这个时候要想再用SWD模式去调试MCU会失败哦。
现在来教大家如何通过库函数实现JATG/SWD的remap功能。
通过用户手册我们可以看到SWJ_CFG【2:0】位于AFIO_PCF0中,所以必须要先打开AF时钟:
然后再使用gpio_pin_remap_config函数进行remap配置就可以了。所以完整的代码是:
调用该段代码后,小伙伴们就可以将这些特殊引脚配置为你想要的功能啦!
更多GD32 MCU相关咨询:https://www.gd32bbs.com/