关于STM32F103系列PA13,PA14,PA15,PB3,PB4初始化无效的问题
程序员文章站
2024-02-23 20:28:04
...
最近在调试STM32F103C8的最小系统板,发现PA15,PB3,PB4无论如何初始化都无效.
然后经过一轮查询发现PA13,PA14,PA15,PB3,PB4是被复用功能重映射为调试下载器所用的引脚的,而我这边因为用的是ST-LINK,只使用了其中的PA13,PA14作为调试引脚,剩余三个引脚给的原理图没有说明,但是因为STM32上电默认是JTAG模式,所以如果需要使用的话需要对复用功能进行设置.
具体设置在中文参考手册8.3.5 JTAG/SWD复用功能重映射章节
对应的标准库开启代码如下:
// 时钟初始 使用复用重映射功能需要开启对应时钟 否者无效
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
// 标准库自带重映射设置函数
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);函数中 GPIO_Remap_SWJ_JTAGDisable 参数为选组
GPIO_Remap_SWJ_NoJTRST 为上图中的001组
GPIO_Remap_SWJ_JTAGDisable 为上图中的010组 该模式下ST-LINK仍然能够正常调试 多3个管脚可供正常使用
GPIO_Remap_SWJ_Disable 为上图中的100组 该模式下无法进行任何调试
000组为默认组 没有设置参数 如果需要选择的话用标准库只能使用反初始函数 GPIO_AFIODeInit 但是其他复用配置也会丢失
设置完上述参数后,可用的I/O引脚正常设置即可,例如要设置为推挽输出,设置为GPIO_Mode_Out_PP即可,无需设置为GPIO_Mode_AF_PP.