论坛元老
 
- 积分
- 3193
- 金钱
- 3193
- 注册时间
- 2013-12-8
- 在线时间
- 439 小时
|
发表于 2017-2-20 09:47:03
|
显示全部楼层
[mw_shl_code=applescript,true]DataQueue GCodeQueue; //GCODE队列列表
GCodeStruct Line[LINESIZE]; //队列数组
/********************************************
函数:InitializeGCodeQueue
功能:初始化队列列表
参数:无
返回:无
********************************************/
void InitializeGCodeQueue(void)
{
GCodeQueue.Start = &Line[0];
GCodeQueue.End = &Line[LINESIZE];
GCodeQueue.In = GCodeQueue.Start;
GCodeQueue.Out = GCodeQueue.Start;
GCodeQueue.Size = LINESIZE;
GCodeQueue.Entries = 0;
}
/********************************************
函数:AddGCodeQueueEntries
功能:增加1列数据到列表
参数:无
返回:无
********************************************/
void AddGCodeQueueEntries(void)
{
EnterCritical();
*GCodeQueue.In++;
GCodeQueue.Entries++;
if (GCodeQueue.In == GCodeQueue.End)
{
GCodeQueue.In = GCodeQueue.Start;
}
ExitCritical();
while(GCodeQueue.Entries>=LINESIZE) //队列已满,等待队列
{
OS.DelayTimeTick(1);
}
}
/********************************************
函数:SubGCodeQueueEntries
功能:清除1列数据到列表
参数:无
返回:无
********************************************/
void SubGCodeQueueEntries(void)
{
while(GCodeQueue.Entries==0) //队列已空,等待队列
{
OS.DelayTimeTick(1);
}
EnterCritical();
*GCodeQueue.Out++;
GCodeQueue.Entries--;
if (GCodeQueue.Out == GCodeQueue.End)
{
GCodeQueue.Out = GCodeQueue.Start;
}
ExitCritical();
}[/mw_shl_code]
[mw_shl_code=applescript,true]#ifndef __QUEUE_H
#define __QUEUE_H
#include "stm32f10x.h"
#include "dk_config.h"
#define LINESIZE 20
typedef struct
{
GCodeStruct * Start; //指向队列开始
GCodeStruct * End; //指向队列结束
GCodeStruct * In; //插入一个消息
GCodeStruct * Out; //取出一个消息
u8 Size; // 队列长度
u8 Entries; //消息长度
}DataQueue;
extern DataQueue GCodeQueue;
void InitializeGCodeQueue(void);
void AddGCodeQueueEntries(void);
void SubGCodeQueueEntries(void);
#endif[/mw_shl_code]
|
|