1.3 使用 HAL 库进行 UART 配置
在 STM32F030F4P6 中,我们可以使用 HAL 库来简化 UART 配置与操作。
初始化 UART
在 main.c 中,首先需要初始化 USART1。
c
复制代码
#include "stm32f0xx_hal.h"
// 定义 UART 句柄
UART_HandleTypeDef huart1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);
int main(void)
{
// 初始化 HAL 库
HAL_Init();
// 配置系统时钟
SystemClock_Config();
// 初始化 GPIO 和 USART1
MX_GPIO_Init();
MX_USART1_UART_Init();
// UART 数据传输示例
uint8_t data[] = "Hello, STM32F030F4P6 UART Communication!\r\n";
while (1)
{
// 发送数据
HAL_UART_Transmit(&huart1, data, sizeof(data) - 1, HAL_MAX_DELAY);
HAL_Delay(1000); // 延时 1 秒
}
}
// USART1 初始化函数
static void MX_USART1_UART_Init(void)
{
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200; // 设置波特率
huart1.Init.WordLength = UART_WORDLENGTH_8B; // 8 数据位
huart1.Init.StopBits = UART_STOPBITS_1; // 1 停止位
huart1.Init.Parity = UART_PARITY_NONE; // 无奇偶校验
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; // 无硬件流控制
huart1.Init.Mode = UART_MODE_TX_RX; // 启用发送和接收模式
if (HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler(); // 错误处理
}
}
// GPIO 初始化函数
static void MX_GPIO_Init(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE(); // 启用 GPIOA 时钟
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_10; // USART1_TX, USART1_RX
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; // 复用推挽输出
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不使用上拉/下拉电阻
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // 高速
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
在这个代码片段中,我们通过 HAL_UART_Init 函数初始化了 UART 设置,包括波特率、数据位、停止位等。HAL_UART_Transmit 用于发送字符串,HAL_UART_Receive 可以用于接收数据。
|