8.5 串口项目1:轮询方式串口发送"Hello World!"

# 8.5 串口项目1:轮询方式串口发送"Hello World!"

通过STM32F103的USART1实现轮询通信,每1秒发送"Hello World!"至PC端。使用串口调试助手验证数据传输。


# 8.5.1 STM32CubeMx配置

# 1. 建立新工程

  • 芯片型号:STM32F103C8T6
  • 工程名称:08 USART_1
  • 主频配置:72MHz(启用外部高速时钟源)

# 2. 配置USART1参数

  • 模式:Asynchronous(异步通信)
  • 波特率:115200
  • 数据位:8 bits
  • 校验位:None
  • 停止位:1
  • 采样方式:16 Samples
USART1使能配置

# 3. 引脚分配

  • PA9(USART1_TX):输出模式
  • PA10(USART1_RX):输入模式
引脚配置图

# 4. 生成代码

  • 勾选“为每个外设生成独立文件”
  • 保存生成工程代码(快捷键Ctrl+S)

# 8.5.2 串口项目1软件设计

# 1. USART初始化函数

配置波特率、数据位等参数,代码完全保留:

//代码清单8-2 USART初始化函数
static void MX_USART3_UART_Init(void) {
    huart3.Instance = USART1;
    huart3.Init.BaudRate = 115200;
    huart3.Init.WordLength = UART_WORDLENGTH_8B;
    huart3.Init.StopBits = UART_STOPBITS_1;
    huart3.Init.Parity = UART_PARITY_NONE;
    huart3.Init.Mode = UART_MODE_TX_RX;
    huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    huart3.Init.OverSampling = UART_OVERSAMPLING_16;
    if (HAL_UART_Init(&huart1) != HAL_OK) {
        Error_Handler();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 2. 主循环发送逻辑

轮询发送字符串并延时1秒,代码未改动:

//代码清单8-3 发送函数
/* USER CODE BEGIN WHILE */
while (1) {
    HAL_UART_Transmit(&huart1, (uint8_t*)"HelloWorld!\r\n", 13, 1000);
    HAL_Delay(1000);
}
1
2
3
4
5
6

# 8.5.3 串口项目1下载验证

# 实验现象

  • 串口调试助手每秒接收一次"Hello World!"字符串

# 验证步骤

  1. 使用ST-LINK下载程序至开发板
  2. 连接CH340C至PC端对应COM口
  3. 打开串口调试助手观察接收数据
串口接收效果