都是stm32的JTAG引腳惹的禍
阿新 • • 發佈:2019-02-05
轉載請註明出處:http://blog.csdn.net/qq_26093511/article/category/6094215
最近在除錯08介面的LED顯示屏,使用的是自己做的STM32板子。
除錯的時候,突然發現顯示屏,怎麼都不亮,我就開始懷疑人生了。。。。。。。。
難道是程式問題?
吧啦吧啦的查詢時序圖,修改修改,加延時。。。。然而並沒有什麼卵用!唉,都讓我懷疑是不是引腳接錯了,反覆測量後發現引腳確實是對的
難道是硬體問題?
我把不需要的程式全部註釋掉!
只讓STM32相應的08介面的IO口 全部輸出高電平,測量結果正常。
只讓STM32相應的08介面的IO口 全部輸出低電平,結果發現PA15這個引腳輸出的是高電平。輸出有問題啊!
最後查詢STM32f10x系列的手冊,結果發現STM32F10x系列的MCU復位後,PA13/14/15 & PB3/4預設配置為JTAG功能。
oh ,no ! 折磨我兩天的問題,竟然是JTAG惹的禍!
為了充分利用MCU I/O口的資源,把這些埠設定為普通I/O口。
具體方法如下:
//開啟AFIO 時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // 改變指定管腳的對映 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP) GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); // 改變指定管腳的對映 GPIO_Remap_SWJ_JTAGDisable ,JTAG-DP 禁用 + SW-DP 使能 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
注意:AFIO 時鐘未設定,GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE) 這句不會生效,也就是要先設定時鐘,才能配置相應埠
最後,感謝鄭老師的指導!