分享一个自制的软件FIFO管理库

2019-07-21 07:24发布

    分享一个自制的软件FIFO管理库, 此库已在应用很多大型工程项目上, 上手快速, 操作简单, 只有4个简单的函数:

    FIFO_Status FIFO_Create(FIFO_Handle *Handler, const FIFO_ConfigHandle *ConfigHandler) ;/* 创建FIFO */
    FIFO_Status FIFO_Delete(FIFO_Handle *Handler); /* 删除FIFO */
    FIFO_Status FIFO_Write(FIFO_Handle *Handler, const void *import); /* 写入FIFO */
    FIFO_Status FIFO_Read(FIFO_Handle *Handler, void *export); /* 读取FIFO */

    此FIFO管理库功能类似于操作系统的队列, 但是本库为独立库, 兼容任何环境, 移植简单, 且注释详细, 更利于学习.
    此FIFO管理库支持使用动态内存创建, 支持多任务操作.
    详细使用说明请参考附件内的文档 <std_fifo原理说明.pdf> 和 <std_fifo使用教程.pdf>.


    软件FIFO适用场景有:
        (1) 突发高速数据缓冲区.
        (2) 任务之间的信号量.
        (3) 等等...

    同时安利一下其他的自制库
123.png
    如果大家觉得不错的话, 以后都会慢慢发布出来.



std_fifo_V1.2.5.rar (1.51 MB, 下载次数: 67) 2018-11-28 09:42 上传 点击文件名下载附件





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
永远的零
2019-07-22 11:33
sammy902583 发表于 2018-11-28 14:37
在RTOS底下, 已经有提供类似的功能了, 可能比较没有用.
若是在没有用OS的情况下, 用在中断里面, 可能还不 ...

1. 配置部分会在后面继续优化, 希望有优化的建议.
2. 您给我的ATOMIC(Lock)机制参考例程, 我看了下, 是无限等待的机制, 容易使多个进程都卡死, 而本库提供了上锁失败的反馈, 由用户来选择继续等待还是去干其他事情.
3. 您说的应该是 void FIFO_TestFunction(void)/* FIFO功能测试函数 */ 中的配置参数,
  ConfigHandler.fifo = (void *)(TestMemory + FIFO_BORDER_ITEM_LENGTH); 是做在做越界检测, 因为在大部分微机调试中, 内存越界是难以直观体现出来的, 所以在工作内存段两边做了安全内存区, 用来检测是否越界. 实际使用中是不会这个干的. 让您误解了.
   详细使用说明会在后续补充.

一周热门 更多>