保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

ucos+lwip应用心得[社区]


sp;        if (t->next != NULL)
                t->next->time += t->time;
            memp_free(MEMP_SYS_TIMEOUT, t);
            return;
        }
    }
    return;
}
2.2.3  “mbox”的实现:

         (1)mbox的创建
      sys_mbox_t sys_mbox_new(void)
{
        u8_t       ucErr;
        PQ_DESCR    pQDesc;    
//从消息队列内存分区中得到一个内存块
        pQDesc = OSMemGet( pQueueMem, &ucErr );  
     if( ucErr == OS_NO_ERR ) {   
         //创建一个消息队列
        pQDesc->pQ=OSQCreate(&(pQDesc->pvQEntries[0]), MAX_QUEUE_ENTRIES );       
               if( pQDesc->pQ != NULL ) {
            return pQDesc;
        }
     }
    return SYS_MBOX_NULL;
}

  (2)发一条消息给”mbox”
  const void * const pvNullPointer = 0xffffffff;
void sys_mbox_post(sys_mbox_t mbox, void *data)
{
    INT8U err;
    if( !data )
     data = (void*)&pvNullPointer;
   err= OSQPost( mbox->pQ, data);
}
在ucos中,如果OSQPost (OS_EVENT *pevent, void *msg)中的msg==NULL 会返回一条OS_ERR_POST_NULL_PTR错误.而在lwip中会调用sys_mbox_post(mbox,NULL)发送一条空消息,我们在本函数中把NULL变成一个常量指针0xffffffff.

(3)从”mbox”中读取一条消息
#define SYS_ARCH_TIMEOUT 0xffffffff
void sys_mbox_fetch(sys_mbox_t mbox, void **msg)
{
  u32_t time;
  struct sys_timeouts *timeouts;
  struct sys_timeout *tmptimeo

《ucos+lwip应用心得[社区](第6页)》
本文链接地址:http://www.oyaya.net/fanwen/view/148424.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。