STM32F103 系列微控制器以其高性价比和丰富的外设功能,被广泛应用于各种嵌入式开发项目。本文将以 STM32F103 为例,详细介绍如何配置和实现 UART 通信,包括硬件连接、软件配置以及代码实现,帮助读者快速上手并掌握 UART 的基本应用。
STM32F103 的主要特点STM32F103 基于 ARM Cortex-M3 核心,具有以下主要特性:
- 性能可靠:72 MHz 主频,支持多种低功耗模式。
- 丰富外设:包括多通道 UART、SPI、I2C 等通信接口。
- 开发资源丰富:兼容多种开发工具,社区支持活跃。
UART 是一种常用的串行通信接口,非常适合 MCU 与传感器、模块或上位机通信的场景。
硬件连接使用 STM32F103 的 UART 功能,需要如下硬件:
- STM32F103 最小系统板。
- USB 转串口模块(如 CH340)。
- 常规连接线。
典型连接方式:
- STM32F103 的 TX (PA9) 引脚连接到 USB 转串口模块的 RX 引脚。
- STM32F103 的 RX (PA10) 引脚连接到 USB 转串口模块的 TX 引脚。
- 接地(GND)相连。
软件开发流程- 开发工具
使用 STM32CubeMX 和 STM32CubeIDE 进行代码生成与开发。
- UART 配置
在 STM32CubeMX 中,选择对应的 UART 外设(如 USART1),配置波特率为 115200、8 数据位、1 停止位、无校验。
- 实现 UART 通信功能
示例代码以下是基于 HAL 库实现的 UART 通信示例代码,展示了数据发送和接收的基本操作。
- #include "main.h"
- #include <string.h>
- UART_HandleTypeDef huart1;
- // 初始化 UART
- 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;
- if (HAL_UART_Init(&huart1) != HAL_OK) {
- Error_Handler();
- }
- }
- // 数据发送函数
- void UART_SendString(char *str) {
- HAL_UART_Transmit(&huart1, (uint8_t *)str, strlen(str), HAL_MAX_DELAY);
- }
- // 数据接收函数
- void UART_ReceiveString(char *buffer, uint16_t size) {
- HAL_UART_Receive(&huart1, (uint8_t *)buffer, size, HAL_MAX_DELAY);
- }
- int main(void) {
- HAL_Init();
- SystemClock_Config();
- MX_USART1_UART_Init();
- char rxBuffer[100];
- char *welcomeMessage = "UART Communication Initialized\r\n";
- UART_SendString(welcomeMessage);
- while (1) {
- // 接收数据
- UART_ReceiveString(rxBuffer, sizeof(rxBuffer));
- // 回显数据
- UART_SendString("Received: ");
- UART_SendString(rxBuffer);
- UART_SendString("\r\n");
- }
- }
调试与验证- 串口调试工具
使用常见的串口调试工具(如 SecureCRT、Tera Term 或串口助手)验证通信功能。
- 测试步骤
- 上电运行程序,串口工具应显示初始化信息。
- 发送任意字符串,STM32F103 将接收并回显内容。
常见问题与解决方案- 波特率错误
确保 MCU 和调试工具的波特率一致。 - 数据丢失或乱码
检查线路连接及串口配置是否正确。 - 无法接收数据
确认引脚映射与 CubeMX 配置一致。
总结本文通过硬件连接、软件配置以及代码实现的详细讲解,帮助大家快速掌握 STM32F103 的 UART 通信功能。这种基础应用在嵌入式开发中非常常见,掌握后可以拓展至更多复杂应用场景,如与传感器或上位机的通信。
|