STM32F103C8T6 最小系统开发板使用 HAL 库进行 USART 串口通信
1. 项目概述
在本项目中,我们将使用 STM32F103C8T6 最小系统开发板,通过 HAL(Hardware Abstraction Layer)库 实现 USART 串口通信,并通过 串口助手 进行数据收发。
2. 硬件设计
1. 硬件需求
- STM32F103C8T6 最小系统开发板
- STLink-V2 下载器(用于烧录程序)
- USB 转 TTL 模块(如 CH340、CP2102)
- 杜邦线
2. 硬件连接
- STM32F103C8T6 USART1_TX(PA9) → USB 转 TTL RX
- STM32F103C8T6 USART1_RX(PA10) → USB 转 TTL TX
- GND → GND
3. USART 协议原理
USART(通用同步/异步收发器)是一种 全双工串行通信协议,支持异步(UART)和同步通信。
- 波特率(Baud Rate):通信速度(常用 9600、115200)
- 数据位(Data Bits):通常为 8 位
- 停止位(Stop Bits):常见 1 位
- 校验位(Parity Bit):可选(无校验、偶校验、奇校验)
4. 软件设计
1. STM32 HAL 库简介
HAL 库是 ST 官方提供的 硬件抽象库,封装了底层寄存器操作,使开发更加简单。
2. 工程创建步骤(基于 STM32CubeMX)
- 打开 STM32CubeMX,创建新工程,选择 STM32F103C8T6。
- 配置 USART1 串口
- 选择 PA9 为 USART1_TX
- 选择 PA10 为 USART1_RX
- 配置 波特率 115200,8 数据位,1 停止位,无校验
- 配置时钟(默认 72MHz,无需修改)。
- 生成代码,选择 IDE 为 STM32CubeIDE 或 Keil。
5. 代码实现
1. main.c 代码
#include "main.h"
#include <string.h>UART_HandleTypeDef huart1; // 定义 USART1 句柄void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);int main(void)
{HAL_Init(); // 初始化 HAL 库SystemClock_Config(); // 配置系统时钟MX_GPIO_Init(); // 初始化 GPIOMX_USART1_UART_Init(); // 初始化 USART1char msg[] = "Hello STM32 USART!\r\n";while (1){HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), 1000); // 发送数据HAL_Delay(1000); // 延时 1 秒}
}/*** @brief USART1 初始化*/
static void MX_USART1_UART_Init(void)
{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;HAL_UART_Init(&huart1);
}
2. 代码解析
HAL_UART_Transmit()
:发送字符串数据到串口助手。- 波特率 115200,8N1 设置适用于大多数串口通信需求。
6. 烧录与测试
1. 烧录步骤(使用 STLink-V2)
- 连接 STLink-V2
- STLink-V2 SWDIO → STM32 SWDIO
- STLink-V2 SWCLK → STM32 SWCLK
- STLink-V2 GND → STM32 GND
- STLink-V2 3.3V → STM32 3.3V
- 使用 STM32CubeProgrammer 或 Keil 进行烧录。
- 烧录完成后,按下 RESET 运行程序。
2. 使用串口助手测试
- 连接 USB 转 TTL 模块,打开串口助手(如 SSCOM、SecureCRT、RealTerm)。
- 设置波特率 115200,打开串口。
- 观察串口助手,每秒收到 "Hello STM32 USART!"。
7. 总结
本教程介绍了 STM32F103C8T6 最小系统开发板 使用 HAL 库进行 USART 串口通信,包括 USART 协议原理、硬件设计、软件配置、代码编写、烧录步骤,适用于 STM32 HAL 库 开发。希望能帮助你快速入门 STM32 的串口通信应用!