




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#1楼主:【原创】ZigBee学习之33osal_start_system()文章发表于:2010-02-12 17:34 osal_start_system(); /运行系统【OSAL.c】/此函数是任务系统的主循环函数,他将轮询所有任务事件然后调用相关的任务处理函数,没有任务时将进入休眠状态。void osal_start_system( void )#if !defined ( ZBIT )/虽然搞不清楚这个ZBIT什么东西,不过应该是没有定义的,如果定义了的话所有函数只会顺序跑下来,跑完这个函数整个系统就结束了,没有意义,这里看到这个无限循环应该就是整个系统的运行方式了 for(;)
2、#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 (!halTimerRecordHW_TIMER_1.intEnable) halProcessTimer1 ();/处理TIMER1事
3、件void halProcessTimer1 (void) if (halTimerRecordhalTimerRemap(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_O
4、UTPUT_COMPARE);/给回调函数发送回应void halTimerSendCallBack (uint8 timerId, uint8 channel, uint8 channelMode) uint8 hwtimerid; hwtimerid = halTimerRemap (timerId); if (halTimerRecordhwtimerid.callBackFunc) (halTimerRecordhwtimerid.callBackFunc) (timerId, channel, channelMode); if (T1CTL & T1CTL_CH1IF) T1
5、CTL &= (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 (halTimerRecordhalTimerRema
6、p(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 (!halTimerRecordHW_TIMER_3.intEnable) halProcessTimer3 (); if (!halTimerRecordHW_TIMER_4.intE
7、nable) halProcessTimer4 (); /* UART的选取*/#if (defined HAL_UART) && (HAL_UART = TRUE) HalUARTPoll();/【hal_uart.c】typedef struct uint8 *rxBuf; uint8 rxHead; uint8 rxTail; uint8 rxMax; uint8 rxCnt; uint8 rxTick; uint8 rxHigh; uint8 *txBuf;#if HAL_UART_BIG_TX_BUF uint16 txHead; uint16 txTail; uin
8、t16 txMax; uint16 txCnt;#else uint8 txHead; uint8 txTail; uint8 txMax; uint8 txCnt;#endif uint8 txTick; uint8 flag; halUARTCBack_t rxCB; uartCfg_t;/UART数据结构,这个数据结构在文档中没有提到,估计是串口缓存区的配置串口需要掌握的是HalUARTOpen函数和halUARTCfg_t数据结构#endif do if (tasksEventsidx) /轮询检查任务 break; while (+idx < tasksCnt); if (id
9、x < tasksCnt) uint16 events; halIntState_t intState; HAL_ENTER_CRITICAL_SECTION(intState); events = tasksEventsidx; tasksEventsidx = 0; / Clear the Events for this task. HAL_EXIT_CRITICAL_SECTION(intState); events = (tasksArridx)( idx, events );/根据事件的类型执行相关的任务处理函数 HAL_ENTER_CRITICAL_SECTION(intState); tasksEventsidx |= events; / Add back unprocessed events to the current task. HAL_EXIT_CRITICAL_SECTION(intState); #if defined( Power_SAVING ) else / Comp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西南财经大学《口腔正畸学》2023-2024学年第二学期期末试卷
- 中央美术学院《资源与环境(环境工程)领域工程伦理》2023-2024学年第二学期期末试卷
- 江西省宜春市上高县上2025届高三下学期期末模拟卷(一)物理试题含解析
- 湖南衡阳县2024-2025学年高三3月第一次模拟考试(英语试题理)试题含解析
- 小儿呼衰护理疾病查房
- 南红基础知识
- 廉政知识竞答
- 康复护理学给药
- 信息技术 第二册(五年制高职)课件 8.2.3.1 选择结构的语法
- 传统文化中秋课件
- 2025新疆机场(集团)有限责任公司阿克苏管理分公司第一季度招聘(75人)笔试参考题库附带答案详解
- 全国计算机等级考试《三级信息安全技术》专用教材【考纲分析+考点精讲+真题演练】
- DB13-T 5996-2024 公路基层病害聚合物注浆处治技术规程
- 生猪屠宰兽医卫生检验人员理论考试题库及答案
- 小学数学主题活动设计一年级《欢乐购物街》
- 家和万事兴-善人道
- 信用社(银行)清产核资实施方案
- 邵阳智能水表项目资金申请报告_模板范本
- 幼儿园大班语言活动《熟能生巧》优质课公开课教案比赛讲课获奖教案
- 关于广州市市政管理局市园林局调整城市道路挖掘修复收费标准的批复
- 九族五服表(九族五服图)
评论
0/150
提交评论