串口中间件实验详解

 
 其实关于串口中间件的这个实验本身的应用程序部分很简单,我研究的目的主要是搞清楚整个运行过程以及所谓的驱动程序部分的编写技巧之类.....
先看main函数
    OSInit();   //初始化操作系统,该串口实验是在UCOS操作系统上的多任务程序
    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);   //创建一个任务TaskStart
    OSStart();   //创建了一个任务之后,至少存在三个任务,因为有两个在初始化的时候就创建了,但是优先级是最低的两个
最后运行OSStart函数,按照道理该函数是不会返回的...这时会首先运行TaskStart任务,看看其代码
void  TaskStart(void *pdata)
{
    uint8 *cp;
    uint8 err;
    pdata = pdata;                                                  /* 避免编译警告 */
    Uart0ReviceMbox = OSMboxCreate(NULL);                           /* 建立邮箱     */
    if (Uart0ReviceMbox == NULL)    //当事件控制块没有可用的即为NULL,这时等待...
    {
        while (1);
    }
    OSTaskCreate(TaskUart0Revice, (void *)0,
                 &TaskStk[TASK_STK_SIZE - 1], 10);                  /* 创建任务,任务的优先级为10     */
    TargetInit();                                                   /* 目标板初始化,本实验中包括中断,定时器和串口的初始化设置工作 */
    for (;;)
    {
        cp = (uint8 *)OSMboxPend(Uart0ReviceMbox, 0, &err);         /* 接收数据 */
        if (cp[0] == 0x80)
        {                                                           /* led显示 */
            cp[2] = ShowTable[cp[2]];
        }
        else
        {                                                           /* 屏幕显示 */
            cp[2] = cp[2] +'0';
        }
        PC_DispChar(cp);                                            /* 显示接收到的数据 */
    }
}

你可能感兴趣的:(工作,中间件,null,任务)