| STM32F103 系列微控制器以其高性价比和丰富的外设功能,被广泛应用于各种嵌入式开发项目。本文将以 STM32F103 为例,详细介绍如何配置和实现 UART 通信,包括硬件连接、软件配置以及代码实现,帮助读者快速上手并掌握 UART 的基本应用。 
 STM32F103 的主要特点STM32F103 基于 ARM Cortex-M3 核心,具有以下主要特性:
 
 UART 是一种常用的串行通信接口,非常适合 MCU 与传感器、模块或上位机通信的场景。性能可靠:72 MHz 主频,支持多种低功耗模式。丰富外设:包括多通道 UART、SPI、I2C 等通信接口。开发资源丰富:兼容多种开发工具,社区支持活跃。
 
 硬件连接使用 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 通信功能。这种基础应用在嵌入式开发中非常常见,掌握后可以拓展至更多复杂应用场景,如与传感器或上位机的通信。
 
 
 
 
 
 |