4.1.2. 循环BUFFER
Overview
本案例以AC632N示例,提供展示了循环buffer接口应用示例和常见问题。
4.1.2.1. 应用示例
/fw-AC63_BT_SDK-ac63_bt_sdk_release_vx.x.x/apps/hid/board/bd19目录下,双击AC632N_hid.cbp打开工程
使用快捷键Alt + g 打开app_config.h,配置CONFIG_APP_IDLE使能
//app case 选择,只选1,要配置对应的board_config.h #define CONFIG_APP_IDLE 1//IDLE
使用快捷键Alt + g 打开board_config.h,板级选择CONFIG_BOARD_AC632N_DEMO
#define CONFIG_BOARD_AC632N_DEMO // CONFIG_APP_KEYBOARD,CONFIG_APP_PAGE_TURNER // #define CONFIG_BOARD_AC6321A_MOUSE // CONFIG_APP_MOUSE //#define CONFIG_BOARD_AC6328A_KEYFOB // CONFIG_APP_KEYFOB
使用快捷键Alt + g 打开app_idle.c,将cbuf_test.c 里面的代码覆盖app_idle.c里面的代码。编译下载代码。
将adkey接好后,短按下key0、key1、key2、key3可将数据写入到cbuf,短按下key4可将数据从cbuf里面读出来,不同的模式对应不同的结果:
将#define CBUF_MODE设置为0,按下key0~key3多次写入,按下key4可多次读出
将#define CBUF_MODE设置为1,按下key0~key3多次写入,按下key4可一次全部读出
Note
组合方式是非常灵活的,开发者可根据自己想法并合理使用API解决需求。
4.1.2.2. 循环buf的原理
Note
buf 空间大小固定;
数据先进先出;
buf开始和结尾是相连接的,在写到buf结束会继续从开始位置继续写入,形成唤醒结构;
数据可以多次写入一次读出,或一次写入多次读出;
4.1.2.3. 常见问题
cbuf通过用于什么场合?
答:适合用于流形式的数据包, 并且任务间数据流读写动态平衡的场合
circular_buf.h
除了给出事例以外的接口如何使用?
答:如果例子展示的接口不满足客户应用需求, 请联系杰理技术团体增加更完善的接口使用说明
4.1.2.4. API参考
CBUF常用相关API介绍:
Warning
doxygenfile: Cannot find file “c_to_doxygen/circular_buf.h