当前位置: 首页 > news >正文

【环形缓冲区】1-概念与编程

【环形缓冲区】1-概念与编程

文章目录

  • 【环形缓冲区】1-概念与编程
    • 一、环形缓冲区的引入
    • 二、环形缓冲区 编程

这一点很重要,后续还会做补充

一、环形缓冲区的引入

//下面是一个按键控制LCD的程序main(){while(1){key=read_key();// 读取按键值LCD(key);// 耗时 30min}}
  • 想要在这 30min 中,不丢失按键,就需要引入中断;
// 中断回调函数key_ISR(){g_key=记录key值;// 为防新值覆盖旧值,需要用buf ==> 环形buf}
  • 因此引入环形缓冲区,一方写buffer、另一方读buffer
环形缓冲区示例

二、环形缓冲区 编程

//circle_buffer.h#ifndef_CIRCLE_BUF_H#define_CIRCLE_BUF_H#include<stdint.h>typedefstructcircle_buf{uint32_tr;uint32_tw;uint32_tlen;uint8_t*buf;}circle_buf,*p_circle_buf;voidcircle_buf_init(p_circle_buf pCircleBuf,uint32_tlen,uint8_t*buf);intcircle_buf_read(p_circle_buf pCircleBuf,uint8_t*pVal);intcircle_buf_write(p_circle_buf pCircleBuf,uint8_tval);#endif/* _CIRCLE_BUF_H */
//circle_buffer.c#include<stdint.h>#include"circle_buffer.h"voidcircle_buf_init(p_circle_buf pCircleBuf,uint32_tlen,uint8_t*buf){pCircleBuf->r=pCircleBuf->w=0;pCircleBuf->len=len;pCircleBuf->buf=buf;}intcircle_buf_read(p_circle_buf pCircleBuf,uint8_t*pVal){if(pCircleBuf->r!=pCircleBuf->w){*pVal=pCircleBuf->buf[pCircleBuf->r];pCircleBuf->r++;if(pCircleBuf->r==pCircleBuf->len)pCircleBuf->r=0;return0;}else{return-1;}}intcircle_buf_write(p_circle_buf pCircleBuf,uint8_tval){uint32_tnext_w;next_w=pCircleBuf->w+1;if(next_w==pCircleBuf->len)next_w=0;if(next_w!=pCircleBuf->r){pCircleBuf->buf[pCircleBuf->w]=val;pCircleBuf->w=next_w;return0;}else{return-1;}}
http://www.jsqmd.com/news/978005/

相关文章:

  • 2026年,专业做实验台的厂家究竟有何独特之处?
  • 不锈钢板拉丝工艺解析与行业合规选型实测推荐:304不锈钢管/316l不锈钢焊管/316l不锈钢管/优选推荐 - 优质品牌商家
  • Windows终极优化神器:WinUtil一键管理你的系统
  • 【JAVA毕设源码分享】基于java的养生药膳食疗系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 2026台州高复机构评测:高考复读学校/高复学校/杭州高复/台州高复/高复/核心维度对比与选型推荐 - 优质品牌商家
  • 别再只用uvm_do了!手把手教你用start_item/finish_item精准控制UVM Sequence(附源码分析)
  • 基于TCN-Transformer-BiGRU多输出回归+SHAP可解释性分析+NSGAII Matlab代码(四目标)
  • Codex客户端下载与自动化教程
  • 2026年包就业职高选购指南,现代交通技工学校值得考虑 - myqiye
  • 2026年污泥干燥机费用,哪家价格合理 - myqiye
  • 如何在5分钟内让经典IPX游戏在Windows 10/11上重生:IPXWrapper终极兼容指南
  • 高速光模块高低温老化测试专用 TEC 温控解决方案
  • Vue01
  • 你的数字记忆保险箱:完全免费永久保存微信聊天记录终极指南
  • 终极指南:免费Windows风扇控制神器FanControl完全配置手册
  • DeTikZify终极指南:3步将科研图表秒变高质量TikZ代码
  • 2026年Q2登高作业培训品牌排行及选型实操推荐 - 优质品牌商家
  • 陈刚直言|一条产线,三种制造模式:如何复用同一套软件?
  • 2026年友联国际物流,海运整箱拼箱性价比高的厂家推荐 - mypinpai
  • 怎样同时采集美团和饿了么两个平台的竞品数据?——2026跨平台AI Agent自动化实战指南
  • 友联国际物流的进出口清关服务靠谱吗 - myqiye
  • 2026年6月大润发购物卡全解析及闲置变现推荐:广州,深圳,杭州,全国沃尔玛购物卡回收价格/优选指南 - 优质品牌商家
  • Agent到底是什么?大模型新焦点,小白程序员必看(收藏备用)
  • 2026年净化工程公司如何选择 - 工业品牌热点
  • 大模型推理引擎架构深度解析:从 PagedAttention 到 Disaggregated Serving 的高性能推理服务核心技术
  • 一篇读懂C语言
  • C语言pthread_create传参踩坑记:从‘-Wincompatible-pointer-types’警告到线程安全数据传递
  • 2026年LED显示屏选购指南,哪家好? - mypinpai
  • Linux进程控制学习总结(2/2)
  • 基于spark的南宁空气质量评估与预测系统的设计与实现