全国统一服务热线:400-123-4657

站内公告:

诚信为本,市场在变,诚信永远不变...

联系我们CONTACT

地址:山东省滨州市西华县都复大楼9388号
传真:+86-123-4567
手机:16622206711
邮箱:admin@youweb.com

400-123-4657

第五系列

当前位置: 首页 > 产品中心 > 第五系列

‘雷火电竞LH官网入口’嵌入式硬件通信接口:使用RingBuffer处理数据(一)

2023-12-11点击量:433

本文摘要:前三节原始说明了UART的原理以及构建过程。

前三节原始说明了UART的原理以及构建过程。《嵌入式硬件通信接口协议-UART(一)协议基础》《嵌入式硬件通信接口协议-UART(二)有所不同电气规范下的标准》《嵌入式硬件通信接口协议-UART(三)较慢用于串口及应用于》事实上UART只是一个传输层的协议。在实际的项目用于中,往往是根据项目的明确市场需求,在以UART作为物理传输模块的通信方式上,自定义私有的应用层协议,这个应用层协议本质就是数据协议,并且对协议的解析和构建,都必须MCU对数据展开内存、计算出来、校验、分析等操作者。

说道到内存,在这再行买个关子……估算大部分人首先想起的是,代码里定义个全局变量的内存数组,然后从串口的接管寄存器朗读数据,并逐一字节地写道内存数组里,接完一包数据,继续执行数据分析……这个点子是对的,逻辑是合的,但是……多少字节是原始一包数据?如果是中断接管,第一包在收完还并未再也几乎处置,有数据进去启动时中断,又被载入内存数组覆盖面积原有数据呢?针对这问题,或许有人不会想起,多定义几个内存数组,数据包写满一个内存数组则开始写道另一内存数组,或者分析处置前再行拷贝出来,再行或者分析处置前关串口接管……说来说去,这样子倒腾数据,一包一包的拷来移除的,过于没有效率了,还想关中断,这样通信效率也太低了!针对这里的内存问题,引进一个经典:循环缓冲区Circularbuffer。有很多称谓:圆形缓冲区(器)、圆形队列…如此经典,在互联网上的资料也是相当多了,中文版的讲解引荐用于百度百科展开搜寻“环形缓冲器”,英文版引荐用于维基百科展开搜寻“Circularbuffer”,在此仍然赘述。

当你理解循环缓冲区之后,是不是早就磨刀霍霍地想立刻敲打代码?不生气,再行到开源社区网站去找一去找,这里引荐GitHub。好的开源项目,有人参予确保,还有人参予用于并给与对系统,使得项目代码更加强壮。到GitHub主页搜寻“Circularbuffer”寻找涉及项目,检验C语言的项目:从搜寻结果中看见,按照涉及程度排序方式下,被星标珍藏的项目最少的是“TPCircularBuffer”,点进来后找到它用作音频处置“Asimple,fastcircularbufferimplementationforaudioprocessing”换回个精简的来看吧。

回到搜寻结果列表,页面第二个的“Ring-Buffer”,它的叙述早已解释是用作嵌入式系统“Asimpleringbuffer(circularbuffer)designedforembeddedsystems.”眼见embedded就平易近人,就用这项目参照。


本文关键词:雷火电竞LH官网入口

本文来源:雷火电竞LH官网入口-www.jda56.com