[发明专利]一种实现无阻塞无任务切换的事件延时方法有效
申请号: | 201711385884.7 | 申请日: | 2017-12-20 |
公开(公告)号: | CN109947468B | 公开(公告)日: | 2021-07-02 |
发明(设计)人: | 幸坤涛 | 申请(专利权)人: | 北京谊安医疗系统股份有限公司 |
主分类号: | G06F9/22 | 分类号: | G06F9/22 |
代理公司: | 北京方安思达知识产权代理有限公司 11472 | 代理人: | 陈琳琳;张红生 |
地址: | 100070 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 阻塞 任务 切换 事件 延时 方法 | ||
本发明公开了一种实现无阻塞无任务切换的事件延时方法,该方法应用在嵌入式操作系统中,所述方法包括:步骤1)设置所有被触发的延时事件B的触发标志;步骤2)执行周期为T1的主任务A,当周期为T2的延时事件B被触发后,改变延时事件B的触发标志;步骤3)在主任务A中,判断延时事件B的触发标志改变,如果是,转入步骤4),否则,转入步骤7);步骤4)判断延时事件B的延时是否达到,如果是,转入步骤5),否则,转入步骤6);步骤5)恢复延时事件B的触发标志,执行延时事件B满足后的处理,转入步骤7);步骤6)执行延时事件B持续过程中的处理;步骤7)执行主任务A的其它处理,然后转入步骤2),重复周期T1的主任务A。
技术领域
本发明涉及计算机领域,具体涉及一种实现无阻塞无任务切换的事件延时方法。
背景技术
在单片机的微处理器编程中,除了可编程逻辑器件FPGA外,其它各种单片机的微处理器等都是按着机器指令顺序执行的。因此若使用普通的事件延时方法,即大多数编程语言使用的循环语句,能够达到延时时间的目的,但这时除了中断可以执行外,其他程序都在等待,不能工作。若使用UCOSII操作系统自带的延时库函数OSTimeDly(),可以实现无阻塞延时,也不影响其它程序的运行,但却发生了任务切换。因此,上述两种方法都无法满足无阻塞无任务切换的需求。
发明内容
本发明的目的在于,克服现有的技术无法满足单片机无阻塞无任务切换的需求,提出了一种实现无阻塞无任务切换的事件延时方法。
为了实现上述目的,本发明提出了一种实现无阻塞无任务切换的事件延时方法,该方法应用在嵌入式操作系统中,所述方法包括:
步骤1)设置所有被触发的延时事件B的触发标志;
步骤2)嵌入式操作系统执行周期为T1的主任务A,当周期为T2的延时事件B被触发后,改变延时事件B的触发标志;
步骤3)在主任务A中,判断延时事件B的触发标志改变,如果是,转入步骤4),否则,转入步骤7);
步骤4)判断延时事件B的延时是否达到,如果是,转入步骤5),否则,转入步骤6);
步骤5)恢复延时事件B的触发标志,执行延时事件B满足后的处理,转入步骤7);
步骤6)执行延时事件B持续过程中的处理;
步骤7)执行主任务A的其它处理,然后转入步骤2),重复嵌入式系统的周期T1的主任务A。
作为上述方法的一种改进,所述方法在步骤1)之前还包括:为所有被触发的延时事件建立统一的ID号,从而支持多个延时事件,实现系统所需的多个无阻塞无任务切换的功能需求。
本发明的优势在于:
本发明的方法能够使单片机微处理器在实现延时时,满足无阻塞和无任务切换的需求,特别适用于一些既需要延时又不想阻塞其它函数或语句执行的场合。
附图说明
图1为本发明的实现无阻塞无任务切换的函数执行流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细的说明。
本发明的技术方案具体为:
设计实现无阻塞无任务切换的函数NT8U NoBlockTimerHMSM;
函数INT8U NoBlockTimerHMSM(INT8U ID,INT8U hours,INT8U minutes,INT8Useconds,INT16U milli),有五个输入参数,分别是ID号,小时,分钟,秒,毫秒。最多可以实现TIMER_MAX个无阻塞延时,TIMER_MAX可以随意设置,只要满足开发需求即可,最大设置为256。函数值返回0表示时间未到,返回1表示时间到。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京谊安医疗系统股份有限公司,未经北京谊安医疗系统股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711385884.7/2.html,转载请声明来源钻瓜专利网。