楼主: outman

[原创]奥特曼Zigbee读书日记(二)--OSAL系统框架专题

[复制链接]
bobo2004 发表于 2013-8-4 18:08:22 | 显示全部楼层
还是没有看懂,但会继续看
冰芷ice 发表于 2013-8-6 09:14:36 | 显示全部楼层
谢谢讲解,好好学习
liangzuoming 发表于 2013-11-7 09:21:01 | 显示全部楼层
do {
      if (tasksEvents[idx])  // 寻找最高优先级的任务来运行
      {
        break;
      }
    } while (++idx < tasksCnt);

    if (idx < tasksCnt) //如果有任务需要运行
    {
      uint16 events;
      halIntState_t intState;

      HAL_ENTER_CRITICAL_SECTION(intState);
      events = tasksEvents[idx];
      tasksEvents[idx] = 0;  // 本任务运行完了,要对其清空,为后面要运行的任务让路
      HAL_EXIT_CRITICAL_SECTION(intState);

      events = (tasksArr[idx])( idx, events );//最关键的一句话,如图一中,运行对应的任务

      HAL_ENTER_CRITICAL_SECTION(intState);
      tasksEvents[idx] |= events;  // 本任务可能没完全完成,如果是这样,再次设置标志位,在下一次循环中继续执行
      HAL_EXIT_CRITICAL_SECTION(intState);
      }

我想问一下:比如发生了串口接收新数据的任务即events = tasksEvents[idx]=0x01;那么完成了这个任务后把 tasksEvents[idx]置为0,那  tasksEvents[idx] |= event是怎样把未完成的任务返回的。搞不懂,还是我哪里理解错误了?希望楼主解答我的问题,感激不尽!
weilanxiao7 发表于 2013-12-18 15:39:26 | 显示全部楼层
我之前就是把 task 和event两个搞混了,对OSAL具体的循环体中的轮询也不是很了解,不清楚event是怎么添加的,怎么触发的......之前读过,但是不是太明白,今天又看了一遍,受益良多。另外,发现一楼一楼的看评论也收获了不少知识。谢谢LZ,谢谢大家
yuyi1005 发表于 2014-2-18 21:58:13 | 显示全部楼层
我现在用的2.3.0-1.4.0协议栈里面,osalTimerUpdate是在osal_start_system里面无限循环调用的,而那个HalTimerConfig,我直接把这个函数给删了,重新编译没有出错。也就是,默认的工程根本没有调用HalTimerConfig,这个函数是给用户配置自己的中断用的。

这样一来,osalTimerUpdate就不是在timer4中断的时候产生的了,因为timer4根本没有被配置callback。我看了一下,调用关系是这样的:osal_start_system -> osalTimeUpdate -> osalTimerUpdate,应该是在osalTimeUpdate中用macMcuPrecisionCount()查询定时器状态,而且现在用的貌似真的是timer2了,不是remap的。那现在,timer1,3,4应该都解放出来了。

如果要用timer1,3,4,首先要改相应的宏,设定分频等,然后自行调用HalTimerConfig,关联用户自己的callback。

不知道理解的有没有错,望赐教。
hsamdy 发表于 2014-8-8 10:23:06 | 显示全部楼层
多谢楼主的分享以及大家的跟帖,我受益很多!
jinlei 发表于 2014-9-25 15:57:41 | 显示全部楼层
你好,outman,不知道你还上不上这个论坛,不知道你能不能收到,有件事想请教你。我看了英文的zigbee那个经典书籍(看了前面基础部分),比如讲拓扑结构啊,原语啦等等这些,但我无法把这些书上讲得内容与实际协议栈里的代码联系在一起。我看的是zigbee实战教程里面组网的例子,不知道那些程序代码与书上那些基础知识到底是怎么联系上的,我很迷茫,想请教你该怎么办?
恩哥 发表于 2015-11-2 08:18:30 | 显示全部楼层
都过去这么多年了,请问outman大神还在么?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表