首页
学习
活动
专区
圈层
工具
发布

循环队列原理及在单片机串口通讯中的应用(一)

用数组创建一个普通队列,当有数据存储时,队列尾指针不断增加,直到空间用完,当数据出队列时,队列头指针不断增加,直至和队列尾相同时,所有数据完成出队列,那么这时候会引入一个问题,全部出队后,将无法继续入队...,这样的情况也叫做“假溢出”,即使数组中,明明还有空间可以利用,但是却无法使用(平时我们做串口接收的时候,往往是通过清零计数器,清空数组,重新接收来解决这一问题)。...先来定义个结构体: typedef struct Squeue { /*顺序循环队列的类型定义*/ DataType queue[QUEUESIZE]; int front, rear; /*队头指针和队尾指针...(SCQueue *SCQ) { SCQ->front = SCQ->rear = 0; /*队头指针和队尾指针都置为0*/ SCQ->tag = 0; /*标志位置为0*/ } 判断是否为空队列...本次的介绍就到这里啦,下章介绍:环形队列在单片机中的应用,欢迎大家持续关注嵌入式实验基地,来这里还可以学习HAL库+cubemx的更多精彩内容哦!

1.6K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    循环队列原理及在单片机串口通讯中的应用(二)

    实验目的 HAL库下串口的配置及使用 环形队列在串口数据接收中的使用 硬件环境 falling-star board(自设计,下期开源资料,主控STM32f103RET6) ?...软件环境 keil5 cubemx cubemx配置 1、 时钟的配置,   无论什么平台,什么单片机,第一步,我想都是要搞清楚时钟,时钟是一切的根源,外部晶振选择根据自己的硬件焊接的晶振频率选择,最大频率...2、串口配置   主要配置参数见下图: ? 3、配置调试模式   有时候,我们发现调试模式无法使用,那可能跟这个有关系,通过此配置,我们可以选择不同的模式,同时硬件设计主要注意IO引脚的占用情况。...逻辑代码编写   本次用到的硬件资源不多,cubemx配置也比较少,接下来主要编写环形队列在串口数据处理中的使用。...1、MCU串口接收代码编写   在此之前,先来介绍个串口打印的方法,日常调试过程中,串口打印绝对是必不可少的利器,尤其是在一些安全芯片上,由于没法进行实时仿真,串口打印成了非常简便且有效定位bug的手段

    1.6K10

    【单片机入门】(三)应用层软件开发的单片机学习之路-----UART串口通讯和c#交互

    作者:陈显达 原文标题:【单片机入门】(三)应用层软件开发的单片机学习之路-----UART串口通讯和c#交互 原文链接:https://www.cnblogs.com/1996-Chinese-Chen...串口通讯和c#串口进行通讯的一个案例,以及什么是中断,中断的作用和实践,话不多说,让我们正式开始。...17,但是在我们烧录的时候,1和3是不能使用的,因为我们通过USB将单片机连接到电脑上,使用的串口引脚就是1和3,所以我们可使用串口只有两个,而Arduino IDE上面,对应的Serial也有四个静态类...编码 在下面的代码中,我们开始了一个简单的一个串口通讯,在代码第一行,是和c语言一样引入我们需要的库文件,然后在第二行,定义了HardwareSerial这个类的一个MySerial1对象,里面的构造函数的值是...,VCC或者5V接单片机的5V引脚,USB转TTL的GND和单片机的GND相接,然后USB转TTL的rxd引脚和单片机17引脚相接,txd引脚和单片机的16引脚相接,如下图所示接线,5v不可和gnd接反

    2.3K20

    C#实例:串口通讯

    最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信。...它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可以同时向两端或者更多进行数据发送,它们之间的传输数据类型是byte,串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。...听大佬说的几个关于串口通讯的术语,啥?啥,这是啥?   ...就让我这个“小白”给你说说:第一个波特率,这个东西在不同领域都有涉及,在串口通讯中两个串口之间通讯之间的信号单元叫做码元,每分钟传递的信号(码元)也就是波特率;   第二个数据位、停止位:这个听名字就知道是啥意思了...如果想要在C#中玩转串口通讯或者模拟串口,你必须先搞个硬件,当然我们是在模拟,那你就弄个模拟的工具呗,这个我给大家准备好了,自己去下载吧 链接:https://pan.baidu.com/s/1TcdgIWMY0i9BiKVGDxnAzQ

    4.6K21

    C# 串口通讯SerialPort

    这个只是对SerialPort进行简单的使用,对串口设备进行简单数据的发送和数据的接收,调用几个方法就可以完成串口的通讯,但是没有设备去实验还是感觉不好的。...这里我使用了虚拟串口软件和串口调试助手(用来验证串口是否接收到数据) 使用软件: 虚拟串口软件Virtual Serial Port Driver 7.2 友善串口调试助手 Virtual...Serial Port Driver 7.2 这里简单说下虚拟串口软件和串口调试助手的简单使用虚拟串口软件生成串口都是成对生成的,例如生成COM2和COM3两个串口,当对COM2写入数据时,COM3就会接收到写入的数据...这里可以看到COM2发送消息COM3可接收,COM3发送消息COM2也可以接收到,说明实验环境搭建成功 SerialPort 使用串口最重要的设置就是串口名称PortName和串口波特率BaudRate...和绑定串口接收到数据的事件DataReceived。

    1.2K10

    .NET Core 跨平台 串口通讯 ,WindowsLinux 串口通讯,flyfire.CustomSerialPort 的使用

    ,传递数据,物联网设备中广泛使用串口方式连接通讯,物联网通讯协议 :Modbus 协议 ASCII、RTU、TCP模式是应用层的协议,与通讯方式无关。...开机后,打开 设备管理器 ,查看 设备 - 端口(COM 和 LPT),出现如下图所示,说明正常 ?  原理 因为是虚拟串口,有些问题需要注意一下 ?...把类库需要的 Linux 依赖库添加到项目中,关于原因、添加方法,可以看笔者的另一篇文章 https://www.cnblogs.com/whuanle/p/10499498.html#4 4,flyfire.CustomSerialPort...串口通讯已经已经实现了,如何实现 Modbus 协议,跟设备(单片机、开发板之类的小设备)进行约定通讯呢~笔者的另一篇文章~ ? 项目源码已经上传到 http://pan.whuanle.cn/?...dir=uploads/dotnet-core-串口 8,Modbus 协议的实现例子 由于时间和篇幅问题,这里简单说一下 Modbus 和实现的示例。

    2.2K20

    『51单片机』串口通信

    串口introduce 串口是一种应用十分广泛的通讯接口(在工业控制领域它的运用是十分广泛的),串口成本低,容易使用,通信线路简单,可实现两个设备的互相通信。...单片机的串口可以使单片机与单片机,单片机与单片机『USB和转串口可以实现通信』 单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。...串口和定时器一样都是单片机的内部资源 (●'◡'●) 五一单片机内部自带串口UART(Universal Asynchronous Receiver Transmitter) 通用异步收发器可实现单片机的串口通信...陀螺仪 上图当中的第②张图片名为:陀螺仪『它增强了单片机系统的硬件实力』⇢ 从这句话我们就可以看出我们单片机是一个芯片,它的一个内部资源是有限的,但是它可以从串口和其它设备进行一个通信。...串口是通信设备·单片机的内部资源,是不需要像"LED" "数码管"一样有外部资源使用的。 ​ 注⇢P3.0和P3.1它是和RXD和TXD共用的一个线,那么这个时候那么应该怎么进行区分。

    2.5K21

    Android串口通讯功能实现总结!

    串口通讯功能实现总结功能概述本文档总结了在Android应用中使用serialportlibrary实现串口通讯功能的完整过程。...serialportlibrary采用了多项机制确保串口通讯的安全稳定可靠:双线程设计:独立的发送和接收线程,避免阻塞主线程非阻塞接收:接收线程在无数据时释放CPU资源,提高系统效率数据缓冲:使用LinkedBlockingQueue...缓存接收到的字节,防止数据丢失自动校验:支持BCC校验,确保数据传输的完整性完善的异常处理:全面的异常捕获和处理机制,保证程序稳定性资源管理:自动关闭流和线程,避免资源泄漏使用说明打开串口:点击"打开串口...功能测试所有实现的功能均通过了测试验证,包括:UI界面的正确性串口打开和关闭的稳定性数据发送和接收的完整性异常情况的处理能力结论本次开发成功实现了基于serialportlibrary的...Android串口通讯功能,提供了直观的用户界面和稳定的串口操作能力。

    51110

    单片机通信之串口通信

    单片机常用的通信方式有串口通信,I2C,SPI,UART等等,在这里说一下基于8051单片机串口通信的基本原理。简要介绍单片机与PC机之间的通信。...通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。...主要包括确定定时器的工作方式和利用波特率计算初值、确定串口的工作方式,以及打开相应的中断等。...整个过程需要用到串口调试助手。 利用单片机与PC机的通信,可以实现PC机发送指令来控制单片机进行操作。 总结 总的来说,串口通信有以下几个关键的地方。 ①利用定时器来作为波特率的发生器。...②配置串口相关的寄存器SCON和PCON,SCON主要是用来配置串口的工作方式以及串口使能,以及清除接收/发送中断标志位,PCON用来配置波特率是否加倍。这样初始化就完成了。

    2.6K30

    4.3 51单片机-串口通信

    UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用于单片机和电脑之间以及单片机和单片机之间的通信...图4-3-1 标准RS232串口 上面图中的串行接口叫做 RS232 接口,由于现在笔记本电脑都不带这种 9 针串口了,所以和单片机通信越来越趋向于使用USB协议虚拟的串口(就是使用USB转串口协议芯片...因此电脑的 9 针 RS232串口是不能和单片机直接连接的,需要用一个电平转换芯片 MAX232 来完成,单片机上的电压是TTL标准,TTL电平信号规定,+5V等价于逻辑“1”,0V等价于逻辑“0”。...STC90C51RC/RD+系列单片机串口通信对应的专用管脚是P3.0/RxD和P3.1/TxD,由它们组成的通信接口就叫做串行接口,简称串口。...(P3.0/RxD和P3.1/TxD),与传统8051单片机的串口完全兼容。

    1.8K20

    『51单片机』串口通信配置

    】系列_謓泽的博客-CSDN博客 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 本系列哔哩哔哩江科大51单片机的视频为主以及博主自己的总结梳理  目录 ⒈串口向电脑发送数据 配置串口 串口相关寄存器...控制这个电路 SBUF是串口数据缓存寄存器,发送的数据存储到这里。 PCON是电源管理寄存器其中有SMOD和SMOD0这两位是控制串口的,之所以放在电源这里可能是单片机当中资源有点紧张。...然后串口又多了所以分配到电源管理寄存器当中去了。 IE是允许中断标志当种有EA和ES是这个中断控制的东西与串口有关。 SM0和SM1工作模式 在这里由于我们只讲述最常用的模式一。 ​...想让单片机接收数据的话就置为1,不想让单片机接收就置为0] B3→TB8 = 0 [方式三和方式二置1用于发送第⑨位数据,方式一置0] B2→RB8 = 0 [方式三和方式二置1用于发送第⑨位数据,方式一置...串口向电脑发送数据 - 代码 代码的内容→单片机每隔⒈s向电脑发送一次数据。

    1.4K11

    C#编写单片机上位机软件-串口通讯(BMS汽车动力电池管理系统)

    只希望大家不要像我一样,走这么多弯路 – – 正在持续优化中,欢迎关注点赞三连~ 华丽的分割线——————————————————————————————– 废话不多说直接看效果图—- 其中串口数据的接收读取是最难的部分...,因为下位机的特殊性(属于公司机密),传上来的都不知道是几进制的数据,还要根据特定的通讯协议分配显示槽,博主呕心沥血查阅各种资料, 才写出了字符串和数值的各种转换,高8位字节低8位字节读取、接收数据延迟显示...、显示槽的定时刷新、时间显示、保存功能等等也是做好了的- – – ——————————— 华丽的分割线————————————————————————————— 直接上最难的地方: 一、串口数据接收事件..., STR_DATA1); // textBox1.AppendText(myStr); System.IO.File.WriteAllText(@"F:\单片机上位机开发...\lyb上位机\数据保存\接收数据保存.txt", jiemiantext1.Text); System.IO.File.WriteAllText(@"F:\单片机上位机开发\lyb

    3.6K20

    单片机多字节串口接收(转)

    工作了一年多,写了不少单片机串口程序。感觉串口多字节接收部分的逻辑相对于配置寄存器跟串口回复来说,是有点难度的——寄存器配置基本上都是死的,串口回复多字节跟回复一字节只是多了一个循环。   ...串口接收程序是基于串口中断的,单片机的串口每次接收到一字节数据产生一次中断,然后再读取某个寄存器就可以得到串口接收的数据了。然而在实际应用当中,基本上不会有单字节接收的情况。...一般都是基于一定串口通信协议的多字节通信。在422或者485通信中,还可能是一个主机(一般是计算机)带多个从机(相应的有单片机的板卡)。...这就要求我们的单片机能够在连续接收到的串口数据序列中识别出符合自己板卡对应的通信协议,来进行控制操作,不符合则不进行任何操作。简而言之就是,单片机要在一串数据中找到符合一定规律的几个字节的数据。   ...这次的通信协议如下,串口波特率19200,2个帧头aa 55 ,一个板选,6字节数据,一个校验字节(除帧头外其他数据的和)。

    2.4K50

    (七)51单片机基础——串口通信

    串口通信 串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。...单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。...51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。...硬件电路 简单双向串口通信有两根通信线(发送端TXD和接收端RXD) TXD与RXD要交叉连接 当只需单向的数据传输时,可以直接一根通信线 当电平标准不一致时,需要加电平转换芯片  相关术语 全双工:...波特率:串口通信的速率(发送和接收各数据位的间隔时间) 检验位:用于数据验证 停止位:用于数据帧间隔         波特率可以理解为切割数据的大小,当你想要传输相应大小的数据的时候,接收方也应该接受这个大小

    2.2K21

    C51 单片机开发认识串口

    本篇文章开始介绍串口的通信。 0x01:什么是串口 串行接口,亦被简称为串口或称为串行通信接口、串行通讯接口(常指代COM接口),是一种采用串行通信方式实现的扩展接口。...0x02:串口的电气标准与协议 串行接口按照电器标准及协议可分为RS-232-C、RS-422和RS-485等。这些标准主要规定了接口的电气特性,而不涉及接插件、电缆或协议细节。...RS-232,也被称为标准串口,是串行通讯接口中最常用的一种。例如,我们常见的电脑主机上的9针串口就属于此类。其最高传输速率达到20kb/s。...这种配置通常包括一个主设备(Master)和多个从设备(Slave)。从设备之间不能直接通信,因此RS-422支持点对多的双向通信模式。...许多笔记本电脑也通过TTL电平与单片机进行通信。

    63810

    TX2使用pyserial建立串口通讯

    TX2使用pyserial建立串口通讯 平台:ubuntu18.04、TX2、Python3.6 写在前面:目前经过测试TX2上是带有串口通讯驱动的,我们只需要设置一下即可。...本次主要讲解如何使用USB转RS232的串口通讯。...但是,使用FT232RL工业串口盒的时候,出现通讯问题(可能是我这块TX2板子自身问题) 下面步入正题,先说一下如何进行解决Ubuntu系统下串口驱动的问题吧: 使用ls /dev/ttyUSB*查看哪几个串口已连接...中间出现不能复制、粘贴的情况,请找到需要复制的文件目录,如上面的/usr/src/Linux-headers-4.2.0-27-generic/drivers/usb/serial 只需要运行:sudo...chmod 777 /usr/src/Linux-headers-4.2.0-27-generic/drivers/usb/serial 系统提示输入密码,正确输入密码之后,就可以粘贴了 注意,内核如果不一样

    2.3K20

    Android OTG之USB转串口模块通讯

    Android OTG之USB转串口模块通讯 微信公众号:CodingAndroid CSDN:http://blog.csdn.net/xinpengfei521 1.背景简介 我们公司开发了一款室内机平板...2.分析及实现思路 智能门锁的控制是通过使用 433射频(不了解的请百度)来进行通讯的; 平板是没法与智能门锁直接进行通讯,但是厂家提供了一个433通讯模块(支持串口); 而平板(支持OTG)是支持USB...转串口模块的,所以整个流程是可以走通的,如下图 ?...3.主要代码实现 3.1初始化USB转串口模块 由于我们选用的是CH340模块,我们先导入ch340的 jar 包,然后在代码中检查手机/平板是否支持USB HOST模式,如果支持我们就初始化通讯时的相关参数...,发送数据时调用 writeData() 方法就可以了,接收数据也类似,具体的业务及通讯的协议、加密规则等都需要你和硬件提供方进行协商对接制定,由于涉及到公司机密,此处我就不进行说明了,只说一下最基本的发送和接收数据

    4.2K10

    没有串口,如何打印单片机调试信息?

    最常用的是通过串口输出uart log,例如51单片机,只要实现串口驱动,通过串口输出就可以了。 串口这种方法实现简单,大部分嵌入式芯片都有串口功能。...某些bug正常运行时会出现,当打开串口log时又不再复现怎么办? 一些封装中没有串口,或者串口已经被用作其他用途,要如何输出log? 本文介绍单片机没有串口时,如何打印调试信息。 1....使用DMA搬运log数据到串口输出,同时又不影响CPU运行,这样就可以解决输出串口log耗时影响系统的问题:STM32串口收发数据为什么要使用DMA?...使用IO模拟串口输出log 最后要讨论的是在一些封装中没有串口,或者串口已经被用作其他用途时如何输出log,这时可以找一个空闲的普通IO,模拟UART协议输出log到上位机的串口工具。...往期推荐 Linux CPU 上下文切换的故障排查 手把手教你写一个 Makefile 文件 一文读懂 | Linux共享内存原理 嵌入式必懂的 CAN 总线,真的讲到位了!!

    2K20
    领券