
STM32作为一款功能强大的集成芯片,内置了许多外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。而许多外设引脚除了拥有默认的端口外,还可以通过配置重映射寄存器,将引角映射到其他端口上,不仅是为了制版时布线方便,还可以潜在的减少信号的干扰。 1、端口复用的配置步骤 ① GPIO端口时钟使能。 ②复用外设时钟使能。 ③端口模式配置。(需要查找《STM32中文手册》中外设的GPIO的配置)需要该手册可以在公众号内回复:STM32中文手册 例:以PA9,PA10复用为串口1为例 //①IO时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //②外设时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //③初始化IO为对应的模式 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA9复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 浮空输入 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); ①使能GPIO时钟(重映射后的IO); ②使能功能外设时钟。 ③使能AFIO时钟,重映射必须使能AFIO时钟。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); ④ 开启重映射。 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); 注:需要根据第一个形参来确定是部分重映射还是全部重映射 |