新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > stm32 怎样释放pa15,pb3,pb4作为gpio口使用

stm32 怎样释放pa15,pb3,pb4作为gpio口使用

作者:时间:2016-12-02来源:网络收藏
STM32引脚不够用时,可以分配JTAG/SWD的引脚作为GPIO口使用。
查看数据手册的引脚定义可以看到,PA15引脚复位后的主要功能为JTDI,PB3为JTDO,PB4为JNTRST,如果把这些引脚作为普通引脚使用时,需要进行重映射。

通过设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)的SWJ_CFG[2:0]位,配置为“启用SW-DP,关闭JTAG-DP”来释放PA15(JTDI), PB3(JTDO), PB4(NJTRST)引脚。详见中文参考手册V10.2版本p118 表35 调试端口映像。
库文件中几个相关的宏定义分别为:
#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 */ // 关闭JTAG-DP,启用SW-DP
#defineGPIO_Remap_SWJ_Disable ((uint32_t)0x00300400) /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */ // 关闭JTAG-DP,关闭SW-DP
另外,注意PB3的脚注,“I/O口只可在不使用异步跟踪时使用”,详见中文参考手册V10.2版本p748 29.16.3 调试MCU配置寄存器。
DBGMCU_CR寄存器的bit7:5(TRACE_MODE[1:0]和TRACE_IOEN),配置TRACE_IOEN=0,不分配跟踪引脚。见下表。
相关代码:
DBGMCU->CR = DBGMCU->CR & ~((uint32_t)1<<5); // 不分配跟踪引脚,释放PB3
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); // 使能复用时钟和引脚GPIO时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); // 切换到SWJ调试,释放PA15,PB4, PB3


关键词: stm32gpio

评论


技术专区

关闭