写个stm32的串口初始化函数
时间: 2024-05-15 22:15:59 浏览: 91
以下是一个简单的STM32串口初始化函数,使用的是HAL库:
```c
void InitUART(UART_HandleTypeDef *huart, uint32_t BaudRate)
{
huart->Instance = USART1; // 选择串口1
huart->Init.BaudRate = BaudRate; // 设置波特率
huart->Init.WordLength = UART_WORDLENGTH_8B; // 数据位8位
huart->Init.StopBits = UART_STOPBITS_1; // 停止位1位
huart->Init.Parity = UART_PARITY_NONE; // 无校验位
huart->Init.Mode = UART_MODE_TX_RX; // 发送接收模式
huart->Init.HwFlowCtl = UART_HWCONTROL_NONE; // 无硬件流控制
huart->Init.OverSampling = UART_OVERSAMPLING_16; // 16倍过采样
if (HAL_UART_Init(huart) != HAL_OK) // 初始化串口
{
Error_Handler(); // 如果初始化失败,执行错误处理函数
}
}
```
调用该函数时,需要传递一个`UART_HandleTypeDef`类型的指针,以及所需的波特率。例如,在主函数中调用该函数:
```c
UART_HandleTypeDef huart1; // 定义一个串口句柄
int main(void)
{
HAL_Init(); // 初始化HAL库
InitUART(&huart1, 9600); // 初始化串口1,波特率为9600
// 其他操作...
}
```
阅读全文