新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stm32 怎樣釋放pa15,pb3,pb4作為gpio口使用

stm32 怎樣釋放pa15,pb3,pb4作為gpio口使用

作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏
當(dāng)STM32引腳不夠用時(shí),可以分配JTAG/SWD的引腳作為GPIO口使用。
查看數(shù)據(jù)手冊(cè)的引腳定義可以看到,PA15引腳復(fù)位后的主要功能為JTDI,PB3為JTDO,PB4為JNTRST,如果把這些引腳作為普通引腳使用時(shí),需要進(jìn)行重映射。

通過(guò)設(shè)置復(fù)用重映射和調(diào)試I/O配置寄存器(AFIO_MAPR)的SWJ_CFG[2:0]位,配置為“啟用SW-DP,關(guān)閉JTAG-DP”來(lái)釋放PA15(JTDI), PB3(JTDO), PB4(NJTRST)引腳。詳見(jiàn)中文參考手冊(cè)V10.2版本p118 表35 調(diào)試端口映像。
庫(kù)文件中幾個(gè)相關(guān)的宏定義分別為:
#defineGPIO_Remap_SWJ_NoJTRST ((uint32_t)0x00300100) /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */ // 完全SWJ(JTAG-DP + SW-DP),但沒(méi)有JNTRST
#defineGPIO_Remap_SWJ_JTAGDisable((uint32_t)0x00300200) /*!< JTAG-DP Disabled and SW-DP Enabled */ // 關(guān)閉JTAG-DP,啟用SW-DP
#defineGPIO_Remap_SWJ_Disable ((uint32_t)0x00300400) /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */ // 關(guān)閉JTAG-DP,關(guān)閉SW-DP
另外,注意PB3的腳注,“I/O口只可在不使用異步跟蹤時(shí)使用”,詳見(jiàn)中文參考手冊(cè)V10.2版本p748 29.16.3 調(diào)試MCU配置寄存器。
DBGMCU_CR寄存器的bit7:5(TRACE_MODE[1:0]和TRACE_IOEN),配置TRACE_IOEN=0,不分配跟蹤引腳。見(jiàn)下表。
相關(guān)代碼:
DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5); // 不分配跟蹤引腳,釋放PB3
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); // 使能復(fù)用時(shí)鐘和引腳GPIO時(shí)鐘
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); // 切換到SWJ調(diào)試,釋放PA15,PB4, PB3


關(guān)鍵詞: stm32gpio

評(píng)論


技術(shù)專區(qū)

關(guān)閉