/*
** FIFO.c
** 单线程FIFO读写管理
**/
#include "LPC214x.H" /* LPC21xx definitions */
#include "type.h"
#include "irq.h"
#include "FIFO.h"
LPC2138_SCC Queue;
/***********************************************
** 函数名称: Queue_Init
** 功能描述: 初始化FIFO
** 输 入:
**
** 输 出:
**
**
**
** 全局变量:
** 调用模块:
**/
void Queue_Init(void)
{
Queue.Head = Queue.Tail = 0;
Queue.NData = 0;
//Queue.Buf[i] = 0;
}
/***********************************************
** 函数名称: QueueFlush
** 功能描述: 擦除FIFO
** 输 入:
**
** 输 出:
**
**
**
** 全局变量:
** 调用模块:
**/
void QueueFlush(void)
{
Queue_Init();
}
/***********************************************
** 函数名称: QueueWrite
** 功能描述: 向FIFO中写1个字节
** 输 入: dat:写入的数据
**
** 输 出: QUEUE_WRITE_FULL :FIFO写满
** TRUE :数据写入成功
**
**
** 全局变量: LPC2138_SCC Queue
** 调用模块:
**/
uint8 QueueWrite(uint8 dat)
{
uint16 idx;
uint8 err;
idx = Queue.Head;
idx++;
if (idx >= FIFO_LENGTH) //判断FIFO是否越界
idx = 0;
if (idx == Queue.Tail) //FULL
{
QueueFlush();
UART0_SendStr("\n接收数据溢出,缓冲区已清空!\n");
err = QUEUE_FULL;
return(err);
}
Queue.Buf[idx] = dat;
Queue.Head = idx;
Queue.NData++;
return(TRUE);
}
/***********************************************
** 函数名称: QueueRead
** 功能描述: 从FIFO中读1个字节
** 输 入: 无
**
** 输 出: *dat
**
**
**
** 全局变量: LPC2138_SCC Queue
** 调用模块:
**/
uint8 QueueRead(uint8 *dat)
{
uint16 idx;
uint8 err;
if (Queue.Head == Queue.Tail) //FIFO为空
{
err = QUEUE_EMPTY;
Queue.Head = Queue.Tail = 0; //复位数据入口和出口
Queue.NData = 0;
return(err);
}
idx = Queue.Tail;
*dat = Queue.Buf[++idx];
if(idx >= FIFO_LENGTH) //判断FIFO是否越界
idx = 0;
Queue.Tail = idx;
Queue.NData--;
//if(Queue.Tail == Queue.Head)
// Queue.Tail = Queue.Head = 0;
return TRUE;
}
/***********************************************
** 函数名称: QueueNData
** 功能描述: 取得队列中的数据
** 输 入:
**
** 输 出:
**
**
**
** 全局变量: LPC2138_SCC Queue
** 调用模块:
**/
uint16 QueueNData(void)
{
uint16 temp;
temp = 0;
return (temp = Queue.NData);
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
FIFO.rar_ARM FIFO_fifo arm_fifo缓冲区
版权申诉
141 浏览量
2022-09-20
20:35:35
上传
评论
收藏 945B RAR 举报
weixin_42653672
- 粉丝: 93
- 资源: 1万+
最新资源
- 教学内容及补充-cha7.rar
- 设计1.ms14
- vscode-1.64.1.tar源码文件
- vscode-1.64.0.tar源码文件
- vscode-1.52.0.tar源码文件
- Music-Player +PlayerActivity+ rockplayer+ SeeJoPlayer 播放器JAVA源码
- vscode-1.46.0.tar源码文件
- 最近很火植物大战僵尸杂交版2.08苹果+安卓+PC+防闪退工具V2+修改工具+高清工具+通关存档整合包更新
- 超级好用的截图工具PixPin,可录制Gif图
- Screenshot_2024-05-21-17-06-42-64_2332cb9b27b851b548ba47a91682926c.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈