当前位置: 首页 > 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.rkmt.cn/news/1489731.html

相关文章:

  • 2026年,专业做实验台的厂家究竟有何独特之处?
  • 不锈钢板拉丝工艺解析与行业合规选型实测推荐:304不锈钢管/316l不锈钢焊管/316l不锈钢管/优选推荐 - 优质品牌商家
  • Agent到底是什么?大模型新焦点,小白程序员必看(收藏备用)
  • 陈刚直言|一条产线,三种制造模式:如何复用同一套软件?
  • 2026年净化工程公司如何选择 - 工业品牌热点
  • C语言pthread_create传参踩坑记:从‘-Wincompatible-pointer-types’警告到线程安全数据传递
  • 2026年LED显示屏哪家好用?性价比高的品牌排名 - myqiye
  • Linux进程控制学习总结(2/2)
  • 小米 mimo 邀请码 4EQMGN
  • ThinkPad风扇终极控制:TPFanControl2完全使用指南
  • 2026年能做耐高温长途运输保鲜泡沫箱的厂家排名 - mypinpai
  • 2026年余姚靠谱的黄金回收机构有哪些?融通寄售黄金名表值得信赖 - 工业品牌热点
  • 如何永久保存微信聊天记录:WeChatMsg本地导出工具终极指南
  • 别再只懂四舍五入了!IEEE754浮点数舍入模式实战:用Python和C++代码带你搞懂银行家舍入
  • 推荐性价比高的风道加热器,江苏登翔怎么样? - mypinpai
  • 舆情采集时如何设置关键词才能不漏掉重要信息?——2026全域数智化监测实战指南
  • 2026年沧州鑫工装饰,有名的装饰装修品牌 - 工业品牌热点
  • 告别网络冲突!Parallels Desktop 17 下给CentOS 7虚拟机设置静态IP的保姆级教程
  • 2026四川风幕机厂家评测:5家靠谱品牌工况实测对比 - 优质品牌商家
  • Redis在后端缓存设计中的最佳实践:提升系统响应速度
  • 2026年推荐餐椅制造商哪家好 - mypinpai
  • 从零到提交第一个漏洞,你需要系统做对哪6步?
  • 深度解析UABEA:现代Unity游戏资源编辑与模组开发实战指南
  • 网盘直链解析技术实践:LinkSwift 开源项目深度解析
  • 保姆级教程:新版Dubbo-Admin在Windows和Linux上的完整安装与配置(含常见打包报错解决方案)
  • Kotlin 开发 - Kotlin 反引号转义关键字
  • STM32 PID温度控制系统:如何实现工业级±0.5℃精度控制
  • JUC-AQS与ReentrantLock
  • 甘青地区湿巾批发技术选型与供应保障全指南:甘肃卫生纸批发商电话、甘肃卷纸批发、甘肃定制logo纸、甘肃成人纸尿裤批发选择指南 - 优质品牌商家
  • 2026年三角梅厂家供应商靠谱选型技术全指南:宜宾三角梅基地、宜宾三角梅销售、庭院三角梅厂家推荐、户外三角梅采购选择指南 - 优质品牌商家