STM32的JTAG關閉方法和SWD的使用
JTAG占用太多IO口,而SWD只需要兩條線,在IO資源緊張的時候,關閉JTAG是很有必要的。
網上很多關閉JTAG的方法很簡單,一句重定義就可以了。
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//IO口重定義,JTAG關閉
但是,要注意一個事情:務必在關閉JTAG前打開AFIO的時鐘,否則關不掉,JTAG占的那幾個IO也不能用。
所以,應該是這樣:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //開AFIO時鐘使能
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//IO口重定義,JTAG關閉
關于SWD的使用,很多人說兩條線就可以了,手冊里也說使用兩條線即可,但還是有網友說兩條線無法調試。
其實問題出在復位上,這一點手冊里沒有提到。
如果僅用雙線調試,必須釋放掉RST腳,接上拉電阻是可以的,但不可以直接接VDD,很多場合RST腳是受控制的,例如外部復位芯片、其他主控單片機等。
所以,不妨在其之間串一個1K電阻,問題就解決了。