8.5 串口发送项目:轮询方式串口发送"Hello World!"
# 8.5 串口发送项目:轮询方式串口发送"Hello World!"
通过STM32F103的USART1与CH340C芯片实现基本的串口通信功能。项目实验目标为使用轮询方式控制STM32每隔1秒向电脑端发送一次字符串“Hello World!”,并通过串口调试助手验证数据接收。
# 下载源码 点击查看PDF文档
# 8.5.1 STM32CubeMx配置
# 1. 建立新工程
① 建立一个新的STM32工程;
② 选择芯片“STM32F103C8T6”;
③ 设置工程的名称为“08 USART_1”;
④ 选择SWD调试方式;
⑤ 开启外部高速时钟源并修改主频为72MHz。
# 2. 配置USART1
① 点击“Pinout&Configuration”标签页;
② 在左侧导航栏中点击“Connectivity”;
③ 双击“USART1”进行配置;
④ 选模式Mode选择“Asynchronous”。

将USART1的工作参数设置如下:
- Baud Rate:115200
- Word Length:8 bits
- Parity:None
- Stop Bits:1
- Over Sampling:16 Samples

# 3. 引脚分配
检查USART1的引脚分配:PA9(USART1_TX)自动配置为输出模式。PA10(USART1_RX)自动配置为输入模式。若引脚未自动分配,需手动右击PA9和PA10选择“USART1_TX”和“USART1_RX”功能。

# 4. 生成代码
勾选生成单独外设文件,保存生成工程代码。
# 8.5.2 串口发送项目软件设计
# 1. USART初始化函数
USART初始化函数,通过结构体参数化配置硬件,实现自动寄存器计算、硬件状态同步及参数校验。
//代码清单8-2 USART初始化函数
static void MX_USART3_UART_Init(void) {
huart3.Instance = USART1;
huart3.Init.BaudRate = 115200; //波特率设为115200
huart3.Init.WordLength = UART_WORDLENGTH_8B; //数据位长度为8
huart3.Init.StopBits = UART_STOPBITS_1; //停止位长度为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();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 2. 主循环发送逻辑
在main.c的while循环区插入:HAL_UART_Transmit(&huart1, (uint8_t*)"Hello World!\r\n", 13, 1000); HAL_Delay(1000); 实现每秒通过USART发送13字节数据,含1秒超时等待。
//代码清单8-3 发送函数
/* USER CODE BEGIN WHILE */
while (1) {
//以轮询方式发送“Hello World!”
HAL_UART_Transmit(&huart1, (uint8_t*)"HelloWorld!\r\n", 13, 1000);
//延迟1s
HAL_Delay(1000);
}
2
3
4
5
6
7
8
# 8.5.3 串口发送项目下载验证
# 1.下载步骤
ST-LINK下载器连接嵌入式学习板的烧录接口和电脑端,点击STM32CubeIDE软件开发界面中的“Run”按钮,一键完成代码程序的编译下载。
# 2.验证步骤
在本实验中,使用在微软应用商店中下载的“串口调试助手”软件作为电脑端的调试工具。选择与CH340C对应的COM端口。

程序运行后,串口调试助手的接收区将每秒接收一次“Hello World!”字符串。
