-
Notifications
You must be signed in to change notification settings - Fork 76
Expand file tree
/
Copy pathqueue.h
More file actions
44 lines (37 loc) · 2.08 KB
/
queue.h
File metadata and controls
44 lines (37 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef __QUEUE_H
#define __QUEUE_H
//==============================================================================
// 常量定义
//==============================================================================
#define QUEUE_DATA_T unsigned char //队列数据类型定义
//==============================================================================
// 类型定义
//==============================================================================
typedef struct QUEUE_HandleTypeDef{
unsigned int head; //队列头指针
unsigned int tail; //队列尾指针
unsigned int buffer_length; //队列缓存长度(初始化时赋值)
QUEUE_DATA_T * buffer; //队列缓存数组(初始化时赋值)
}QUEUE_HandleTypeDef;
typedef enum
{
QUEUE_OK = 0x00U, //队列OK
QUEUE_ERROR = 0x01U, //队列错误
QUEUE_BUSY = 0x02U, //队列忙
QUEUE_TIMEOUT = 0x03U, //队列超时
QUEUE_OVERLOAD = 0x04U, //队列已满
QUEUE_VOID = 0x05U //队列已空
} QUEUE_StatusTypeDef;
//==============================================================================
// 公共函数声明
//==============================================================================
extern void Queue_Init(QUEUE_HandleTypeDef * hqueue, QUEUE_DATA_T * buffer, unsigned int len);
extern void Queue_Clear(QUEUE_HandleTypeDef * hqueue);
extern unsigned int Queue_Count(QUEUE_HandleTypeDef * hqueue);
extern QUEUE_StatusTypeDef Queue_Push(QUEUE_HandleTypeDef * hqueue, QUEUE_DATA_T data);
extern unsigned int Queue_Push_Array(QUEUE_HandleTypeDef * hqueue, QUEUE_DATA_T * pdatas, unsigned int len);
extern QUEUE_StatusTypeDef Queue_Pop(QUEUE_HandleTypeDef * hqueue, QUEUE_DATA_T * pdata);
extern unsigned int Queue_Pop_Array(QUEUE_HandleTypeDef * hqueue, QUEUE_DATA_T * pdatas, unsigned int len);
extern QUEUE_StatusTypeDef Queue_Peek(QUEUE_HandleTypeDef * hqueue, QUEUE_DATA_T * pdata);
extern unsigned int Queue_Peek_Array(QUEUE_HandleTypeDef * hqueue, QUEUE_DATA_T * pdatas, unsigned int len);
#endif