CN109752988B - 一种利用单片机进行终端控制的方法及装置 - Google Patents
一种利用单片机进行终端控制的方法及装置 Download PDFInfo
- Publication number
- CN109752988B CN109752988B CN201810038706.5A CN201810038706A CN109752988B CN 109752988 B CN109752988 B CN 109752988B CN 201810038706 A CN201810038706 A CN 201810038706A CN 109752988 B CN109752988 B CN 109752988B
- Authority
- CN
- China
- Prior art keywords
- time
- delay
- delay timer
- accumulated
- timing clock
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Microcomputers (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本公开是关于一种利用单片机进行终端控制的方法及装置,该方法包括:控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;检测所述累计延迟时间是否达到预设时间阈值;在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。该方法使得在主函数中延时时不阻塞MCU工作,并且可以同时进行多个不同延时处理操作,实现最大限度地利用MCU计算处理能力。
Description
技术领域
本公开涉及终端控制领域,尤其涉及一种利用单片机进行终端控制的方法及装置。
背景技术
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。在嵌入式编程时通常需要进行延时处理。
但是,相关技术中的延时处理方法,往往会使用一个死循环来实现。该方式严重影响系统性能,比如会出现主函数被阻塞,以及无法实现多处延时(计时)操作,微控制单元(Microcontroller Unit;MCU)工作效率低下等诸多问题。
发明内容
针对相关技术中存在的问题,本公开提供了一种利用单片机进行终端控制的方法及装置。
根据本公开实施例的第一方面,提供一种利用单片机进行终端控制的方法,包括:
控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
检测所述累计延迟时间是否达到预设时间阈值;
在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
可选的,所述控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,包括:
获取所述延迟计时器的前一时刻;
检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时。
可选的,所述获取所述延迟计时器的前一时刻,包括:
检测所述延迟计时器是否初始化;
在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
可选的,所述方法还包括:
在检测到所述延迟计时器非初始化的情况下,初始化所述延迟计时器。
可选的,所述方法还包括:
计算所述全局计时时钟的当前时刻与所述延迟计时器的前一时刻之间的时间差值;
将所述时间差值存储至所述单片机的延时记录器。
可选的,所述方法还包括:
控制所述单片机进行定时中断,其中,所述定时中断对全局变量以预设速度累加。
可选的,所述延迟计时器的数量大于或等于2。
根据本公开第二方面,还提供了一种利用单片机进行终端控制的装置,包括:
控制单元,用于控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
检测单元,用于检测所述累计延迟时间是否达到预设时间阈值;
输出单元,用于在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
可选的,所述控制单元包括:
获取模块,用于获取所述延迟计时器的前一时刻;
检测模块,用于检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
赋值模块,用于在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时。
可选的,所述获取模块包括:
检测子模块,用于检测所述延迟计时器是否初始化;
获取子模块,用于在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
本公开的实施例提供的技术方案可以包括以下有益效果:本公开通过控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间,检测该累计延迟时间是否达到预设时间阈值,并在检测出该累计延迟时间达到预设时间阈值时,向终端输出控制指令,使得在主函数中延时时不阻塞MCU工作,并且可以同时进行多个不同延时处理操作,最大限度地利用MCU计算处理能力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1是根据一示例性实施例示出的一种利用单片机进行终端控制的方法的示意图;
图2是根据另一示例性实施例示出的一种利用单片机进行终端控制的方法的示意图;
图3是根据另一示例性实施例示出的一种利用单片机进行终端控制的方法的示意图;
图4是根据一示例性实施例示出的一种利用单片机进行终端控制的装置的框图;
图5是根据另一示例性实施例示出的一种利用单片机进行终端控制的装置的框图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种利用单片机进行终端控制的方法的示意图。如图1所示,该方法包括:
步骤S101,控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
步骤S103,检测所述累计延迟时间是否达到预设时间阈值;
步骤S105,在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
本公开实施例中的单片机,可以是嵌入式单片机,即嵌入式微控制器,以微控制器为核心控制单元的嵌入到对象体系中的专用计算机系统,是应用十分广泛的一种嵌入式系统结构。
在该实施例中,全局计时时钟,也即全局计时器,用于对系统全局进行计时。延时,是指在执行一项任务的过程中,保持执行该任务的工作状态的时间。延迟计时器,用于对该时间的长度进行统计。
在一种可能的实现方式中,预设时间阈值可以基于用户的需求进行制定。例如,终端为LED灯,本公开实施例中的单片机用于控制LED灯的亮灭。则可以基于用户希望达到的亮起时长或者熄灭时长对预设时间阈值进行设定,比如,50秒。
在一种可能的实现方式中,控制指令用于指示终端执行预设操作。例如,在上述的实施例中,可以指示终端(LED灯)熄灭或者亮起。
在一种可能的实现方式中,终端可以是智能家居设备(例如,扫地机器人、空气净化器等)、计算机、智能便携式设备(智能手环、智能手表等)等。
本公开实施例中,通过控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间,检测该累计延迟时间是否达到预设时间阈值,并在检测出该累计延迟时间达到预设时间阈值时,向终端输出控制指令,使得在主函数中延时时不阻塞MCU工作,并且可以同时进行无限个不同延时处理操作,最大限度地利用MCU计算处理能力。
在一种可能的实现方式中,如图2所示,所述控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时还可以包括:
步骤S201,获取所述延迟计时器的前一时刻;
步骤S203,检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
步骤S205,在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时。
在该实施例中,例如,延迟计时器的前一时刻为12时03分,全局计时时钟的当前时刻为12时06分,则确定全局计时时钟的当前时刻迟于延迟计时器的前一时刻,此时将全局计时时钟的当前时刻赋值给延迟计时器。
在该实施例中,由于将全局计时时钟的当前时刻赋值给延迟计时器,也即,实际是基于全局变量进行累加计时,使得在主函数中延时时不阻塞MCU工作,并且可以支持同时进行多个不同延时处理操作,进而能够最大限度地利用MCU计算处理能力。
在一种可能的实现方式中,所述获取所述延迟计时器的前一时刻,包括:
检测所述延迟计时器是否初始化;
在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
其中,在检测到所述延迟计时器非初始化的情况下,初始化所述延迟计时器。
在一种可能的实现方式中,所述方法还包括:
计算所述全局计时时钟的当前时刻与所述延迟计时器的前一时刻之间的时间差值;
将所述时间差值存储至所述单片机的延时记录器。
在一种可能的实现方式中,所述方法还包括:
控制所述单片机进行定时中断,其中,所述定时中断对全局变量以预设速度累加。
在一种可能的实现方式中,所述延迟计时器的数量大于或等于2。在本公开实施例中,对延迟计时器的数量没有上限控制,也即,可以同时进行多个不同延时处理操作。
图3是根据另一示例性实施例示出的一种利用单片机进行终端控制的方法的示意图。如图3所示,该方法包括:
步骤S301,设置全局计时时钟。
步骤S302,设置延迟计时时钟N,其中,N大于或等于2。
步骤S303,全局计时时钟计时,也即得到当前时间。
步骤S304,检测延迟计时器是否初始化。如果初始化,则执行步骤S305,如果未初始化,则执行步骤S312。
步骤S305,检测当前时刻是否迟于延迟计时器的前一时刻。若是,则执行步骤S306。
步骤S306,计算当前时刻与延迟计时器的前一时刻的时间差。
步骤S307,累计时刻差到延迟计时器的延迟记录器。
步骤S308,将当前时刻赋值给延迟计时器。
步骤S309,检测当前延迟计时器的延迟时间是否达到一预设值,也即上述的预设时间阈值。若是,则执行步骤S310;若否,则执行步骤S311。
步骤S310,控制终端执行预设操作,例如,控制LED灯亮起。
步骤S311,不控制终端执行预设操作。例如,如果先前LED灯处于亮起的状态,则控制LED灯熄灭。
步骤S312,初始化延迟计时器。
在本公开的一个实施例中,如下所述,提供了通过单片机控制两个LED灯,LED灯1和LED灯2,分别进行亮起和熄灭操作。
在相关技术中,在上述控制场景中,通常是采用以下程序进行控制:
但是,在上述程序中,由于使用阻塞延时方式,使得LED1与LED2亮、暗存在如下问题:
无法实现同时控制LED1以200ms闪亮、LED2以300ms闪亮;
因为delay函数使用循环方式实现延时,所以main主线程被阻塞严重影响MCU使用效率。
在本公开实施例中,通过控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间,检测该累计延迟时间是否达到预设时间阈值,并在检测出该累计延迟时间达到预设时间阈值时,向终端输出控制指令,使得在主函数中延时时不阻塞MCU工作,并且可以同时进行多个不同延时处理操作,最大限度地利用MCU计算处理能力。具体地,本公开主要通过如下三个部份实现非阻塞式延时:
定时中断对全局变量u16Ms以1毫秒速度累加;
TimeMs函数模块中以u16Ms为时间基准对形参Time.Delay作累加计时;以及
在所需延时处调用TimeMs,并读取返回参数值获知是否到达所需延时时间。
针对上述应用场景,根据本公开实施例,一种可选的控制程序如下:
//如下三个函数主要是延时功能,不阻塞主函数的延时方法
具体地,在该非阻塞式延时程序中,1毫秒(ms)定时器用于整机系统时钟基准,定时中断实现MsDida累加1。其次,形式参数传入时钟参数结构体Ts,在判断Ts.Init是否为0,并确认Ts.Init为0之后,判断MsDida是否大于Ts.Timebackup。如果MsDida大于Ts.Timebackup,则计算Ts.Timebackup与MsDida之差,并将差值累加入Ts.Delay。其中,如果判断出Ts.Init非0,则初始化Ts中的变量。另外,定义定时器变量Ta,调用TimeMs,并将Ta地址作为形式参数传入。判断Ta.Delay计时器是否达到阈值时间点,若是,则控制相应的LED灯执行预设操作。
通过以上非阻塞式延时程序,使得在主函数中延时时不阻塞MCU工作,并且可以同时对2个LED灯进行亮、暗控制,实现了最大限度地利用MCU计算处理能力的效果。
根据本公开实施例,还提供了一种利用单片机进行终端控制的装置,用于执行上述的利用单片机进行终端控制的装置。
图4是根据一示例性实施例示出的一种利用单片机进行终端控制的方法装置的框图,如图4所示,该利用单片机进行终端控制的方法装置包括:
控制单元41,用于控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
检测单元43,用于检测所述累计延迟时间是否达到预设时间阈值;
输出单元45,用于在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
图5是根据一示例性实施例示出的一种利用单片机进行终端控制的方法装置的框图,如图5所示,所述控制单元41还可以包括:
获取模块411,用于获取所述延迟计时器的前一时刻;
检测模块413,用于检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
赋值模块415,用于在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时。
可选的,所述获取模块411还可以包括:
检测子模块,用于检测所述延迟计时器是否初始化;
获取子模块,用于在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
本公开通过控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间,检测该累计延迟时间是否达到预设时间阈值,并在检测出该累计延迟时间达到预设时间阈值时,向终端输出控制指令,使得在主函数中延时时不阻塞MCU工作,并且可以同时进行无限个不同延时处理操作,最大限度地利用MCU计算处理能力。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。
Claims (8)
1.一种利用单片机进行终端控制的方法,其特征在于,包括:控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,包括:获取所述延迟计时器的前一时刻,检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻,在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时得到累计延迟时间;
检测所述累计延迟时间是否达到预设时间阈值;
在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
2.根据权利要求1所述的方法,其特征在于,所述获取所述延迟计时器的前一时刻,包括:
检测所述延迟计时器是否初始化;
在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在检测到所述延迟计时器非初始化的情况下,初始化所述延迟计时器。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
计算所述全局计时时钟的当前时刻与所述延迟计时器的前一时刻之间的时间差值;
将所述时间差值存储至所述单片机的延时记录器。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
控制所述单片机进行定时中断,其中,所述定时中断对全局变量以预设速度累加。
6.根据权利要求1所述的方法,其特征在于,所述延迟计时器的数量大于或等于2。
7.一种利用单片机进行终端控制的装置,其特征在于,包括:
控制单元,用于控制单片机的延迟计时器基于全局计时时钟的时间参数进行累加计时,得到累计延迟时间;
所述控制单元包括:
获取模块,用于获取所述延迟计时器的前一时刻;
检测模块,用于检测所述全局计时时钟的当前时刻是否迟于所述延迟计时器的前一时刻;
赋值模块,用于在检测出所述全局计时时钟的当前时刻迟于所述延迟计时器的前一时刻的情况下,将所述全局计时时钟的当前时刻赋值给所述延迟计时器,以指示所述延迟计时器基于赋值后的时刻进行累加计时;
检测单元,用于检测所述累计延迟时间是否达到预设时间阈值;
输出单元,用于在检测出所述累计延迟时间达到所述预设时间阈值的情况下,向终端输出控制指令。
8.根据权利要求7所述的装置,其特征在于,所述获取模块包括:
检测子模块,用于检测所述延迟计时器是否初始化;
获取子模块,用于在检测到所述延迟计时器初始化的情况下,获取所述延迟计时器的前一时刻。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2017214772798 | 2017-11-08 | ||
CN201721477279 | 2017-11-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109752988A CN109752988A (zh) | 2019-05-14 |
CN109752988B true CN109752988B (zh) | 2021-11-09 |
Family
ID=66402340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810038706.5A Active CN109752988B (zh) | 2017-11-08 | 2018-01-16 | 一种利用单片机进行终端控制的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109752988B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272564A (zh) * | 2008-04-17 | 2008-09-24 | 中兴通讯股份有限公司 | 一种软实时定时器调度的方法及软实时定时器模块 |
CN101498951A (zh) * | 2008-01-30 | 2009-08-05 | 汤姆森许可贸易公司 | 在计算机或可编程机器中处理时间值的方法 |
CN104102150A (zh) * | 2013-04-09 | 2014-10-15 | 亚德诺半导体股份有限公司 | 用于微处理器整合的传感器轮询单元 |
CN105528246A (zh) * | 2015-12-07 | 2016-04-27 | 厦门雅迅网络股份有限公司 | 一种基于动态计时周期的进程内定时器管理方法及系统 |
-
2018
- 2018-01-16 CN CN201810038706.5A patent/CN109752988B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101498951A (zh) * | 2008-01-30 | 2009-08-05 | 汤姆森许可贸易公司 | 在计算机或可编程机器中处理时间值的方法 |
CN101272564A (zh) * | 2008-04-17 | 2008-09-24 | 中兴通讯股份有限公司 | 一种软实时定时器调度的方法及软实时定时器模块 |
CN104102150A (zh) * | 2013-04-09 | 2014-10-15 | 亚德诺半导体股份有限公司 | 用于微处理器整合的传感器轮询单元 |
CN105528246A (zh) * | 2015-12-07 | 2016-04-27 | 厦门雅迅网络股份有限公司 | 一种基于动态计时周期的进程内定时器管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109752988A (zh) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107277989B (zh) | 智能家居照明控制方法及装置 | |
US9510414B2 (en) | Light emitting diode driving circuit and lighting apparatus having the same | |
WO2005072444A3 (en) | Intelligent memory device | |
EP1492005A3 (en) | Method and system for scheduling threads to perform real-time operations | |
RU2015149209A (ru) | Корректировка интенсивности сенсорной стимуляции для усиления активности медленных волн сна | |
WO2004072796A3 (en) | Reconfigurable processing | |
WO2017118200A1 (zh) | 电器设备控制方法及装置 | |
RU2007127162A (ru) | Система и способ планирования управления устройствами | |
CN104026744A (zh) | 电子烟微控制器的多任务执行方法及装置 | |
EP1630672A3 (en) | Information processing apparatus, method and program for distributed processing on processors with variable clock-rates | |
CN112019835B (zh) | 动态视觉传感器模组的帧率验证装置、方法及存储介质 | |
CN104079831A (zh) | 一种具有多路闪光同步信号的相机 | |
CN109752988B (zh) | 一种利用单片机进行终端控制的方法及装置 | |
CN107249146B (zh) | 基于智能电视动态配置led指示灯的方法 | |
CN104994315B (zh) | 背光调整方法、显示设备、遥控器及系统 | |
US20030177163A1 (en) | Microprocessor comprising load monitoring function | |
CN102540940B (zh) | 开关消抖系统及其方法 | |
CN109597687A (zh) | 数据同步的资源分配方法、装置、存储介质和电子设备 | |
CN104516297A (zh) | 一种基于rtc的定时开关机电路 | |
CN112434800B (zh) | 控制装置及类脑计算系统 | |
MX2008000623A (es) | Sistema y metodo para controlar multiples hilos de ejecucion de programa dentro de un procesador de hilos de ejecucion multiples. | |
RU2547237C2 (ru) | Способ функционирования процессора в среде реального времени | |
CN105930133B (zh) | 一种基于单片机系统的串行指令的发送方法 | |
CN108228242A (zh) | 一种可配置且具弹性的指令调度器 | |
EP1327935A3 (en) | Electronic control unit with task return processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230804 Address after: Room 315, Building 11, Lijingcheng, Qianjin Second Road, Bao'an District, Shenzhen City, Guangdong Province, 518100 Patentee after: Yuan Ruiyuan Address before: 523837 floor 3, building 4, No. 8, Lianfeng new road, ailing village, Dalingshan Town, Dongguan City, Guangdong Province Patentee before: DONGGUAN MITINGYUAN ELECTRONIC TECHNOLOGY CO.,LTD. |
|
TR01 | Transfer of patent right |