OV-Watch/Software/OV_Watch_V2.3.1/BSP/EM7028/user_Queue.c

51 lines
920 B
C

#include "user_Queue.h"
// 初始化队列
void initQueue(Queue *queue)
{
queue->front = 0;
queue->rear = -1;
queue->size = 0;
}
// 判断队列是否为空
bool isQueueEmpty(Queue *queue)
{
return queue->size == 0;
}
// 判断队列是否已满
bool isQueueFull(Queue *queue)
{
return queue->size == QUEUE_SIZE;
}
// 入队
void enqueue(Queue *queue, unsigned long item)
{
if (isQueueFull(queue))
{
printf("队列已满,无法入队!\n");
return;
}
queue->rear = (queue->rear + 1) % QUEUE_SIZE;
queue->data[queue->rear] = item;
queue->size++;
}
// 出队
uint32_t dequeue(Queue *queue)
{
if (isQueueEmpty(queue))
{
printf("队列为空,无法出队!\n");
return 0;
}
unsigned long item = queue->data[queue->front];
queue->front = (queue->front + 1) % QUEUE_SIZE;
queue->size--;
return item;
}