高级会员

- 积分
- 907
- 金钱
- 907
- 注册时间
- 2011-10-19
- 在线时间
- 196 小时
|
发表于 2018-9-1 08:52:30
|
显示全部楼层
本帖最后由 ufbycd 于 2018-9-1 09:01 编辑
我具体是做法是:实现消息队列及软件定时器,在中断里发送消息(携带数据),在main函数里处理消息。
[mw_shl_code=c,true]int main(int argc, char* argv[])
{
(void)argc;
(void)argv;
_Init();
Utils_Init();
MsgQueue_Init(_MsgDeliver);
Ctimer_Init();
BSP_Init();
Shell_Init(_shellCmds, ARRAY_SIZE(_shellCmds));
Ctimer_Start(& _testTimer, 1000, _Test, 0);
GUI_Init();
/* Activate the use of memory device feature */
WM_SetCreateFlags(WM_CF_MEMDEV);
/* Start Demo */
// GUIDEMO_Main();
WatchDog_Init();
while (1)
{
MsgQueue_Service();
IDLE();
}
return -1;
}[/mw_shl_code]
[mw_shl_code=c,true]/**
* @brief 分发并处理消息
* @param msg 一条消息
*/
static void _MsgDeliver(MsgQueue_Msg_t *msg)
{
// debug("MQ: Dealing msg id: %d\n", msg->id);
switch(msg->id)
{
case MsgQueue_Id_CtimerFire:
Ctimer_Fire(msg);
break;
case MsgQueue_Id_ShellLineIn:
Shell_OnLine(msg);
break;
case MsgQueue_Id_SerialTest:
Serial_OnTest(msg);
break;
case MsgQueue_Id_SlaveFrameIn:
// Slave_OnFrameIn(msg);
break;
case MsgQueue_Id_CaptureCalc:
Capture_Calc(msg);
break;
default:
debug("Error: Unknown Message, id = %d!\n", msg->id);
break;
}
}
[/mw_shl_code] |
|