Beruflich Dokumente
Kultur Dokumente
h"
#define
WORDs)
TASK_STK_SIZE
512
#define
N_TASKS
OS_STK
OS_STK
TaskStk2[N_TASKS][TASK_STK_SIZE];
OS_STK
TaskStartStk[TASK_STK_SIZE];
OS_STK
TaskConStk[TASK_STK_SIZE];
INT8U TaskData1[N_TASKS];
INT8U TaskData2[N_TASKS];
INT8U err;
INT8U i;
OS_EVENT *q1;
// 2 queue
OS_EVENT *q2;
OS_CPU_SR cpu_sr;
void
*Msg1[6];
void
*Msg2[6];
static
void
Task1(void *pdata);
static
void
Task2(void *pdata);
static
task
void
TaskStart(void *pdata);
static
task
void
TaskCon(void *pdata);
static
task
void
TaskStartCreateTasks(void);
BSP_Init();
OSInit();
// Initialize uC/OS-II
q1 = OSQCreate(&Msg1[0],6);
is the capacity
// set a queue , 6
q2 = OSQCreate(&Msg2[0],6);
is the capacity
// set a queue , 6
// Start
#endif
pdata = pdata;
warning
// Prevent compiler
OSTmr_Init();
OSStatInit();
TaskStartCreateTasks();
OSTaskSuspend(OS_PRIO_SELF);
{
TaskData1[i] = i;
{
TaskData2[i] = i;
for (;;)
{
OSTimeDlyHMSM(0, 0, 0,500);
/* Wait 2 second
mg=OSQPend(q1,0,&err);
message
*/
*/
/* apply for
switch(err)
{
case OS_NO_ERR:
/* If it is normally, just print the string.*/
printf("\n\r TASK_%d GOT --> %s\n\r",id,(char *)mg);
OSTimeDlyHMSM(0, 0, 0, 400*(4-id));
break;
default :
/* If the queue is empty or has been deleted, print another
string.*/
printf("\n\r QUEUE_ONE %d is EMPTY!\n\r",id);
OSTimeDlyHMSM(0, 0, 0, 400*(4-id));
break;
}
}
}
id=*(int *)pdata;
for (;;)
{
OSTimeDlyHMSM(0, 0, 2, 0);
/* Wait 2 second
mg=OSQPend(q2,0,&err);
*/
*/
switch(err)
{
case OS_NO_ERR:
/* If it is normally, just print the string.*/
printf("\n\r TASK_%d GOT --> %s\n\r",id+3,(char *)mg);
OSTimeDlyHMSM(0, 0, 0, 400*(4-id));
break;
default :
*/
INT16U del=3;
/* for delete the queue
*/
OS_EVENT *q;
OS_Q_DATA *data = 0;
static char
*s[]={"message0","message1","message2","message3","message4","message5"};
/* queue1's message
*/
static char
*t[]={"messageA","messageB","messageC","messageD","messageE","messageF"};
/* queue2's message
*/
pdata=pdata;
for (;;)
{
printf("\n.................ADD MESSAGE TO QUEUE_1....................\n\r");
switch(err)
{
case OS_NO_ERR:
printf("\n\r QUEUE1 %d add--> %s\n\r",i,s[i]);
OSTimeDlyHMSM(0, 0, 0, 500);
break;
case OS_Q_FULL:
printf("\n\r QUEUE1 is FULL, CANNOT add.\n\r");
OSTimeDlyHMSM(0, 0, 0, 500);
break;
default: break;
}
}
if(del>= 0)
{
printf("\n.................ADD MESSAGE TO QUEUE_2...................\n\r");
err = OSQPost(q2,(void*)t[j]);
*/
/* post message to
switch(err)
{
case OS_NO_ERR:
printf("\n\r QUEUE2 %d add--> %s\n\r",j,t[j]);
OSTimeDlyHMSM(0, 0, 0, 500);
break;
case OS_Q_FULL:
printf("\n\r QUEUE2 is FULL, CANNOT add. \n\r");
OSTimeDlyHMSM(0, 0, 0, 500);
break;
default: break;
}
}
if(del>=0)
{
if(note==1)
{
OSQFlush(q2);
printf("\n..................ADD MESSAGE TO QUEUE_2....................\n\r");
printf("\n.....................CLEAR UP QUEUE_2.......................\n\r");
OSTimeDlyHMSM(0,0,0,500);
note=0;
}
else
{
note=1;
}
}
about q2
err=OSQQuery(q2,data);
*/
if(err==OS_NO_ERR)
{
printf("\n\r");
printf("\n\r QUEUE2'information:\n\r");
OSTimeDly(100);
printf("NextMsg:\t%s\n\rNumMsg:\t%d\n\rQSize:\t%d\n\r",(char *)data>OSMsg,data->OSNMsgs,data->OSQSize);
OSTimeDly(100);
printf("\n\r");
}
OSTimeDlyHMSM(0, 0, 0,500);
if(del==0)
*/
{
q=OSQDel(q2,OS_DEL_ALWAYS,&err);
/* delete the q2 */
OSTimeDlyHMSM(0, 0, 0,500);
if(q==(OS_EVENT *)0)
{
printf("\n\r DELETE QUEUE2 OK!\n\r");
}
}
else
{
del--;
printf("\n\r DELETE QUEUE2 FAILED!\n\r");
}
}
}