使用示例
## 使用示例
```language
#define DEMO_TASK_SIZE 100
#define DEMO_TASK_PRIO 20
u8 gDemoTskId = 0;
char gDataCtx;
u8 g_DemoMbx;
u8 g_SempId;
sxr_TaskDesc_t gstDemoTskDesc=
{
(void(*)(void *)) demo_task,
0,
“demo task”,
DEMO_TASK_SIZE,
DEMO_TASK_PRIO,
};
void demo_release_semp(void)
{
sxr_ReleaseSemaphore (g_SempId);
}
Void demo_send_mailbox(void)
{
UINT32 evt[4];
evt[0] = 0;
evt[1] = 1;
evt[2] = 2;
evt[3] = 3;
//携带消息发送给 demo_task 任务
sxr_Send(&evt, sxr_NewMailBox, SXR_SEND_EVT );
}
void demo_task (void)
{
u8 data;
UINT32 evt[4];
memset(&evt, 0, sizeof(evt));
while(1)
{
//任务等待获取信号量,任务被挂起
sxr_TakeSemaphore(g_SempId);
//获取信号量任务继续执行
//等待事件发生,任务被挂起
if(sxr_Wait((UINT32*)&evt, sxr_NewMailBox))
{
//接收 demo_send_mailbox 事件,消息内容会存放在 evt 中
//evt[0] ==0;
//evt[1] ==1;
//evt[2] ==2;
//evt[3] ==3;
}
}
}
voiddemo_init(void)
{
gDemoTskId= sxr_NewTask(gstDemoTskDesc);
sxr_StartTask(gDemoTskId, (void *)&gDataCtx);
g_DemoMbx = sxr_NewMailBox();
g_SempId = sxr_NewSemaphore(1);
}
```