stm32f103c8t6的pb8 pb9配置串口
时间: 2025-02-06 13:13:12 浏览: 93
### STM32F103C8T6 PB8 和 PB9 作为 UART 使用的配置
对于STM32F103C8T6微控制器而言,要将PB8和PB9设置为UART功能,需遵循特定的初始化过程。通常情况下,在此型号中,PB8和PB9并不直接对应于USART的标准TX/RX引脚;然而,通过重映射功能可以实现这一目的。
为了使能GPIO端口B上的这些引脚用于串行通信接口(即USART),应当执行如下操作:
- 配置RCC时钟以启用相应的外设电源供应。
- 设置GPIO模式为复用推挽输出并调整速度参数来适应应用需求。
- 利用AFIO寄存器完成信号线路的选择与重新定位至目标I/O位置[^1]。
下面是一个简单的代码片段展示如何利用标准库函数来进行上述配置:
```c
#include "stm32f1xx_hal.h"
void MX_USART1_UART_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* Enable clocks */
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_USART1_CLK_ENABLE();
/* Configure USART1_TX (PB6) and USART1_RX (PB7), but here we want to remap them to PB8/PB9 */
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn);
// Remap the alternate function of PB8 & PB9 from TIM4_CH3/TIM4_CH4 to USART1_TX/USART1_RX.
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
/**USART1 GPIO Configuration
PB8 ------> USART1_TX
PB9 ------> USART1_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; // Alternate Function Push-Pull mode
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
}
```
这段程序展示了怎样激活必要的资源并将指定引脚分配给USART的功能。值得注意的是,这里选择了USART1,并且启用了其中断服务例程以便处理接收的数据。同时,还设置了波特率和其他传输属性。
阅读全文
相关推荐


















