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

# 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
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
2
3
4
5
6
# 8.5.3 串口项目1下载验证
# 实验现象
- 串口调试助手每秒接收一次"Hello World!"字符串
# 验证步骤
- 使用ST-LINK下载程序至开发板
- 连接CH340C至PC端对应COM口
- 打开串口调试助手观察接收数据
