复用(AF,alternate function)功能
简单理解就是,一个GPIO引脚及可以做普通IO,又可以做数据传输串口
使用步骤
1. 先使能GPIO的时钟 //下图中使能GPIOA
2. 使能串口时钟 //下图使能USART1
3. 设置好串口设置模式 //根据下面第二个图片设置端口模式
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//①IO时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//②外设时钟使能
//③初始化IO为对应的模式
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);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10 PA.10 浮空输入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
下图中PA8,9就是有服用功能:USART1,等复用功能
重映射remap
简单说就是将一个端口的复用串口等价到另外端口拥有这个串口功能,但并不是随意映射的,需要根据这个芯片硬件有这个映射功能。为了布线方便。
操作步骤:
1. 使能被重映射的GPIO端口
2. 使能被重映射的外设时钟(UART等)
3. 使能AFIO时钟
4. 进行重映射
1.使能GPIO时钟(重映射后的IO);
2.使能功能外设时钟(例如串口1);
3.使能AFIO时钟。重映射必须使能AFIO时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
4.开启重映射。
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
根据第一个参数,来确定是部分重映射还是全部重映射
下图中就是USART3的功能也可以映射到PD上面