什么是端口復用?
STM32中有很多內置外設,這些外設的引腳都是與GPIO復用的,什么時候復用呢?就是當一個GPIO作為內置外設引腳使用時,就叫做復用。比如串口1的發送接收引腳是PA9,PA10,當PA9,PA10作為USART的接收和發送引腳時,就是端口復用。
端口復用的配置過程
以PA9、PA10作為串口的接收發送為例
- 使能GPIO端口
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
- 使能外設時鐘
這里我們可以參考STM32手冊
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
- 端口模式配置
參考STM32手冊
//USART1_TX GPIOA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.9//USART1_RX GPIOA.10初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;//PA10GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.10
端口復用總結
每個GPIO口有很多功能,默認的是作為普通IO口,我們不用配置復用相關的東西,當作為其他功能時,這個時候就要配置復用相關代碼了
端口重映射
什么是端口重映射?
端口重映射是為了使不同器件封裝的外設I/O功能達到最優,可以把一些復用功能重新映射到其他一些引腳。當映射完成時,復用功能就不在映射到它們的原始引腳上了。
配置過程
- 使能GPIO
- 使能外設
- 使能AFIO時鐘
- 開啟重映射
GPIO_PinmapConfig()