USART3 配置代码
时间: 2024-11-30 16:12:19 浏览: 13
USART3(通用异步收发传输)是一种常用的串行通信接口,在许多微控制器中都有提供。配置USART3通常涉及到初始化、设置波特率、数据位数、停止位以及校验等参数。以下是基于STM32Cube库的一般步骤:
```c
#include "stm32f4xx_hal.h"
// 初始化USART3
void USART3_Init(void) {
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
// 1. RCC (复位和时钟控制) 初始化
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; // 使用HSE(内部高速振荡器)
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = RCC_PLL_MUL_8; // 设置倍频
HAL_RCC_OscConfig(&RCC_OscInitStruct);
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
// 2. GPIO配置
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10; // 波特率寄存器的PA9 PA10针脚作为TX/RX
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// 3. USART3初始化
USART_HandleTypeDef UsartHandle;
UsartHandle.Instance = USART3;
UsartHandle.Init.BaudRate = YOUR_BAUD_RATE; // 设置你的期望波特率
UsartHandle.Init.WordLength = USART_WORDLENGTH_8B;
UsartHandle.Init.StopBits = USART_STOPBITS_1;
UsartHandle.Init.Parity = USART_PARITY_NONE;
UsartHandle.Init.Mode = USART_MODE_TX_RX;
UsartHandle.Init.HwFlowCtl = USART_HWCONTROL_NONE;
UsartHandle.Init.RxNewLine = USART_RX_NEWLINE_CR;
HAL_UART_Init(&UsartHandle);
}
阅读全文