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