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

2021-10-04 01:19:05 字數 1112 閱讀 5097

最近在做專案時需要用到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);

這裡的解釋下三個巨集定義:

第乙個巨集定義: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全部失能,從而使得微控制器不能再下程式進去。這就十分的蛋疼了。關於這種情況,網上也有相關的處理方法,這裡不做詳細的贅述,提供以下鏈結。

至此stm32的pb3引腳就可以作為普通的io口進行使用了。

STM32F103 PB3 作為 普通IO使用

花了一堆時間除錯,要將pb3作為輸入口使用,查了很多文章,試了一下午,終於 rcc apb2periphclockcmd rcc apb2periph afio,enable 必要 rcc apb2periphclockcmd rcc apb2periph gpiob,enable 必要 gpio ...

STM32之JTAG口作為普通IO使用

stm32f10x系列的mcu復位後,pa13 14 15 以及pb3 4預設配置為jtag功能。有時我們為了充分利用mcu i o口的資源,會把這些埠設定為普通i o口。jtag對應io jtms pa13 jtck pa14 jtdi pa15 jtdo pb3 jnrst pb4swd對應io...

STM32 中JTAG 引腳作為普通IO口設定方法

第一次畫stm32 的pcb 因為採用了swd 除錯,認為jtag的引腳pb3,pb4,沒有用到就做了普通io口,麻煩從此引起了。設定pb3,pb4均為輸出口,且輸出高電平,用萬用表測量,pb4為高,pb3不是高電平,在看mdk 中的暫存器值,pb3,pb4都是高啊?暫存器的值怎麼和實際的值不一樣了...