zoukankan      html  css  js  c++  java
  • 06协议中向任务中添加事件基…

    osal_msg_send()函数的使用

    ----------------------------------------------------------------------------------                 

        最近一直收到自己考博士问题的困扰,没怎么有心情看书学习。所以这两天又想起了前几天一直没有弄明白的一个问题,就是怎么往OSAL中的任务中添加一个事件。这么说有点空洞,所以,我们假设一个实验,然后大家跟着我走一个流程看看。

       我假设的实验是在当串口有值输入时,lcd屏幕清屏并显示我的标志位。

       串口回调函数用的基本是上次做过解释的串口回调函数(大家可以看看我以前的博文http://blog.sina.com.cn/s/blog_4c8287230100cyfk.html)。现在来看看我的实验步骤吧。首先是定义一个事件的标志(注意不要与系统自带的标志一样),我这里用的是

       #define  king_come  0x11

       接着定义一个事件结构体,

       typedef struct
      {
        osal_event_hdr_t  hdr;   //事件头指针
        uint8             mark;  
    //标志位

       } myUartMsg_t;

       然后是对事件结构的一系列说明,我做到一个函数里了,其实不是必须这样的。

       void xy_come(void)
      {
        //事件内存分配,添加事件之前一定要进行内存分配

        myUartMsg_t *myUartMsg;
        myUartMsg= (myUartMsg_t *)osal_msg_allocate( sizeof( myUartMsg_t ) );//重要
        //事件名称定义

        myUartMsg->hdr.event = king_come;
        myUartMsg->mark= right_come;  //定义标志位

        osal_msg_send( SampleApp_TaskID, (uint8 *)myUartMsg);
      

      这样基本是完成了一个事件的定义,下面我们就来应用这个事件。

      为了满足我们的实验,首先在串口回调函数中加入上面的事件说明函数

      void xy_uartCB (uint8 port,uint8 event)
     {
       uint8 temp[8];
       HalUARTRead(HAL_UART_PORT_0,temp,8);    //芯片通过串口读数据
       right_come = 1;
       xy_come();
     }

      然后在事件处理函数中添加这个事件的处理程序

      uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )
    {
            ……
            case king_come:
              if(right_come == 1)
              {
                ClearScreen();
                Print8(HAL_LCD_LINE_2,20,"king_come.",1);
                right_come = 0;
               }
              break;

            ……

    }

       好了,这样就向任务中添加了一个事件了。基本的流程就是先定义一个事件的标示,事件的结构,再在需要用到该事件的地方对事件的参数进行赋值。最后在事件处理函数里添加对事件的处理子程序。知道了之后总是觉得很简单,谢谢群里的Yicher!!

    本文是作者原创,程序摘自TI ZigBee06协议栈(ZStack-1.4.3),转载必须保证文章的完整性并标明出处,请尊重作者,支持原创。

  • 相关阅读:
    POJ 1887 Testing the CATCHER
    HDU 3374 String Problem
    HDU 2609 How many
    POJ 1509 Glass Beads
    POJ 1458 Common Subsequence
    POJ 1159 Palindrome
    POJ 1056 IMMEDIATE DECODABILITY
    POJ 3080 Blue Jeans
    POJ 1200 Crazy Search
    软件体系结构的艺术阅读笔记1
  • 原文地址:https://www.cnblogs.com/songfeixiang/p/3733825.html
Copyright © 2011-2022 走看看