最近在做項目時需要用到PB3作爲檢測按鍵檢測引腳。該引腳默認低電平,當按鍵按鍵按下時電平信號拉高。因此將按鍵配置爲下拉輸入。相應始終也打開使能,但是按鍵按下後,硬件有反應按鍵按下,但是軟件邏輯不能檢測到引腳電平拉高。查閱相關資料後,發現STM3210X系列的芯片在復位後,會將PA13/14/15 PB3/4默認配置爲JTAG功能。
當選擇SW模式燒錄程序時:SWD只需用到PA13 / JTMS,PA14 / JTCK兩根線,NREST可以接可不接。
JTAG燒錄口下的PB4 / JNTRST,PB3 / JTDO和PA15 / JTDI就可以作爲普通IO使用。
因爲我們的工程選擇的是SW的模式燒錄,因此需要釋放PB3引腳。故在IO口配置的代碼中加入一行代碼即可
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
實際測試:PB3仍然不能作爲普通引腳使用,原因是初始化化順序導致的。具體參考博客爲以下:
https://blog.csdn.net/a18156289516/article/details/60332934
這裏的解釋下三個宏定義:
第一個宏定義:SWJ和JTAG全部使能
第二個宏定義:SWJ使能,JTAG失能。(如上所示)
第三個宏定義:SWJ和JTAG全部失能。(慎選)
#define GPIO_Remap_SWJ_NoJTRST ((uint32_t)0x00300100) /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */
#define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x00300200) /*!< JTAG-DP Disabled and SW-DP Enabled */
#define GPIO_Remap_SWJ_Disable ((uint32_t)0x00300400) /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */
本人第一次由於粗心大意,直接選擇宏定義進行的配置,導致SWG和JTAG全部失能,從而使得單片機不能再下程序進去。這就十分的蛋疼了。關於這種情況,網上也有相關的處理方法,這裏不做詳細的贅述,提供以下鏈接。
https://blog.csdn.net/q759040024/article/details/23616409
至此STM32的PB3引腳就可以作爲普通的IO口進行使用了。