7
社区成员




之前也是在利用STM32F103ZET6做实验室自动控制设备时遇到这个问题。当时发现PB3,PB4和PA13无法正常使用。后续查了其他博主的博客得到了解决,这里贴一下GPIO初始化之PB3/PB4/PA13/PA14/PA15引脚的复用
需要注意的是,博客中提到的PB3,PB4,PA13,PA14和PA15这几个GPIO有三种状态,上电默认开启JTAG和SWJ功能。当设置成GPIO_Remap_SWJ_JTAGDisable后,PB3,PB4和PA15可以正常使用,但是PA13和PA14仍然不可以使用。只有设置成GPIO_Remap_SWJ_Disable时,禁用掉JTAG和SWJ之后,全部引脚才可以正常使用。
在GPIO初始化时加上一下代码即可
// 禁用JTAG
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE); // 要先开时钟,再重映射
// GPIO_Remap_SWJ_NoJTRST 恢复引脚默认功能
// GPIO_Remap_SWJ_JTAGDisable 禁用JTAG,但是SWJ仍开启,PB3,PB4,PA15可作为正常IO使用
// GPIO_Remap_SWJ_Disable 直接禁用JTAG和SWJ,无法烧写程序,但是全部JTAG引脚可使用