了解串口协议,及完成STM32的USART串口通讯程序,并用keil观察波形

2023-05-16

文章目录

  • 前言
  • 一、串口协议
    • 1.RS-232
    • 2.485标准
  • 二、RS-232、485和TTL电平
    • 1.RS-232电平
    • 2.485
    • 3.TTL电平
    • 4.区别
  • 三、USB/TTL转232
    • 1.CH340
    • 2.发送接收
    • 3.USB转RS-232
  • 四、完成一个STM32的USART串口通讯程序
    • 1.题目要求
    • 2.准备工作
    • 3.CH340驱动安装
  • 五、实验过程及结果
    • 1.创建工程
    • 2.程序写入及编译
    • 3.Stm32最小核心板运行
      • 3.1 用flymcu进行烧录
      • 3.2 用串口调试助手查看
  • 六、用Keil观察串口波形
    • 1.环境搭建
    • 2.波形分析
  • 总结


前言

此文章主要了解:
1、串口协议和RS-232、485标准,以及RS232、485电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理

2、完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求:
1)设置波特率为115200,1位停止位,无校验位;
2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。

三. 在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察第1题中3个GPIO端口的输出波形,和第2题中串口输出波形,并分析时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。


一、串口协议

串口是显控设备与信号处理板之间通信的主要接口,也是显控设备与其他设备、设备与设备之间的协议数据帧通信传输的重要接口。
串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。串口通信协议是基于串口使得通信双方能够相互沟通信息的一种约定,其定义了双方遵循的协议数据帧格式和其传输方式。
在串口通信中,常用的协议包括RS-232、RS-422和RS-485。

1.RS-232

RS-232标准接口(又称EIA RS-232)是常用的串行通信接口标准之一,它是由美国电子工业协会(Electronic Industry Association,EIA)联合贝尔系统公司、调制解调器厂家及计算机终端生产厂家于1970年共同制定,其全名是“数据终端设备( DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。
在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIARS-232-C)是目前最常用的一种串行通讯接口。(“RS-232-C”中的“-C”只不过表示RS-232的版本,所以与“RS-232”简称是一样的)。

在这里插入图片描述

2.485标准

智能仪表随着80年代初单片机技术的成熟而发展起来,世界仪表市场基本被智能仪表所垄断,这归结于企业信息化的需要,而企业在仪表选型时其中的一个必要条件就是要具有联网通信接口。最初是数据模拟信号输出简单过程量,后来仪表接口是RS232接口,这种接口可以实现点对点的通信方式,但这种方式不能实现联网功能,随后出现的RS485解决了这个问题。
RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。
RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。
RS-485标准专门弥补RS-232通讯距离短、速率低等缺点而产生。RS-485标准只规定了平衡发送器和接收器的特性。而没有规定接插件、传输电缆和应用层通讯协议。 RS-485有两线制和四线制两种接线,四线制只能实现点对点的通讯方式,现很少采用,多采用两线制接线方式。这种接线方式为总线式拓朴结构在同一总线上最多可以挂线32–128个结点。在RS-485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。通讯协议采用按照设备地址查询的方式,其通讯的效率很低,不适合高速传输系统。一般速率不超过19200bps。波特率为9600Bps、1200Bps。RS-485标准的最大传输距离约为1219米,最大传输速率为10Mbps。

在这里插入图片描述

二、RS-232、485和TTL电平

1.RS-232电平

和串口一样,每一个byte,都有起始位和停止位。起始位1,停止位0,但注意是反逻辑。每个byte,是从低位向高位逐位传输,也就是LSB先传,依次传输到MSB。
全双工(逻辑1:-15V–5V 逻辑0:+3V–+15V)。是电子工业协会制定的异步传输标准接口,同时对应着电平标准和通信协议(时序),其电平标准:+3V~+15V对应“0”,-3V~-15V对应“1”。RS232 的逻辑电平和TTL 不一样但是协议是一样的。

2.485

RS485:A,B信号之间正电平在+2+6V表示“0”;A,B信号之间负电平在-2-6V表示“1”;使能端起作用和其他状态时为高阻态
RS485:半双工这里的电平指AB两线间的电压差。RS485是一种串口接口标准,为了长距离传输采用差分方式传输,传输的是差分信号,即通过AB两根线的电压差作为电平信号。差分信号能有效地抵御外界因素的干扰,因为干扰对两根线影响是一样的,两根线的电压差不变,信号传递也就不会受干扰。与TTL、RS232只能一对一连接不同,RS-485在总线上是允许连接多达128个收发器。

3.TTL电平

TTL:输出高电平>2.4V,低电平<0.4V;输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。
TTL :全双工 (5V系统,逻辑1: 2.4V–5V 逻辑0: 0V–0.5V)。TTL指双极型三极管逻辑电路,市面上很多“USB转TTL”模块,实际上是“USB转TTL电平的串口”模块。这种信号0对应0V,1对应3.3V或者5V,与单片机、SOC的IO电平兼容。我们进行串口通信的时候从单片机直接出来的基本上都是TTL电平。

4.区别

  1. RS232、RS485、TTL是指电平标准(电信号)
  2. TTL电平标准 是 低电平为0,高电平为1(对地,标准数字电路逻辑)。
  3. RS232电平标准 是 正电平为0,负电平为1(对地,正负6-15V皆可,甚至可以用高阻态)。
  4. RS485与RS232类似,但是采用差分信号逻辑,更适合长距离、高速传输。

在这里插入图片描述

三、USB/TTL转232

这里我们以CH340为例

1.CH340

CH340 是一个USB 总线的转接芯片,实现USB 转串口、USB 转IrDA 红外或者USB 转打印口。
在串口方式下,CH340 提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB 总线。在红外方式下,CH340 外加红外收发器即可构成USB 红外线适配器,实现SIR 红外线通讯。
USB转串口即实现计算机USB接口到物理串口之间的转换。可以为没有串口的计算机或其他USB主机增加串口,使用USB转串口设备等于将传统的串口设备变成了即插即用的USB设备

在这里插入图片描述

2.发送接收

串口发送
串口应用发送数据->USB串口驱动获取数据->驱动将数据经过USB通道发送给USB串口设备->USB串口设备接收到数据通过串口发送

串口接收
USB串口设备接收串口数据->将串口数据经过USB打包后上传给USB主机->USB串口驱动获取到通过USB上传的串口数据->驱动将数据保存在串口缓冲区提供给串口应用读取

3.USB转RS-232

USB转串口模块可以使用5V、3V3电压供电,需要将跳线帽进行安装。
可以对USB转串口模块进行测试,将USB的电压引脚用跳帽接上,然后将RXD和TXD两个引脚用跳帽或者杜邦线接上。然后打开串口终端,点击“手动发送”或者“自动发送”,如果在接收区可以接收到数据,说明USB转串口模块工作正常,否则需要检查接线是否正确、电路板元器件是否损坏。
VCC接线是为了单片机供电,USB转串口的RXD引脚与单片机的TXD引脚相连,USB转串口的TXD引脚与单片机的RXD引脚相连,两者的GND引脚直接相连。

在这里插入图片描述

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

1.题目要求

  • 设置波特率为115200,1位停止位,无校验位;
  • STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。
  • 在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察第1题中3个GPIO端口的输出波形,和第2题中串口输出波形,并分析时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。

2.准备工作

  • 硬件准备
    STM32F103C8T6最小核心板
    USB转TTL

  • 软件准备
    CH340驱动
    串口调试助手
    Keil uVision5

3.CH340驱动安装

点开从网上找到的exe文件,进行安装。

在这里插入图片描述
点击安装,显示驱动安装成功(如果安装失败,可能是以前安装过,点击卸载后在安装就可以了)

  • 驱动安装成功后,我们即可将STM32核心板和USB连线,然后插上电脑
    转接口选择:GND、RXD、TXD、3V3
    STM32核心板选取端口:GND、3v3、A9、A10
    对应连接:GND-GND;3V3-3V3;RXD-A9;TXD-A10

在这里插入图片描述

五、实验过程及结果

1.创建工程

这里我们选择用STM32CubeMx来创建工程
点开STM32CubeMx,然后点击ACCESS TO MCU SELECTOR
选择STM32F103C8,然后点击Start Project
选择Connectivity下的USART1,然后Mode选择Asynchronous.

在这里插入图片描述
然后选择NVIC Settings,勾选Enabled

在这里插入图片描述

点开Project Manager下的Project,选择自己的名字和路径,然后将IDE改成MDK-ARM,后面改成V5

在这里插入图片描述
然后点击Code Generator,如下进行勾选,然后点击右上角的GENERATE CODE

在这里插入图片描述

2.程序写入及编译

在STM32CubeMx中选择open project则会跳到keil,我们将在keil中写入代码

在这里插入图片描述
在main.c程序文件中的定义后,新加一句定义需要给上位机发送的消息
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++);
}

在这里插入图片描述

在main函数中的while循环中调用查询,并调用延时函数

 while (1)
  {
		
			HAL_UART_Transmit(&huart1,hello,20,100000);
			Delay_wxc(3500); //这里每个人电脑不一样发送的间隔时延需要自己调整尝试
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

在这里插入图片描述
这些都弄完后,即可进行编译

在这里插入图片描述

这里编译完成,0 error和0 warning
如果发现出现
*** Target ‘chuankou’ uses ARM-Compiler ‘Default Compiler Version 5’ which is not available.
*** Please review the installed ARM Compiler Versions:
‘Manage Project Items - Folders/Extensions’ to manage ARM Compiler Versions.
‘Options for Target - Target’ to select an ARM Compiler Version for the target.
*** Rebuild aborted.
则是需要点开小魔法棒,将ARM Compiler改成V6.18即可成功编译

在这里插入图片描述

3.Stm32最小核心板运行

3.1 用flymcu进行烧录

先将板子按照上面连接好,插上电脑,然后打开flymcu
选择之前编译后生成的hex文件,然后搜索串口找到我们的串口

在这里插入图片描述
然后将STM32最小核心板上的boot0置1,boot1置0

请添加图片描述
然后按下板子上的复位按钮,点击flymcu的开始编程

在这里插入图片描述

3.2 用串口调试助手查看

将booto和boot1重新置为0,然后按下复位按钮

请添加图片描述

打开串口调试助手,查看环境

在这里插入图片描述
点击打开串口,即可收到“hello windows!",运行结果正确

在这里插入图片描述

六、用Keil观察串口波形

1.环境搭建

点击小魔法棒,找到debug,在下面勾选Use SimlatorRun to main(),然后将两个Dialog Dll分别改成DARMSTM.DLLTARMSTIM.DLL,然后将两者后面的Parameter改成-pSTM32F103C8.

在这里插入图片描述

环境搭建完成后,点击调试按钮,然后选择逻辑分析仪

在这里插入图片描述

逻辑分析仪窗口跳出来后,点击Set up,然后点击右上角红叉旁边的正方形
添加一个USART1_SR的地址,然后将模式改为git,最后点击close(只有点了close才会保存)

在这里插入图片描述

2.波形分析

点击run按钮或者按F5

在这里插入图片描述

我们在一个间隔里放一个参照,在下一个地方观察
发现低电平持续时间约为86.875 us

在这里插入图片描述

同时观察到高电平持续时间约为3.5 us

在这里插入图片描述

重做上一个LED流水灯作业,直接按照上一个博客一步一步做即可
上一次博客


总结

此文章主要了解了一些串口协议和RS-232、485标准,以及RS232、485电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理,并依靠STM32cubemx完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。并使用keil观察波形。

参考链接:
https://blog.csdn.net/ssj925319/article/details/111984002
https://blog.csdn.net/vic_to_ry/article/details/110451036
https://blog.csdn.net/qq_43279579/article/details/112233696
https://blog.csdn.net/qq_43279579/article/details/112213196

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解串口协议,及完成STM32的USART串口通讯程序,并用keil观察波形 的相关文章

  • ROS中控制小乌龟移动(2种方法)

    操作系统 xff1a Ubuntu16 04 ROS版本 xff1a Kinetic 目录 方法一 xff1a 用键盘控制小乌龟移动1 启动ROS Master2 打开小乌龟3 键盘控制小乌龟 方法二 xff1a 通过命令发布话题控制小乌龟
  • QT/C++——对话框

    一 标准对话框 include 34 widget h 34 include lt QVBoxLayout gt include lt QHBoxLayout gt Widget Widget QWidget parent QWidget
  • QT/C++——主窗口和事件处理

    一 主窗口 上面就是一个主窗口 xff0c 主窗口中的每一个都是Action 这次新建工程要选择mainwindow ifndef MAINWINDOW H define MAINWINDOW H include lt QMainWindo
  • QT/C++——网络编程

    目录 一 基础知识复习 二 UDP 客户端 xff1a 服务器 xff1a 三 TCP 服务器 xff1a 客户端 xff1a 四 小项目 客户端 xff1a 服务器 xff1a 一 基础知识复习 这部分内容前面讲的比较详细 xff0c 现
  • Linux驱动开发——高级I/O操作(一)

    一个设备除了能通过读写操作来收发数据或返回 保存数据 xff0c 还应该有很多其他的操作 比如一个串口设备还应该具备波特率获取和设置 帧格式获取和设置的操作 一个LED设备甚至不应该有读写操作 xff0c 而应该具备点灯和灭灯的操作 硬件设
  • ubuntu22.04安装与配置

    目录 一 环境及下载 iso下载 VM配置 二 虚拟机与环境配置 虚拟机开始后的配置 一些工具配置 参考 xff1a VMware Workstation Pro 文档 一 环境及下载 iso下载 Download Ubuntu Deskt
  • Linux——互斥与同步

    目录 一种典型的竞态 内核中的并发 中断屏蔽 原子变量 自旋锁 读写锁 顺序锁 一种典型的竞态 假设整型变量i是驱动代码中的一个个全局变量 xff0c 在驱动的某个例程中执行了i 43 43 操作 xff0c 而在中断服务程序中也执行了i
  • 基于max30102的物联网病房监测系统(传感驱动和数据处理)

    目录 一 实物展示 二 主体介绍 三 MAX30102的驱动 四 MAX30102的数据处理 奋斗一个星期 xff0c 每个引脚都是扒皮焊接然后再把皮包回去的 这几天吸的垃圾气体感觉要少活两年 一 实物展示 这次吸取上次教训 xff0c 把
  • 基于max30102的物联网病房监测系统(中断处理和主题逻辑)

    目录 五 中断处理 六 主体框架 对采集数据的初始化 核心功能的实现 烟雾 通信帧格式 wifi接收数据的处理 OLED显示 五 中断处理 void SysTick Handler void TimingDelay Decrement vo
  • 无人机4G数传方案(合宙cat1模块)

    一 合宙Cat1简介 YED C724 核心板是由银尔达 xff08 yinerda xff09 基于合宙 Air724 模组推出的低功耗 xff0c 超小体积 xff0c 高性能嵌入式 4G Cat1 核心版 xff0c 标准的 2 54
  • C++学习ros2话题机制(发布与订阅)

    C 43 43 学习ros2 一 创建文件和文件夹1 结构2 创建工作空间和工作包3 直接创建node cpp文件 二 编写节点文件 xff08 发布订阅 xff09 1 node1 cpp xff08 发布 xff09 2 CMakeLi
  • AttributeError: module ‘keras.backend’ has no attribute ‘set_image_dim_ordering’

    问题 原始代码如下 xff1a keras span class token punctuation span backend span class token punctuation span set image dim ordering
  • openmv识别红色物体并返回坐标给stm32单片机,通过pid控制舵机云台

    本人搜索了有关于舵机云台pid控制的代码 xff0c 但是都没有搜到想要的结果 xff0c 现在自己写出来了代码 xff0c 所以就将自己写的代码分享出来 xff0c 和大家一起学习进步 1 openmv识别红色物体 43 返回中心坐标的的
  • vs解决报错:C++ qualified name is not allowed(E0283)

    我们看 把在GCC下编译过关的c 43 43 程序放在vs下却不能过 仅给出部分代码 其他以此类推 先不要慌着改 看下详细信息 看上去都是语法错误 但这真的没任何语法错误啊 百度上查找下 报错信息都不一样 别人是类里面多加限定符 我这是正常
  • Linux下的man命令

    目录 一 man是什么 xff1f 二 man命令的使用1 通过man man查看man手册2 通过man来进行查询 四 总结 一 man是什么 xff1f man所代表的的是英文单词manual xff0c 也就是帮助手册的意思 xff0
  • IO多路复用之select

    目录 一 IO多路复用二 select函数三 select实现socket服务器 xff08 1 xff09 流程图 xff1a xff08 2 xff09 代码讲解 xff1a 四 总结代码示例 xff1a 一 IO多路复用 IO多路复用
  • curl 和 wget 命令下载

    curl 和 wget 命令下载 一 wget下载1 wget介绍2 wget下载方法 二 curl下载1 curl介绍2 curl下载方法 三 wget下载sqlite实例总结 一 wget下载 1 wget介绍 wget 是一个从网络上
  • Linux下载安装和使用SQLite

    Linux安装SQLite 一 SQLite下载二 SQLite安装三 SQLite的使用1 解决无法直接用sqlit3命令2 解决无法编译的问题 总结 一 SQLite下载 首先 xff0c 前往SQLite官网下载页面找到包含confi
  • 解决:‘config.status: error: Something went wrong bootstrapping makefile fragments......’问题

    解决 xff1a config status error Something went wrong bootstrapping makefile fragments 问题 一 问题二 解决方法 一 问题 首先我们来看安装sqlite时报的这
  • TFTP服务器搭建与使用

    文章目录 一 TFTP协议二 TFTP服务器搭建1 安装TFTP服务器2 创建TFTP服务文件夹3 配置tftp文件4 配置tftpd hpa文件 三 TFTP服务器使用 一 TFTP协议 TFTP xff08 Trivial File T

随机推荐

  • 深入探讨Linux驱动开发:Linux设备树

    文章目录 一 设备树介绍二 设备树框架1 设备树框架2 节点基本格式3 节点部分属性简介 总结 一 设备树介绍 设备树 xff08 Device Tree xff0c 简称 DT xff09 是一种在嵌入式系统中描述硬件设备的一种数据结构和
  • 深入探讨Linux驱动开发:驱动介绍与hello驱动实例

    文章目录 前言一 Linux驱动介绍1 用户态和内核态2 内核功能介绍3 驱动程序介绍 二 驱动程序分类与注意事项1 驱动程序分类2 内核驱动开发注意事项 三 hello驱动开发1 驱动模块2 模块加载和卸载函数3 编写hello模块4 M
  • ROS中使用乐视 奥比中光(Astra Pro)深度相机显示彩色和深度图像

    环境 UbuntuROS Kinect or Melodic 奥比中光ROS驱动包安装地址 xff1a https github com orbbec ros astra camera 1 安装ROS 2 安装依赖 span class t
  • 深入探讨Linux驱动开发:字符设备驱动开发与测试

    文章目录 一 字符设备驱动介绍1 设备驱动介绍 二 设备号1 设备号介绍2 分配与释放设备编号 dev t类型 静态分配设备号 动态分配设备号 释放主次设备号 手动创建设备节点 自动创建设备节点 删除设备节点 三 字符设备注册1 cdev结
  • ZED-深度感知使用

    文章目录 1 深度感知配置2 得到深度数据2 1 得到深度值 3 展示深度图4 获取点云数据4 1 从点云数据中计算距离 5 得到法线图像6 调整深度分辨率 1 深度感知配置 可以在初始化时使用InitParameters xff0c 在运
  • Linux系统之 开机自启动程序脚本 编写

    Linux系统启动加载程序 最近完成了项目 xff0c 来个开机自启运行 找到已编译好的程序 xff08 以下是我编译的house xff09 span class token function ls span l span class t
  • 算法时间复杂度、空间复杂度分析

    算法时间复杂度 在计算机程序编写前 xff0c 依据统计方法对算法进行估算 xff0c 经过总结 xff0c 我们发现一个高级语言编写的程序程序在计算机上运行所消耗的时间取决于下列因素 1 算法采用的策略和方案 编译产生的代码质量 3 问题
  • Linux 选择题一百道

    cron 后台常驻程序 daemon 用于 xff1a A 负责文件在网络中的共享 B 管理打印子系统 C 跟踪管理系统信息和错误 D 管理系统日常任务的调度 在大多数Linux发行版本中 xff0c 以下哪个属于块设备 block dev
  • 程序返回return与系统退出exit

    程序返回return与系统退出exit return是语言级别的 xff0c 它表示了调用堆栈的返回 xff1b exit则是系统调用级别的 xff0c 它表示了一个进程的结束 return是返回函数调用 xff0c 如果返回的是main函
  • 结构体、结构体变量、结构体指针、字符串

    结构体 数组是用于保存一组相同类型数据的 而结构体是用于保存一组不同类型数组的 在使用结构体之前必须先定义结构体类型 因为C语言不知道你的结构体中需要存储哪些类型数据 我们必须通过定义结构体类型来告诉C语言 我们的结构体中需要存储哪些类型的
  • linux下脚本实现 切换root用户并执行

    借助一个工具 expect sudo apt span class token operator span get install expect 编写脚本 xff1a vim root sh span class token operato
  • csdn极客江南

    零基础学会 C 语言课程学习突破 1500 人 xff1a 学习地址 xff1a https edu csdn net course detail 31452 spm 61 1001 2014 3001 5507TS TS 专栏文章更新至第
  • 音视频编码格式认知

    编码格式对应的就是音频编码和视频编码 xff0c 音频编码标准和视频编码标准 xff0c 每种编码标准都对应的编码算法 xff0c 其目的是通过一定编码算法实现数据的压缩 减少数据的冗余 视频编码指的是通过特定的压缩技术 xff0c 将某个
  • TensorFlow、PyTorch各版本对应的CUDA、cuDNN关系

    TensorFlow PyTorch各版本对应的CUDA cuDNN关系 xff08 截止2021年4月7日 xff09 TensorFowLinuxCPUGPU macOSCPUGPU WindowsCPUGPU PyTorchCPUGP
  • Android源码新大陆

    vold amp av http aospxref com android 13 0 0 r3 xref system vold model http aospxref com android 13 0 0 r3 xref framewor
  • QT读取GPS模块时,显示不完全,一条指令只能ReadAll32个字节,数据被分开

    在用QT读取GPS模块的时候 xff0c 发现读取到的数据总是显示不出来经度 xff0c 用debug调试 xff0c 发现数据被分开 xff0c 一条指令只能读到N那里 xff0c GNRMC 064401 65 A 3110 47069
  • STM32CubeMX配置串口DMA传输实现不定长数据收发

    串口简介 串口是全双工的串行通信协议 串口通信指串口按位 xff08 bit xff09 发送和接收字节 xff08 一个字节有8位 xff09 尽管比特字节 xff08 byte xff09 的串行通信慢 xff0c 但是串口可以在使用一
  • 单片机串口不够用怎么办?

    扩展串口 一 为什么要扩展串口 xff1f 一块单片机的串口是有限的 xff0c 一般2 4个 当我们做一个项目时需要连接多个外设时跟单片机通讯时 xff0c 且通讯都是以串口形式 那么我们只能去扩展串口来满足我们的应用需求 二 解决方法
  • C语言:自定义实现strcat函数

    include lt stdio h gt include lt assert h gt char My Strcat char str1 const char str2 assert str1 amp amp str2 指针不为空 cha
  • 了解串口协议,及完成STM32的USART串口通讯程序,并用keil观察波形

    文章目录 前言一 串口协议1 RS 2322 485标准 二 RS 232 485和TTL电平1 RS 232电平2 4853 TTL电平4 区别 三 USB TTL转2321 CH3402 发送接收3 USB转RS 232 四 完成一个S