串口通信小试

本文档记录了一次基于STM32的串口通信实验,使用HAL库配置GPIO和USART,实现LED流水灯及串口通信。通过代码编写、电路连接和程序烧录,成功实现了串口数据传输,并通过串口调试助手验证。实验加深了对串口通信原理和HAL库应用的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重庆交通大学信息科学与工程学院

《嵌入式系统基础A》课程

作业报告(实验一)

班 级: 物联网工程2002

姓名-学号 : 吴泽霖-632007060217

实验项目名称: 串口通信小试

实验项目性质: 设计性

实验所属课程: 《嵌入式系统基础》

实验室(中心): 南岸校区语音大楼

指 导 教 师 : 娄路

完成时间: 2022 10 21


一、实验内容和任务

串口通信小试

二、实验要求

1. 分组要求:每个学生独立完成,即1人1组。

2. 程序及报告文档要求:具有较好的可读性,如叙述准确、标注明确、截图清晰等。

3.项目代码上传github,同时把项目完整打包为zip文件,与实验报告(Markdown源码及PDF文件)、作业博客地址一起提交到学习通。

三. 实验过程介绍

一、基于HAL库的LED流水灯

新建项目
回到STMCubeMX的主界面,创建新项目:
请添加图片描述在part name里选择自己的芯片,点击信息栏中的具体芯片信息选中,点击start project:

在这里插入图片描述点击system core,进入SYS,在debug下选择serial wire:

请添加图片描述配置时钟,进入上面的rcc,有两个时钟,一个是hse和lse,我们要用是GPIO接口,而这些接口都在APB2里:
请添加图片描述接下来观察时钟架构,APB2总线的时钟由hse控制,同时在这个界面得把PLLCLK右边选上:请添加图片描述将hse那里设为Crystal/Ceramic Resonator请添加图片描述接下来就是点击相应的引脚设置输出寄存器了,就是output那一项,一共选了三个,是PA4,PB9,PC15:请添加图片描述点击project manager,配置好自己的路径和项目名,然后IDE那项改为MDK-ARM:请添加图片描述进入 code generate界面,选择生成初始化.c/.h文件,后面点击generate code,选择open project,然后就到KEIL5了:

请添加图片描述

二、打开.uvprojx文件

将原主函数处覆盖图中代码
在这里插入图片描述电路连接

根据设计的程序连接电路:
对于USB转TTL模块和stm32f103c8t6连接:
GND — GND
3v3 — 3v3
TXD — A10
RXD — A9

总电路:
红——B9
绿——C15
黄——A4

烧录运行

请添加图片描述

三、完成一个STM32的USART串口通讯程序

创建项目并配置

请添加图片描述Rcc配置请添加图片描述
USART1配置请添加图片描述配置项目名、项目存放路径、使用编辑器、HAL库所使用的版本:请添加图片描述Code Generate配置:请添加图片描述
生成并打开项目

代码编写

在main.c的while循环上面写入以下代码:

char data[] = "\nHello world!\n";

在while循环中写入以下代码

HAL_UART_Transmit(&huart1, (uint8_t *)data, 15, 0xFFFF);
HAL_Delay(1000);

请添加图片描述
编译并烧录到板子中请添加图片描述打开串口调试助手,开启串口请添加图片描述

四、观察GPIO端口的输出波形

Target界面中,选择跟正确的晶振大小,我使用的是8MHz的外部晶振。这个选项在软件仿真中起到很重要的作用,如果选择错误,那么波形一定是错误的,因为时间不准确。Debug页的设置:

请添加图片描述选择逻辑分析仪:请添加图片描述

请添加图片描述

观察波形请添加图片描述
引脚为低电平的灯亮,高电平的灯不亮,高低电平转换周期(LED闪烁周期)为1s左右。

五、总结

在本次串口通信实验中,我本来打算使用汇编代码来实现串口通信功能,却发现在串口调试中出现的是乱码,经过在询问后,可能是因为汇编代码本身的bug,而后我使用cubemx,对HAL库的调用成功的将该串口通信功能实现,也让我对串口通信的理解有了进一步的提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值