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