STM32使用SWD默認(rèn)管腳PA13 PA14
前天在STM32一個(gè)項(xiàng)目開發(fā)時(shí),遇到了一個(gè)問題即想使用STM32的SWD默認(rèn)管腳PA13或者PA14,當(dāng)時(shí)使用的單片機(jī)型號(hào)為STM32F103VET6,該單片機(jī)為100pin單片機(jī),這么多的管腳按理說一般的應(yīng)用不會(huì)出現(xiàn)使用這么的管腳的,但是,在繪制原理圖和設(shè)計(jì)PCB時(shí)并未將全部的引腳引出,到最后焊好后可供擴(kuò)展的IO就只有這個(gè)PA13 PA14了,所以就只能使用這個(gè)兩個(gè)IO口了。
實(shí)際使用這個(gè)兩個(gè)IO口十分簡單,但考慮到很多人沒有試過,且肯定和我開始一樣存在一個(gè)疑問且不敢輕易嘗試,那就是:將這個(gè)SWD改成普通IO口后,我用SWD方式還能燒寫程序么?單片機(jī)會(huì)不會(huì)鎖死?
首先,先講述下怎樣將這個(gè)SWD端口做為普通IO,總共分如下幾步:
1.RCC配置中先RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
2.在GPIO配置中禁用 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable , ENABLE);
3.在GPIO中就可以隨意定義這個(gè)PA13 PA14的管腳模式了。
程序編好后,可以通過SWD模式輕松將這個(gè)程序燒寫進(jìn)去,但是注意,當(dāng)你燒寫完這個(gè)程序的單片機(jī)再去用SWD方式燒寫別的程序時(shí),尷尬的事情就發(fā)生了,無法如第一次那樣順利的燒寫了!為什么呢?因?yàn)镾WD下載器連接到單片機(jī)時(shí),單片機(jī)就會(huì)因上電工作在運(yùn)行模式上去了,而這個(gè)SWD管腳剛被修改成普通IO了,即無法進(jìn)行通信,所以解決辦法就是不讓單片機(jī)在運(yùn)行模式上去,那辦法有兩個(gè),第一就是通過BOOT1和BOOT0將它設(shè)置成ISP模式,第二就是干脆用ISP模式去燒寫。
我親自試驗(yàn)過,以上兩種方式均可以,不過如果你就堅(jiān)持用SWD方式且在運(yùn)行模式下燒寫,答案只有一個(gè),沒門!
所以建議:如果你的單片機(jī)只有SWD接口的最小系統(tǒng)板,BOOT管腳固定在運(yùn)行模式配置的,切勿進(jìn)行以上的修改。如果單片機(jī)有SWD和串口,且BOOT管腳引出帶跳線的,那么放心修改使用,沒問題。不過如果IO口不緊張的情況下,PA13 14做為SWD專用端口,十分不建議修改為普通IO,即便是你硬件有SWD和ISP