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