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.mzph.cn/news/653882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#,广义斐波那契数(Generalised Fibonacci Numbers)的算法

广义斐波那契序列(generalized Fibonacci sequence)是斐波那契数的推广。由递推关系F₁F₂…Fm-10&#xff0c;Fₘ1&#xff0c;FmnFₙFn1…Fnm1&#xff0c;n≥1所产生的序列&#xff0c;称为m级广义斐波那契序列。 计算结果&#xff1a; 源代码&#xff1a; 1 文本格式 …

【MCAL】TC397+EB-tresos之GPT配置实战 - 定时器

本篇文章介绍了在TC397平台使用EB-tresos对GPT驱动模块进行配置的实战过程,不仅介绍了使用GTM来实现定时器的方案&#xff0c;还介绍了基于GPT12来实现连续定时器的实例。因为GTM是德国博世公司开发的IP&#xff0c;而英飞凌的芯片集成了这个IP&#xff0c;并在这个基础上搭建了…

蓝牙----蓝牙连接建立_连接建立

蓝牙----蓝牙连接建立_连接建立 蓝牙连接建立过程图1.主机扫描到广播包1.1判断是否是自己关心的广播包1.2广播地址添加到扫描列表 2.主机扫描结束&#xff0c;建立连接3.主从连接成功后&#xff0c;执行连接建立后事件3.1.主机将连接句柄和设备地址添加到连接列表3.2.主机进行G…

Docker 基础篇

目录 一、Docker 简介 1. Docker 2. Linux 容器 3. 传统虚拟机和容器的对比 4. Docker 的作用 5. Docker 的基本组成&#xff08;Docker 三要素&#xff09; 6. Docker 工作原理 7. Docker 架构 8. Docker 下载 二、Docker 安装 1. CentOS Docker 安装 2. CentOS8 …

贝锐蒲公英全新网页认证,保障企业访客无线网络安全

随着企业规模的不断扩大、人员的增长、无线终端数量/类型的增加&#xff0c;传统WiFi无线网络会暴露出越来越多的问题&#xff0c;导致无线网络管理困难。 比如&#xff1a;采用弱密码、安全防护不到位的默认设置、员工缺乏信息安全意识、未经授人员权访问无线网络…… 这些问…

SELINUX导致的网络服务问题解决

第一&#xff1a;开启相关服务&#xff0c;监控SELINUX 相关服务&#xff1a;setroubleshoot,auditd,大多数都是以se开头的 如果没有此服务&#xff0c;先yum下&#xff0c;然后查看状态 这里关于auditd说明&#xff0c;centos7不可以用systemctl重启auditd服务&#xff0c;…

深入了解Matplotlib中的子图创建方法

深入了解Matplotlib中的子图创建方法 一 add_axes( **kwargs):1.1 函数介绍1.2 示例一 创建第一张子图1.2 示例二 polar参数的运用1.3 示例三 创建多张子图 二 add_subplot(*args, **kwargs):2.1 函数介绍2.2 示例一 三 两种方法的区别3.1 参数形式3.2 布局灵活性3.3 适用场景3…

美化背景(拼图小游戏)

package Puzzlegame.com.wxj.ui;import javax.swing.*; import javax.swing.border.BevelBorder; import java.util.Random;public class GameJframe extends JFrame { //游戏主界面 //创建一个二维数组//目的&#xff1a;管理数据//加载图片的时候&#xff0c;会根据二维数组中…

ECRS软件:引领企业走向精益制造的未来

随着科技的快速发展和市场竞争的不断加剧&#xff0c;制造业正面临着前所未有的挑战和机遇。为了在激烈的市场竞争中立于不败之地&#xff0c;越来越多的企业开始寻求转型和升级&#xff0c;精益制造成为了一个备受关注的方向。而在这个过程中&#xff0c;ECRS软件以其独特的作…

【C++】对外接口封装以及导出动态链接库DLL

VS 使用C编写对外接口并封装成DLL 一、接口的封装二、VS设置三、查看生成的DLL接口 一、接口的封装 首先创建头文件&#xff0c;包含我们所依赖的库的头文件名称&#xff0c;并且申明我们要对外封装的接口名称&#xff0c;示例&#xff1a; 头文件&#xff1a; #pragma once …

CSAPP shelllab

CSAPP shell lab shell lab 的目标 实现shell 功能&#xff0c;包括解析命令&#xff0c;调用可执行文件和内置命令&#xff0c;(quit, jobs,fg, 和bg)。实现job控制和signal handler。 shell 介绍 Shell中的作业&#xff08;job&#xff09;管理是一种用于跟踪和控制正在运…

2023年:个人年度成长与团队协作成就

文章目录 个人职业发展的喜悦团队成就的辉煌公众号CSDN申请了移动安全领域新星创作者获得6月城市之星北京TOP 10获得23年博客之星TOP 41年度总结 知识星球 开拓新领域的决心免费知识大陆付费知识大陆 展望未来福利时间知识星球会员一年知识星球立减88券 在这个充满挑战与机遇的…

(2)(2.9) Holybro Microhard P900无线电遥测设备

文章目录 前言 1 特点 2 规格 3 包装内包括 前言 Holybro Microhard Radio 集成了 microhard Pico 系列射频模块&#xff0c;能够在强大的拓扑结构中提供高性能无线串行通信&#xff0c;如点对点、点对多点和安全 Mesh&#xff08;P840 不提供 Mesh&#xff09;。 它采用跳…

SQL注入的剩余类型

除了联合查询注入&#xff0c;报错注入&#xff0c;盲注注入 sql注入还有以下几类&#x1f9b9;&#x1f9b9;&#x1f9b9;&#x1f9b9;&#x1f9b9; 开始填坑 1.UA注入 原理&#xff1a;有些网站会把用户的UA信息写入数据库&#xff0c;用来收集和统计用户…

【技术分享】Ubuntu 20.04如何更改用户名

产品简介 本文适用于所有RK3568/RK3588平台产品在Ubuntu 20.04系统上如何更改用户名&#xff0c;本文以IDO-EVB3588开发板为例&#xff0c;在ubuntu20.04系统上修改用户名industio为usernew。 IDO-EVB3588开发板是一款基于RK3588平台的产品。该开发板集成了四核Cortex-A76和四…

扫描电子显微镜电子束辐射损伤和如何减轻

扫描电镜&#xff08;Scanning Electron Microscope, SEM&#xff09;是一种常用的材料表征技术&#xff0c;它通过聚焦电子束扫描样品表面&#xff0c;利用电子与样品相互作用产生的信号来获得高分辨率的形貌图像。然而&#xff0c;电子束的辐射可能会对样品造成损伤&#xff…

Qt6入门教程 13:QPushButton

目录 一.QPushButton 1.多选 2.互斥 3.设置菜单 4.图标按钮 4.1给按钮添加图标 4.2异形按钮 二.设置Qt样式表 一.QPushButton QPushButton是与QAbstractButton最接近的完全体按钮&#xff0c;它具备QAbstractButton的所有特性&#xff0c;并且支持设置菜单。 1.多选 …

2024幻兽帕鲁服务器,阿里云配置

阿里云幻兽帕鲁服务器Palworld服务器推荐4核16G配置&#xff0c;可以选择通用型g7实例或通用算力型u1实例&#xff0c;ECS通用型g7实例4核16G配置价格是502.32元一个月&#xff0c;算力型u1实例4核16G是432.0元/月&#xff0c;经济型e实例是共享型云服务器&#xff0c;价格是32…

docker容器运维命令

文章目录 docker psdocker execdocker inspectdocker topdocker attachdocker waitdocker exportdocker importdocker portdocker cpdocker diffdocker renamedocker statsdocker update总结 docker ps 列出容器。 docker ps [OPTIONS]OPTIONS说明&#xff1a; -a :显示所有的…

Python列表中的append功能及用法举例

Python列表中的append功能及用法举例 &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;append()&#x1f333;&#x1f340;功能介绍&#x1f340;&#x1f340;语法&#x1f340;&#x1f340;示例&#x1f340;&#x1f340;注意事项&#x…