有沒有小伙伴遇到這種情況:在使用GD32F303的時(shí)候,想要將PA13~15以及PB3和PB4作為IO口來使用,卻怎么也不成功呢?下面小編就來告訴大家原因。
我們先來看下GD32F303 datasheet中這幾個(gè)引腳的定義:


原來,這幾個(gè)引腳比較特殊,它們在默認(rèn)情況下,是用于調(diào)試的JTAG/SWD口功能,想要當(dāng)做普通IO口或者其他復(fù)用功能來使用需要進(jìn)行“remap”。
那么如何進(jìn)行remap呢?我們再來看下GD32F303 用戶手冊中的《GPIO和AFIO》章節(jié)中的JTAG/SWD 備用功能重映射介紹:


可以看到,remap有多種模式可以選擇,比如將SWJ_CFG設(shè)置為“010”,那么就可以保留SWD功能,即PA13和PA14還可以用于調(diào)試,而PA15、PB3和PB4則被“釋放”,從而可以當(dāng)做普通IO或者其他復(fù)用功能引腳使用;若設(shè)置SWJ_CFG為“100”,那么PA13~PA15、PB3、PB4都可以當(dāng)做普通IO口來使用,但注意,這個(gè)時(shí)候要想再用SWD模式去調(diào)試MCU會失敗哦。
現(xiàn)在來教大家如何通過庫函數(shù)實(shí)現(xiàn)JATG/SWD的remap功能。
通過用戶手冊我們可以看到SWJ_CFG【2:0】位于AFIO_PCF0中,所以必須要先打開AF時(shí)鐘:

然后再使用gpio_pin_remap_config函數(shù)進(jìn)行remap配置就可以了。所以完整的代碼是:

調(diào)用該段代碼后,小伙伴們就可以將這些特殊引腳配置為你想要的功能啦!