新聞中心

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

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

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

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


        關(guān)鍵詞: stm32gpio

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 芒康县| 天峻县| 彝良县| 全椒县| 桐城市| 房山区| 翁源县| 县级市| 舞阳县| 泾源县| 迁安市| 铜陵市| 临泉县| 如皋市| 黑山县| 武汉市| 朝阳县| 五大连池市| 吉木乃县| 古交市| 治多县| 武宣县| 雅江县| 弋阳县| 元氏县| 正安县| 定远县| 金塔县| 苍山县| 苏尼特右旗| 平塘县| 吕梁市| 龙川县| 阿克苏市| 得荣县| 稷山县| 汪清县| 桂林市| 夹江县| 横山县| 临洮县|