使用示例

## 使用示例 ```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); } ```