STM32标准库_08 | 环形缓冲区的使用

本篇文章主要介绍环形缓冲区的使用,为什么使用环形缓冲区呢? 主要是用于解决设备接收数据的速度与设备处理数据的速度发生不匹配的情况,简单来说就是把数据先存到环形缓冲区里面,等CPU空闲的时候一次性处理,来防止接收丢包。

此次使用的环形缓冲区是一个开源库,作者MaJerle。

1.开发环境

软件环境

使用MDK5.25版本,芯片包为STM32F4系列。

硬件环境

开发板:STM32F407VGT6开发板,是一款大容量芯片,最高能跑168MHz。

烧录器:STlink或者Jlink。

2.工程搭建

直接复制之前的工程做修改即可。

环形缓冲区使用概述

本次实验在串口接收中断中把数据存入环形缓冲区,然后在系统轮询的时候一次性处理接收到的数据(直接回环)。

环形缓冲区建立

创建环形缓冲区并加入到串口初始化中

环形缓冲区数据写入

在串口接收中断中把数据写入环形缓冲区

环形缓冲区数据读取

在系统轮询中把缓冲区数据读取出来并发给上位机

3.效果测试

4.总结

单片机的串口都是接收到一个数据便触发中断给程序处理,这种方式是没有缓存的,当频繁的接收到数据(即数据接收太快了),而我们已经来不及处理了,数据便会出现覆盖产生丢包,所以环形缓冲区实际就是以空间换时间的方式来解决串口通信数据丢包问题。

关于环形缓冲区的原理与实现可以自行搜寻相关文章学习,此处不展开来讲。

代码已全部上传到gitee

posted @   半截心跳  阅读(710)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示