学习程序架构。3.21的主程序如下。
其中Msg是个 unsigned int 的变量. 那么
1.:为什么MSG_GET_MSG(&Msg); 函数可以这样表达?疑问:Msg是个变量,也不是头地址。为什么有&?
2.: 执行MSG_GET_MSG(&Msg)这个函数,哪里在执行?用MDK 4.12,一步步debug.看不出来啊。陷入死循环了。
请高手多多指教。迷茫了。
main(void)
{
U8 i = 0;
U16 Msg; //
init_process(); /*程序初始化*/
while(TRUE)
{
MSG_GET_MSG(&Msg); /*获取消息*/
switch(MSG_TYPE(Msg))
{
case MSG_KEY: /*按键消息*/
KeyStore = MSG_VALUE(Msg);/*获取按键*/
fMMIProc(); /*界面函数指针,界面入口*/
break;
case MSG_RTC:/*RTC消息*/
display_time_routine();/*软件时钟执行消息*/
break;
case MSG_MSTIMER:/*软件定时器中断外处理消息*/
MSG_GET_DATA(&Msg); /*获取软件定时器的回调函数指针*/
FUNC(Msg);/*执行回调函数*/
break;
case MSG_TEST: /*测试用*/
//special for test
break;
case MSG_NULL:
break;
default: /*建议用于喂狗等*/
//no msg, or error msg
break;
}
}
} |