打印
[51单片机]

实用单片机系统MS3.21 中 MSG_GET_MSG(&Msg),看不懂啊?!

[复制链接]
1627|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanse51|  楼主 | 2014-9-17 14:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
学习程序架构。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;
                }
        }
}

相关帖子

沙发
ayb_ice| | 2014-9-17 15:35 | 只看该作者
取变量地址而已(指针而已)

使用特权

评论回复
板凳
yanse51|  楼主 | 2014-9-17 20:45 | 只看该作者
这个程序我看了。但是不知道怎么运行的。不知哪里执行了MSG_GET_MSG(&Msg); /*获取消息*/  这个函数

使用特权

评论回复
地板
tudou21| | 2014-9-22 21:54 | 只看该作者
(1)MSG_GET_MSG(unsigned int *msg)是一个函数,它的参数是个指针,&Msg就是取Msg的地址作为指针,作为传参。
(2)该函数在while(TRUE)里面第一句话就直接调用执行了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

88

帖子

0

粉丝