前言
本文仅简单介绍在嵌入式系统开发环境下,通过STM32系统与上位机(win10)的连接,完成一个简单的“hello windows!”串口通讯程序
一、准备工作
1. 题目要求
- 完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求:
1)设置波特率为115200,1位停止位,无校验位; 2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收 - 在没有示波器条件下,使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 用此功能观察上题中的串口输出波形,并分析时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。
2. 实验工具
2.1 硬件工具
- STM32F103C8T6最小核心板:
- USB转TTL:
2.2 软件工具
- CH340驱动(USB串口驱动):
- 串口通信助手:
- keil c51开发环境
3. CH340驱动(USB串口驱动)的安装
- 双击应用程序进行安装:
- 驱动安装成功提示:
- 在电脑设备管理器处查看有无com端口出现,有即可证明成功:
4. 硬件连线
- 转接口选择:GND、RXD、TXD、3V3
- STM32核心板选取端口:GND、3v3、A9、A10
- 对应连接:GND-GND;3V3-3V3;RXD-A9;TXD-A10
二、串口通讯工程创建
- 本次工程实现环境是基于Stm32CubeMX下进行的
1.创建工程
- 点击ACCESS TO MCU SELECTOR
- 选择stn32F103C8开发板:
- Mode选择异步通信(Asynchronous):
- 波特率为115200,1位停止位,无校验位(这里不需要改,默认就是这样):
- 勾选Enabled:
- 配置项目设置(名称、位置、环境):
- 生成项目:
2.代码编写
- 用keil打开刚刚在CubeMX生成的项目文件:
- 在main.c中定义STM32需要给上位机发送的消息:
uint8_t hello[20]="hello windows!\n";
- 在main.c中定义一个延时函数,来使设置发送的时间间隔:
void Delay_wxc( volatile unsigned int t)
{
unsigned int i;
while(t--)
for (i=0;i<800;i++);
}
while (1)
{
HAL_UART_Transmit(&huart1,hello,20,100000);
Delay_wxc(3500);
}
- 编译文件:
三、串口通讯程序烧录
1. 打开FlyMcu
- 选择刚刚程序编译生成的hex文件,并搜索串口:
2. 开发板boot0置1,boot1置0
3. 开始编程
四、调用串口助手,查看结果
1. 开发板boot0和boot1都置0
- 按下复位键:
2. 打开串口助手
- 查看环境配置是否正确:
- 点击“打开串口”,查看运行结果:
五、Keil观察串口输出波形
1. 环境搭建
- 魔法棒中Target界面设置:
- Debug页面设置:
2. 调试,并选择逻辑分析仪
3. 添加引脚,输入
- 点击“Setup”
- 输入引脚地址USART1_SR
- 调为Bit模式
- 最后点击close
4. 运行程序、观察波形
- 运行程序:
- 放大波形后可以看到,低电平持续实际时间为86.5us:
- 同理,放大波形后可以看到,高电平持续实际时间为6us:
总结
通过本文的本文简单介绍,希望大家帮助大家理解:在嵌入式系统开发环境下,通过STM32系统与上位机(win10)的连接,完成一个简单的“hello windows!”串口通讯程序的实现过程,同时学会使用逻辑分析仪观察时序波形。 同时也期待大家能够积极留言,指出我存在的问题,谢谢!
参考文献: https://blog.csdn.net/zhoushuaiyxlmwan/article/details/127327982
|