STM32F1系列PB3,PB4,PA13,PA14,PA15用作普通IO口的特殊配置
2017-05-22 21:58
615 查看
最近博主用STM32F103C8T6做了一个温度测控模块,用到PB3,PB4,PA15等引脚控制外设。发现不管怎么配置,这三个引脚都不能置零。后来发现是包括这三个引脚在内的PB3,PB4,PA13,PA14,PA15是特殊的IO口,用作JTAG/SWD仿真器的调试接口。其中PA13,PA14分别作为SWD调试的SWIO和SWCLK;PB3,PB4,PA13,PA14,PA15共同用于JTAG。这五个引脚的中英文描述如下图所示,图片来源于STM32F1参考手册:
这五个IO引脚非常特殊,正常情况下作为SWJ仿真器的调试引脚,如果要作为普通IO口使用需要特别的配置。以PA13引脚为例,该引脚在STM32F1数据手册中的描述如下图:
相较与其他的普通IO,PA13的Main function 为JTMS-SWDIO。反而普通IO口的功能在Alternate functions中的remap里。也就是说PA13要想当做普通IO口使用,就必须使用它复用功能中的重映射。因此就需要这样的两步操作:
一.在时钟配置中打开复用时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
二.对PA13引脚进行重映射: GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
步骤一比较好理解,这里重点叙述下步骤二的重映射操作。针对SWJ五个引脚的重映射操作方式在STM32F1参考手册中的中英文描述下图所示:
由上图可知,重映射的方式一共有三种。分别描述如下:
1.GPIO_Remap_SWJ_JTAGDisable: /*!< JTAG-DP Disabled and SW-DP Enabled */ 即能用PB3,PB4,PA15做普通IO,PA13&14用于SWD调试
2.GPIO_Remap_SWJ_Disable: /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */ 5个引脚全为普通引脚,但不能再用JTAG&SWD仿真器调试,只能用st-link调试
3.GPIO_Remap_SWJ_NoJTRST: /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */PB4可为普通IO口,JTAG&SWD正常使用,但JTAG没有复位
如果你用到所有的五个引脚当做普通IO口,那么上述步骤二中的重映射配置应写为GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); 如果你用PB3,PB4,PA15做普通IO,PA13&14用于SWD调试,则重映射配置应写为GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); 同理可配置只用PB4可为普通IO口的情况。
这五个IO引脚非常特殊,正常情况下作为SWJ仿真器的调试引脚,如果要作为普通IO口使用需要特别的配置。以PA13引脚为例,该引脚在STM32F1数据手册中的描述如下图:
相较与其他的普通IO,PA13的Main function 为JTMS-SWDIO。反而普通IO口的功能在Alternate functions中的remap里。也就是说PA13要想当做普通IO口使用,就必须使用它复用功能中的重映射。因此就需要这样的两步操作:
一.在时钟配置中打开复用时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
二.对PA13引脚进行重映射: GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
步骤一比较好理解,这里重点叙述下步骤二的重映射操作。针对SWJ五个引脚的重映射操作方式在STM32F1参考手册中的中英文描述下图所示:
由上图可知,重映射的方式一共有三种。分别描述如下:
1.GPIO_Remap_SWJ_JTAGDisable: /*!< JTAG-DP Disabled and SW-DP Enabled */ 即能用PB3,PB4,PA15做普通IO,PA13&14用于SWD调试
2.GPIO_Remap_SWJ_Disable: /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */ 5个引脚全为普通引脚,但不能再用JTAG&SWD仿真器调试,只能用st-link调试
3.GPIO_Remap_SWJ_NoJTRST: /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */PB4可为普通IO口,JTAG&SWD正常使用,但JTAG没有复位
如果你用到所有的五个引脚当做普通IO口,那么上述步骤二中的重映射配置应写为GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); 如果你用PB3,PB4,PA15做普通IO,PA13&14用于SWD调试,则重映射配置应写为GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); 同理可配置只用PB4可为普通IO口的情况。
相关文章推荐
- STM32C8T6 JTAG使用到PB3|PB4|PA13|PA14|PB15端口做普通IO时,需禁止JTAG!
- STM32C8T6 JTAG使用到PB3|PB4|PA13|PA14|PB15端口做普通IO时,需禁止JTAG!
- STM32把PC13、PC14、PC15、PB3、PB4、PA15作为普通IO使用
- STM32F10x系列的MCU配置PB3和PB4为普通IO口
- stm32 的PA13,PA14, PA15做普通IO口的问题
- STM32F10X系列的MCU配置PB3和PB4为普通IO口
- STM32的PC13、PC14、PC15用作普通IO口设置方法
- STM32F103x8B PB3、PB4、PA14、PA15引脚作为普通IO口使用
- 【STM32】JTAG IO复用 (PB4、PB3、PA15)
- stm32 PB3 PB4 PA15引脚作为普通IO口使用指南
- stm32 PB3 PB4 PA15引脚作为普通IO口使用指南
- STM32 PA15作普通IO用时的配置
- STM32 JNTRST JTDI JTDO(PB4 PB3 PA15)引脚用做普通IO方法
- stm32 PB3 PB4 PA15引脚作为普通IO口使用指南
- EC读书笔记系列之8:条款13、14、15
- PC13 PC14 PC15 才可以当普通IO用
- STM32 JTAG SWD (PB3 PB4用作普通IO)及启动模式
- STM32L PC13当IO口使用驱动LED,PC14,PC15外接晶振,且RTC正常...
- stm32 pc13~pc15 tamper-rtc OSC32-IN/OSC32-OUT 配置成IO口
- STM32F103的PC13、PB3和PB4定义为普通IO口使用