#include "includes.h"
OS_STK START_TASK_STK[START_STK_SIZE];
OS_STK LED1_TASK_STK[LED1_STK_SIZE];
OS_STK LED2_TASK_STK[LED2_STK_SIZE];
OS_STK USART_TASK_STK[USART_STK_SIZE];
void start_task(void *parg);
void led1_task(void *parg);
void led2_task(void *parg);
void usart_task(void *parg);
OS_EVENT * Sem_Usart;
OS_SEM_DATA result[];
u8 err;
int main(void)
{
BSP_Init();
OSInit();
OSTaskCreate(start_task,
(void *)0,
(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],
START_TASK_PRIO );
OSStart();
}
void start_task(void *parg)
{
OS_CPU_SR cpu_sr=0;
parg = parg;
OSStatInit(); //??????????????.?????á???±1????×ó??
OS_ENTER_CRITICAL(); //??????????(??·¨±??????ò??)
Sem_Usart=OSSemCreate(0);
OSTaskCreate(led1_task,
(void *)0,
(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],
LED1_TASK_PRIO);
OSTaskCreate(led2_task,
(void *)0,
(OS_STK*)&LED2_TASK_STK[LED2_STK_SIZE-1],
LED2_TASK_PRIO);
OSTaskCreate(usart_task,
(void *)0,
(OS_STK*)&USART_TASK_STK[USART_STK_SIZE],
USART_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO); //????????????.
OS_EXIT_CRITICAL(); //??????????(????±??????ò??)
}
void led1_task(void *parg)
{
// parg = parg; /* ·???±à???÷???? */
while(1)
{
OSSemPend(Sem_Usart,0,&err);
LED0=!LED0;
OSTimeDlyHMSM(0,0,0,500);
};
}
void led2_task(void *parg)
{
// parg = parg; /* ·???±à???÷???? */
while(1)
{
LED1=!LED1;
OSTimeDlyHMSM(0,0,0,1000);
};
}
void usart_task(void *parg)
{
u8 key=0,i=0;
while(1)
{
key=KEY_Scan();
if(key==1)
{
// for(i=0;i<10;i++)
// OSSemPost(Sem_Usart); //????·?????????10??
}
else if(key==2)
{
// OSSemPost(Sem_Usart); //·?????????????
}
else if(key==3)
{
OSSemDel(Sem_Usart,OS_DEL_ALWAYS,&err);//??????????Sem_Event???ó?????????????§???ù????????????????????
}
OSTimeDlyHMSM(0,0,0,20);
}
}
|