19,504
社区成员
发帖
与我相关
我的任务
分享
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
函数解释:改变指定管脚的映射关系。即配置指定管脚的复用功能。
函数参数说明:GPIOx:gpio的分组/gpio端口;GPIO_PinSource:具体要配置成复用功能的管脚(如GPIO_Pin_0 GPIO_Pin_1这样的宏定义);GPIO_AF:选择该管脚要使用的复用功能。有如下配置:(注意:复用功能的配置要和实际管脚支持的复用功能匹配)
GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin toAF0 (default after reset)
GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2)to AF0 (default after reset)
GPIO_AF_TAMPER: Connect TAMPER pins(TAMPER_1 and TAMPER_2) to AF0 (default after reset)
GPIO_AF_SWJ: Connect SWJ pins (SWD andJTAG)to AF0 (default after reset)
GPIO_AF_TRACE: Connect TRACE pins to AF0(default after reset)
GPIO_AF_TIM1: Connect TIM1 pins to AF1
GPIO_AF_TIM2: Connect TIM2 pins to AF1
GPIO_AF_TIM3: Connect TIM3 pins to AF2
GPIO_AF_TIM4: Connect TIM4 pins to AF2
GPIO_AF_TIM5: Connect TIM5 pins to AF2
GPIO_AF_TIM8: Connect TIM8 pins to AF3
GPIO_AF_TIM9: Connect TIM9 pins to AF3
GPIO_AF_TIM10: Connect TIM10 pins to AF3
GPIO_AF_TIM11: Connect TIM11 pins to AF3
GPIO_AF_I2C1: Connect I2C1 pins to AF4
GPIO_AF_I2C2: Connect I2C2 pins to AF4
GPIO_AF_I2C3: Connect I2C3 pins to AF4
GPIO_AF_SPI1: Connect SPI1 pins to AF5
GPIO_AF_SPI2: Connect SPI2/I2S2 pins to AF5
GPIO_AF_SPI4: Connect SPI4 pins to AF5
GPIO_AF_SPI5: Connect SPI5 pins to AF5
GPIO_AF_SPI6: Connect SPI6 pins to AF5
GPIO_AF_SAI1: Connect SAI1 pins to AF6 forSTM32F42xxx/43xxx devices.
GPIO_AF_SPI3: Connect SPI3/I2S3 pins to AF6
GPIO_AF_I2S3ext: Connect I2S3ext pins toAF7
GPIO_AF_USART1: Connect USART1 pins to AF7
GPIO_AF_USART2: Connect USART2 pins to AF7
GPIO_AF_USART3: Connect USART3 pins to AF7
GPIO_AF_UART4: Connect UART4 pins to AF8
GPIO_AF_UART5: Connect UART5 pins to AF8
GPIO_AF_USART6: Connect USART6 pins to AF8
GPIO_AF_UART7: Connect UART7 pins to AF8
GPIO_AF_UART8: Connect UART8 pins to AF8
GPIO_AF_CAN1: Connect CAN1 pins to AF9
GPIO_AF_CAN2: Connect CAN2 pins to AF9
GPIO_AF_TIM12: Connect TIM12 pins to AF9
GPIO_AF_TIM13: Connect TIM13 pins to AF9
GPIO_AF_TIM14: Connect TIM14 pins to AF9
GPIO_AF_OTG_FS: Connect OTG_FS pins to AF10
GPIO_AF_OTG_HS: Connect OTG_HS pins to AF10
GPIO_AF_ETH: Connect ETHERNET pins to AF11
GPIO_AF_FSMC: Connect FSMC pins to AF12
GPIO_AF_FMC: Connect FMC pins to AF12 forSTM32F42xxx/43xxx devices.
GPIO_AF_OTG_HS_FS: Connect OTG HS(configured in FS) pins to AF12
GPIO_AF_SDIO: Connect SDIO pins to AF12
GPIO_AF_DCMI: Connect DCMI pins to AF13
GPIO_AF_LTDC: Connect LTDC pins to AF14 forSTM32F429xx/439xx devices.
GPIO_AF_EVENTOUT: Connect EVENTOUT pins toAF15代码示例:
示例一:把gpioa6配置成输出管脚,并配置成高电平
GPIO_InitTypeDefGPIO_InitStruct;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
GPIO_InitStruct.GPIO_Pin= GPIO_Pin_6;
GPIO_InitStruct.GPIO_Mode= GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_PuPd= GPIO_PuPd_UP;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
示例二:把gpioe4配置成输入
GPIO_InitTypeDefGPIO_InitStruct;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
GPIO_InitStruct.GPIO_Pin= GPIO_Pin_4;
GPIO_InitStruct.GPIO_Mode= GPIO_Mode_IN;
GPIO_InitStruct.GPIO_PuPd= GPIO_PuPd_UP;
GPIO_Init(GPIOE,&GPIO_InitStruct);
示例三:配置复用功能 PA9 PA10 配置成串口1的收发接口
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//使能GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1时钟
//串口1对应引脚复用映射
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);//GPIOA9复用为USART1
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//GPIOA10复用为USART1
//USART1端口配置
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9与GPIOA10
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF;//复用功能
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz; //速度50MHz
GPIO_InitStructure.GPIO_OType= GPIO_OType_PP; //推挽复用输出
GPIO_InitStructure.GPIO_PuPd= GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA9,PA10
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;
GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_2);
备用功能配置,通过AF选择管脚备用功能