版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.10节讨论了时钟的中断服务子程序和节时钟节函数OSTimeTick——µC/OS本章所提到的函数可以在OS_TIME.C的长短是用时钟节拍的数目来确定的。实现这个系统服务的函数叫做OSTimeDly()。调用该函程序清单L5.1所示的是任务延时函数OSTimeDly()的代码。用户的应用程序是通过提供延时的时钟节拍数——1655350[L5.1(1)],则表明用户不想延时任务,函数会立即返回到调用者。非0函数OSTimeDly()将当前任务从就绪表中移除[L5.1(2)]。接着,这个延时节拍数会被保存在当前任务的OS_TCB中[L5.1(3OSTimeTick延时节拍数。最后,既然任务已经不再处于就绪状态,任务调度程序会执行下一个优先级最L5.1voidvoidOSTimeDly(INT16U{if(ticks>0){if((OSRdyTbl[OSTCBCur->OSTCBY]&=~OSTCBCur->OSTCBBitX)==OSRdyGrp&=~OSTCBCur-}}OSTCBCur->OSTCBDly=}}OSTimeDly(1),在这种情况下,任务几乎就没有Figure DelayOSimlOIS_EREC(参看_G.H转换成时钟段,但这种方法有时显得比较愚笨。笔者增加了STeDMS就可以按小时()、分()、秒(S)和毫秒()来定义时间了,这样会显得更自然些。与Dl()一样,调用STmeyHM()函数也会使/SSTeDyHM者有其它的任务通过调用OTielRsm()取消了延时(参看5,恢复延时的任务OSTimDlsu程序清单L5.2OSTimeDlyHMSM()的代码。从中可以看出,应用程序是通过用小OSTimeDlyHMSM()一开始先要检验用户是否为参数定义了有效的值[L5.2(1)应的毫秒数相同。例如,若将时钟频率(OS_TICKS_PER_SEC100Hz(10ms4ms示,OSTimeDlyHMSM()确定了用户想延时多少次超过65,535个节拍的数目[L5.2(4)]和剩下的节拍数[L5.2(5)]。例如,若OS_TICKS_PER_SEC的值为100,用户想延时15分钟,则OSTimeDlyHMSM15x60x100=90,00032,768拍的延时(因为用户只能延时65,535个节拍而不是65536个节拍)和一次24,464个节拍的延时。在这种情况下,OSTimeDlyHMSM()首先考虑剩下的节拍,然后是超过65,535的节拍数[L5.2(7)和(8)](即两个32,768L5.2{INT32Uticks;INT16Uif(hours>0||minutes>0||seconds>0||milli>0)if(minutes>59)return}if(seconds>59)return}If(milli>999)return}ticks= *3600L*+(INT32U)minutes 60L*+(INT32U)seconds+OS_TICKS_PER_SEC*+500L/OS_TICKS_PER_SEC)/loopsloops=ticks/ticks=ticks%while(loops>0)}return}elsereturn}}OSTimeDlyResumeL5.3任务存在,OSTimeDlyResume()会检验任务是否在等待延时期满[L5.3(3)]。只要OS_TCB域中的OSTCBDly0OSTimeDly(),OSTimeDlyHMSM()或其它在第六章中所描述的PEND函数。然后延时就可以通过强制命令L5.3INT8UINT8UOSTimeDlyResume(INT8U{{OS_TCBif(prio>=OS_LOWEST_PRIO)returnptcb=(OS_TCBif(ptcb!=(OS_TCB*)0)if(ptcb->OSTCBDly!=0)ptcb->OSTCBDly=if(!(ptcb->OSTCBStat&OS_STAT_SUSPEND))|=ptcb-OSRdyTbl[ptcb->OSTCBY]|=ptcb->OSTCBBitX;}else}return}elsereturn}}elsereturn}}唯一问题是它要求用户分配事件控制块(参看6.00),因此用户的应用程序会多占用一些RAM。/S2调用SS49,75010z247通过调用OimetOTiSeOSme()和STeSL4OSme8L5.4INT32UINT32UOSTimeGet{INT32Uticks=OSTime;return}voidOSTimeSet(INT32U{OSTime=ticks;}开发板精品网5.3系统时间,OSTimeGet() C/OS32调用SSt(494,75010z2497可以通过调用OTimGetOTimSet(OSTmeG()和STieSeL54OSime832程序清单L5.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2436-2026示波器校准仪校准规范
- T/SDSES 014-2023水泥窑协同处置垃圾焚烧飞灰技术规范
- T/LXLY 38-2025牙骨质撕裂临床诊疗规程
- T/CDEIIEA 9-2024成渝地区电子信息先进制造集群公共服务平台 网络平台功能规范
- T/CFEII 0015.3-2023内容安全检测人工智能系统鲁棒性测评规范 第3部分:文本
- T/CSPSTC 207-2026抽水蓄能电站建筑装饰装修技术导则
- GB/T 7424.2219-2026光缆第2-219部分:总规范光缆基本试验方法环境性能试验方法方法F19材料相容性
- 2025~2026学年贵州省遵义市播州区人教版六年级上册第三次月考数学试卷【附答案】
- 河北滦平县2027届九上数学期末考试试题含解析
- PHP程序员面试题及详细答案(真实企业版)
- 2026年注册(营养师、营养指导员)资格证必过考试题库与答案
- 常见肿瘤急症及并发症的护理课件
- 2026年软件工程开发工程师试题及答案
- 2025年10月自考02126应用文写作试卷及答案
- 2026年监理员考试题库及答案
- 航道、通航建筑物及航运枢纽大坝运行安全风险辨识评估管控指南(试行)
- 2026年屠宰兽医卫生检验员考试题库(含考点)
- 2026中国资源循环集团有色金属投资有限公司社会招聘2人笔试历年典型考点题库附带答案详解
- pdf日语专业毕业论文写作指导
- (正式版)DB50∕T 959-2019 《营运高速公路施工管理规范 》
- 银行客户投诉处理培训
评论
0/150
提交评论