当前位置: 首页 > news >正文

STM32学习笔记(二) —— 调试串口

我们在调试程序时,经常会使用串口打印相关的调试信息,但是单片机串口不能直接与 PC 端的 USB 接口通讯,需要用到一个USB转串口的芯片来充当翻译的角色。我们使用的开发板上有这个芯片,所以在打印调试信息的时候直接使用USB线连接开发板与电脑USB口就可以了,这里的电路连接如下,

USB转TTL与一键下载电路图

在这里插入图片描述

这里使用串口1作为调试串口,需要使用跳线帽连接P7接口中的 TX与PA10,RX与PA9;

也实现了一键下载功能,可以使用串口下载程序而无需手动配置BOOT;

还可以通过板子上的USB转TLL调试其他设备,只需将P7接口中的 TX连接其他设备TTL电平接口的RX,RX连接其他设备TTL电平接口的TX,GND连接其他设备的GND,另外开发板还需要供电;

还可以使用开发板上的USB转232功能调试其他232接口设备,可以使用跳线帽连接P7接口中的 TX与TX232,RX与RX232。然后找到开发板上的P12接口,连接 TX与其他设备232接口的RX,RX与其他设备232接口的TX,GND与其他设备的GND,另外再给开发板供电;

注:上述调试串口,USB转TTL与USB转232功能同时只能使用一个,通过P7接口进行配置。

USB转232接口电路图
在这里插入图片描述

接下来就是配置软件实现调试串口的功能,这里不介绍串口,只是实现调试串口,方便后续程序调试,对于串口的使用在后面会详细介绍

1.配置串口

我们在上节创建的HAL库工程模板的基础上,通过 STM32CubeMX 来增加串口的配置代码。找到上节创建的项目文件,双击打开 STM32CubeMX 工程文件
工程文件

配置串口1 :异步模式, 波特率 115200,8位数据位,无奇偶校验,1位停止位( 115200-8-N-1 ),收发模式使能。这个波特率配置很常用,另外 9600-8-N-1 也很常用

配置UART1

配置完成后,点击 GENERATE CODE 生成代码

2.printf 函数重定向

printf 函数会调用 fputc 函数打印数据,如果我们让fputc函数打印的数据直接输出到串口,那调用printf函数时打印的数据就会通过串口发送出去。所以我们可以通过在fputc函数中调用串口发送函数来实现printf函数重定向

用 keil 打开刚才生成的代码,首先我们勾选配置选项中的 Use MicroLIB
MircoLIB

然后分别在 usart.h 与 usart.c 中添加如下代码

/* usart.h */
#include <stdio.h>
/* usart.c */
int fputc(int _char, FILE *_stream)
{/* 串口阻塞发送函数 串口1    待发送数据               发送数据个数    发送超时时间*/HAL_UART_Transmit(&huart1,   (const uint8_t *)&_char, 1,              1000);return _char;
}

最后在 main.c 中就可以调用 printf 函数向串口打印调试信息。在 while(1) 循环中添加如下代码,编译后可下载到单片机中测试

printf("Hello World!\r\n");
HAL_Delay(500);

3.编译项目(Project - Rebuild all target files)并下载验证

使用一键下载功能时,可以在项目文件目录下找到.hex文件通过USB转串口的方式下载到开发板。下载程序的软件可以在HAL库工程模板这一章节的最后找到百度网盘链接分享

下载完之后,可以打开串口调试助手,就能看到开发板打印的数据 “Hello World!”

注:下载时选择 DTR的低电平复位,RTS高电平进BootLoader 选项

我们后续的下载都是使用ST-Link下载,可以直接在keil中下载或者调试,比较方便。可按下图配置并下载(Flash - Download)
下载

下载完之后,打开串口调试助手,就可以查看到打印的数据

在这里插入图片描述

上述我们是在开发板中进行实际验证的效果,下面使用软件仿真

首先我们需要配置一下参数

在这里插入图片描述

然后再编译一下,没有问题就可以进入仿真界面

在这里插入图片描述

按下图点击下拉三角形,选择串口1,就能在右下方看到多出了一个标签页

在这里插入图片描述

串口显示区域

在这里插入图片描述

点击运行,然后观察上述串口显示区域,就可以看到打印的数据

在这里插入图片描述

打印出的 “Hello World!”,可以把此标签页从下方拖出来,拉大一点更方便查看

在这里插入图片描述

以下是几个常用的工具栏按钮,其他的等用到的时候再介绍

在这里插入图片描述

http://www.lryc.cn/news/289797.html

相关文章:

  • Ubuntu20.0.4下设置frpc开机自启动
  • 05 Redis之Benchmark+简单动态字符串SDS+集合的底层实现
  • 【C++】priority_queue优先队列
  • 蓝桥杯---三国游戏
  • 设计一个分布式ID
  • 259:vue+openlayers: 显示海量多边形数据,10ms加载完成
  • Go Zero微服务个人探究之路(十)实战走通微服务前台请求调用的一套流程model->rpc微服务->apiHTTP调用
  • K8s 安装部署-Master和Minion(Node)
  • 从零学习Linux操作系统 第二十部分 mariadb数据库的管理
  • 数据脱敏和数据加密有什么区别
  • 主流排序算法
  • MySql的使用方法
  • C#,数据检索算法之三元搜索(Ternary Search)的源代码
  • windbg:常用指令
  • 23. 集合类
  • OpenAI平台:引领人工智能的创新与应用
  • redis原理(五)Lua语言
  • SOHO外贸怎么建网站?做海洋建站的步骤?
  • [论文阅读] |RAG评估_Retrieval-Augmented Generation Benchmark
  • 【Linux】动态库和静态库——动态库和静态库的打包和使用、gcc编译、拷贝到系统默认的路径、建立软连接
  • 【Redis】Redis有哪些适合的场景
  • uniapp上传音频文件到服务器
  • C#-正则表达式
  • 【word】论文、报告:①插入图表题注,交叉引用②快速插入图表目录③删改后一键更新
  • Spring Security 的TokenStore三种实现方式
  • 微信小程序 图片自适应高度 宽度 完美适配原生或者uniapp
  • Go语言基础之反射
  • MySQL十部曲之六:数据操作语句(DML)
  • Quartus生成烧录到FPGA板载Flash的jic文件
  • CSS 多色正方形上升