首先来说下什么是端口复用。
STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。
其实说白了,简单易懂的说,就是某些普通的外设引脚也可以用来其它功能。比如说那我使用的正点原子哥的板子来说吧,串口1 的发送接收引脚是PA9,PA10,当我们把PA9,PA10不用作普通的GPIO口,而用做复用功能串口1的发送接收引脚的时候,叫端口复用。
接下来说下端口复用的配置过程
首先,GPIO端口时钟使能。(这个不管用不用端口复用,要使用某个IO口必须要对时钟进行使能)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
接下来就是你要使能复用外设时钟。(这里以串口1为例)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
接下里就是端口模式配置。 GPIO_Init()函数。
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;