OSAL在Zigbee的应用详解【入门级】

OSAL在Zigbee的应用详解【入门级】

ID:41153047

大小:443.71 KB

页数:60页

时间:2019-08-17

OSAL在Zigbee的应用详解【入门级】_第1页
OSAL在Zigbee的应用详解【入门级】_第2页
OSAL在Zigbee的应用详解【入门级】_第3页
OSAL在Zigbee的应用详解【入门级】_第4页
OSAL在Zigbee的应用详解【入门级】_第5页
资源描述:

《OSAL在Zigbee的应用详解【入门级】》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第一部分OSAL主循环流程我使用的协议栈版本及例子信息:ZigBee2006TexasInstrumentsZStack-1.4.3-1.2.1ProjectszstackSamplesSampleApp接上篇OSAL初始化流程.记录下个人对OSAL主循环流程的学习:OSAL系统主循环函数:voidosal_start_system(void){#if!defined(ZBIT)//不知道是什么东西for(;;)//ForeverLoop#endif{uint8idx=0;Hal_ProcessPoll();//ThisreplacesMT_SerialPoll()a

2、ndosal_check_timer().//轮询TIMER与UART//执行循环语句:tasksEvents[idx]是一个指针变量,指向存放任务idx的存储空间,初始化时由//osal_memset()设为0,只要不为空类型NULL,//即有相对应任务事件发生,就break跳出循环体,通过下面的程序进行任务事件处理。//如果为空,执行判断语句,即idx自增,再返回轮询有无各层的任务事件发生。如果//执行完循环语句都没有检测到有事件发生,idx=7,进入睡眠。(对于本例子来说,任务数组里只有七个任务,tasksEvents[0]~tasksEvents[6],tasksEven

3、ts[6]就是用户自已添加的任务,idx随着用户添加任务的增多而增大)do{if(tasksEvents[idx])//Taskishighestprioritythatisready.{break;}}while(++idx

4、s[idx];//uint16events;对应有事件发生的任务的数组tasksEvents[idx]=0;//CleartheEventsforthistask.NULLHAL_EXIT_CRITICAL_SECTION(intState);//跳出中断临界状态:恢复先前中断状态events=(tasksArr[idx])(idx,events);//调用相对应的任务事件处理函数处理,各类事件处理函//数M(task_id,event)返回的都是这个任务未被处理的事件HAL_ENTER_CRITICAL_SECTION(intState);tasksEvents[idx]

5、=e

6、vents;//Addbackunprocessedeventstothecurrenttask.//把刚才返回未处理的任务事件添加加当前任务中再进行处理//(跳出此if(idx

7、stemintosleep}#endif}}说明:(1)OSAL调用Hal_ProcessPoll();来轮询UART与TIMER,涉及HAL层,晚点总结.(2)HAL_ENTER_CRITICAL_SECTION(intState);与HAL_EXIT_CRITICAL_SECTION(intState);见1;(3)events=tasksEvents[idx];tasksEvents[idx]=0;见2;(4)events=(tasksArr[idx])(idx,events);见3;(5)tasksEvents[idx]

8、=events;见4;1、HAL_ENTER_CR

9、ITICAL_SECTION(intState)与HAL_EXIT_CRITICAL_SECTION(intState)定义在hal_mcu.h中,如下:/*********************************************InterruptMacros********************************************/#defineHAL_ENABLE_INTERRUPTS()st(EA=1;)//开中断#defineHAL_DISA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。