static INT8U g_inIndex; // 指向空的位置
static INT8U g_outIndex; // 指向待读取的数据
static INT8U g_msgQueue[IR_DATA_SIZE];
static BOOL PushQueue(INT8U irkey)
{
INT8U inIndex;
OS_ENTER_CRITICAL();
inIndex = (g_inIndex + 1)&(IR_DATA_SIZE-1);
if (inIndex == g_outIndex)
{
OS_EXIT_CRITICAL();
return FALSE; // 队列已满
}
g_msgQueue[g_inIndex] = irkey;
g_inIndex = inIndex;
OS_EXIT_CRITICAL();
return TRUE;
}
static BOOL PollQueue(INT8U data *pKey)
{
OS_ENTER_CRITICAL();
if (g_inIndex == g_outIndex) // 队列是空的
{
OS_EXIT_CRITICAL();
return FALSE;
}
*pKey = g_msgQueue[g_outIndex];
g_outIndex = (g_outIndex + 1)&(IR_DATA_SIZE-1);
OS_EXIT_CRITICAL();
return TRUE;
}
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。