STM32 PB3作爲普通IO口的使用方法

最近在做項目時需要用到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口進行使用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章