stm32 有些管脚它上电默认的功能不是通用 GPIO,比如 JTAG 与SWJ 调试管脚,所以,如果你想使用这几个管脚作为通用 IO 的话,就必须将 JTAG 与 SWJ 功能关闭,以及开启 AFIO 时钟
(AFIO时钟未设置,GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE)这句不会生效,也就是要先设置时钟,才能配置相应端口,后变换了下顺序,先设RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);再调用GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE)就完美可以了)最近博主用 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 口使用,就必须使用它复用功能中的重映射