#1楼主【原创】ZigBee学习之33——osal_start_system().doc

#1楼主【原创】ZigBee学习之33——osal_start_system().doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#1楼主【原创】ZigBee学习之33——osal_start_system().doc

#1楼主:【原创】ZigBee学习之33——osal_start_system() 文章发表于:2010-02-12 17:34 osal_start_system(); //运行系统【OSAL.c】 //此函数是任务系统的主循环函数,他将轮询所有任务事件然后调用相关的任务处理函数,没有任务时将进入休眠状态。 void osal_start_system( void ) { #if !defined ( ZBIT ) //虽然搞不清楚这个ZBIT什么东西,不过应该是没有定义的,如果定义了的话所有函数只会顺序跑下来,跑完这个函数整个系统就结束了,没有意义,这里看到这个无限循环应该就是整个系统的运行方式了 for(;;) #endif { uint8 idx = 0; Hal_ProcessPoll(); // This replaces MT_SerialPoll() and osal_check_timer(). //OSAL调用此函数来推送UART,TIMER。。。【hal_drivers.c】 void Hal_ProcessPoll () { //选取定时器 HalTimerTick(); //检查定时器的计数溢出【hal_timer.c】 void HalTimerTick (void) { if (!halTimerRecord[HW_TIMER_1].intEnable) { halProcessTimer1 (); //处理TIMER1事件 void halProcessTimer1 (void) { if (halTimerRecord[halTimerRemap(HAL_TIMER_3)].channelMode == HAL_TIMER_CH_MODE_OUTPUT_COMPARE) //处理通道模式为输出比较时的情况 { if (T1CTL T1CTL_CH0IF) //检查通道0中断标志看是否达到设定的中断要求 { T1CTL = ~(T1CTL_CH0IF); //清除中断标志 halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_A, HAL_TIMER_CH_MODE_OUTPUT_COMPARE); //给回调函数发送回应 void halTimerSendCallBack (uint8 timerId, uint8 channel, uint8 channelMode) { uint8 hwtimerid; hwtimerid = halTimerRemap (timerId); if (halTimerRecord[hwtimerid].callBackFunc) (halTimerRecord[hwtimerid].callBackFunc) (timerId, channel, channelMode); } } if (T1CTL T1CTL_CH1IF) { T1CTL = ~(T1CTL_CH1IF); halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_B, HAL_TIMER_CH_MODE_OUTPUT_COMPARE); } if (T1CTL T1CTL_CH2IF) { T1CTL = ~(T1CTL_CH2IF); halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_C, HAL_TIMER_CH_MODE_OUTPUT_COMPARE); } } else if (halTimerRecord[halTimerRemap(HAL_TIMER_3)].channelMode == HAL_TIMER_CH_MODE_OVERFLOW) { if (T1CTL T1CTL_OVFIF) { T1CTL = ~(T1CTL_OVFIF); halTimerSendCallBack (HAL_TIMER_3, HAL_TIMER_CHANNEL_SINGLE, HAL_TIMER_CH_MODE_OVERFLOW); } } } } if (!halTimerRecord[HW_TIMER_3].intEnable) { halProcessTimer3 (); } if (!halTimerR

文档评论(0)

magui + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档