CN116010143A - 一种休眠下自动喂狗的方法和储能*** - Google Patents
一种休眠下自动喂狗的方法和储能*** Download PDFInfo
- Publication number
- CN116010143A CN116010143A CN202211650453.XA CN202211650453A CN116010143A CN 116010143 A CN116010143 A CN 116010143A CN 202211650453 A CN202211650453 A CN 202211650453A CN 116010143 A CN116010143 A CN 116010143A
- Authority
- CN
- China
- Prior art keywords
- time
- sleep
- dormancy
- enter
- wake
- 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.)
- Pending
Links
- 230000005059 dormancy Effects 0.000 title claims abstract description 90
- 241000282472 Canis lupus familiaris Species 0.000 title claims abstract description 84
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000004146 energy storage Methods 0.000 title claims abstract description 25
- 230000007958 sleep Effects 0.000 claims abstract description 163
- 230000002618 waking effect Effects 0.000 claims abstract description 16
- 230000002093 peripheral effect Effects 0.000 claims abstract description 14
- 230000006870 function Effects 0.000 claims description 71
- 238000004891 communication Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 16
- 230000009471 action Effects 0.000 claims description 5
- 230000004622 sleep time Effects 0.000 claims description 5
- 238000007599 discharging Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Power Sources (AREA)
Abstract
本发明公开了一种休眠下自动喂狗的方法和储能***。该休眠下自动喂狗的方法包括:控制***开始进入休眠状态;关闭主时钟和耗电外设;初始化配置唤醒条件;配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间,其中,所述第二时间短于所述第一时间,所述休眠定时器的时钟频率小于所述主时钟的时钟频率;确定所述休眠定时器是否到达所述第二时间;若所述休眠定时器到达所述第二时间,唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次;控制所述***进入休眠状态。通过采用上述方案,解决了如何在***休眠下正常喂狗且造成的功耗较低的问题。
Description
技术领域
本发明涉及储能电源的技术领域,尤其涉及一种休眠下自动喂狗的方法和储能***。
背景技术
***要求不管是正常工作状态下还是低功耗休眠状态下,要求***能够抵御因各种因素造成的程序跑飞、数据溢出、死循环等造成的死机。众所周知,为了解决上述问题,通常采用看门狗。
硬件看门狗就是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号的电路。看门狗命令在程序的中断中拥有最高的优先级。防止程序跑飞。也可以防止程序在线运行时候出现死循环。软件看门狗技术的原理和硬件看门狗一样,只不过是用软件的方法实现。
现有的储能***为了使自身能够抵御各种意外的因素造成的程序跑飞、死循环等死机现象,通常配备有看门狗,看门狗要求不管***正常工作还是进入低功耗休眠静止,都要按时喂狗,防止溢出造成的***复位。现有的看门狗通常使用***的主时钟进行计时,然而主时钟通常为高速时钟,在储能***休眠时看门狗增加的功耗较大。因此,如何在***休眠下正常喂狗且造成的功耗较低是一个亟待解决的问题。
发明内容
本发明提供了一种休眠下自动喂狗的方法和储能***,以解决如何在***休眠下正常喂狗且造成的功耗较低的问题。
根据本发明的一方面,提供了一种休眠下自动喂狗的方法,所述休眠下自动喂狗的方法包括:
控制***开始进入休眠状态;
关闭主时钟和耗电外设;
初始化配置唤醒条件;
配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间,其中,所述第二时间短于所述第一时间,所述休眠定时器的时钟频率小于所述主时钟的时钟频率;
确定所述休眠定时器是否到达所述第二时间;
若所述休眠定时器到达所述第二时间,唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次;
控制所述***进入休眠状态。
在本发明的可选实施例中,所述初始化配置唤醒条件之后,还包括:
确定所述***是否接收到满足所述唤醒条件的唤醒操作;
若所述***接收到满足所述唤醒条件的唤醒操作,控制所述***退出休眠状态,进入唤醒中断函数并清除所述唤醒中断函数的中断标志位,并清除休眠标志位;
若所述***未接收到满足所述唤醒条件的唤醒操作,执行控制所述***进入休眠状态的步骤。
在本发明的可选实施例中,所述控制所述***退出休眠状态,进入唤醒中断函数并清除所述唤醒中断函数的中断标志位,并清除休眠标志位之后,还包括:
从程序挫起的地方开始启动并喂狗一次;
重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间;
读取所述***开始休眠时保存的状态指标参数;
基于所述状态指标参数进行***初始化。
在本发明的可选实施例中,所述控制***开始进入休眠状态之前,还包括:
设置休眠标志位为0;
初始化看门狗,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间;
控制所述***进入正常工作状态,其中,***在所述正常工作状态下,每周期喂狗一次,每周期时间小于所述第三时间;
确定所述***是否在预设休眠时间内无动作且无工作状态;
若是,执行控制***开始进入休眠状态的步骤;
若否,执行控制所述***进入正常工作状态的步骤。
在本发明的可选实施例中,所述配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间之后,还包括:
确定所述***是否没有充放电操作;
若所述***有充放电操作,执行重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间的步骤;
若所述***没有充放电操作,设置所述休眠标志位为1;
判断所述休眠标志位是否为1;
若所述休眠标志位为1,执行控制所述***进入休眠状态的步骤。
在本发明的可选实施例中,所述判断所述休眠标志位是否为1,包括:
通过while语句判断所述休眠标志位是否为1。
在本发明的可选实施例中,所述休眠定时器中断函数的优先级大于所述唤醒中断函数的优先级。
在本发明的可选实施例中,所述休眠下自动喂狗的方法还包括以下至少一项:
所述休眠定时器为LPTIM;
所述唤醒条件包括充电唤醒、放电唤醒、按键唤醒、通信唤醒、串口唤醒中的至少一种;
所述第二时间的两倍与所述第一时间的差值小于预设差值。
在本发明的可选实施例中,所述唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次之后,还包括:
执行判断所述休眠标志位是否为1的步骤。
根据本发明的另一方面,提供了一种储能***,其特征在于,所述储能***包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的休眠下自动喂狗的方法。
本发明实施例的技术方案,通过控制***开始进入休眠状态,然后关闭主时钟和耗电外设;初始化配置唤醒条件;然后配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间,其中,所述第二时间短于所述第一时间,所述休眠定时器的时钟频率小于所述主时钟的时钟频率;然后确定所述休眠定时器是否到达所述第二时间;若所述休眠定时器到达所述第二时间,唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次;最后控制所述***进入休眠状态。故在***休眠时,会关闭主时钟和耗电外设,并且能够采用休眠定时器进行喂狗,***无需进入主循环喂狗,***从在休眠中被休眠定时器唤醒,到再次进入休眠状态,执行的程序只有休眠定时器中断函数和喂狗等少数几条语句,只需要几个机器周期,同时所述休眠定时器的时钟频率小于所述主时钟的时钟频率,所以在短短的时间内产生的功耗极低,故本方案能够使***在休眠下自动喂狗产生的功耗极低,解决了如何在***休眠下正常喂狗且造成的功耗较低的问题。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种休眠下自动喂狗的方法的流程图;
图2为本发明实施例二提供的一种休眠下自动喂狗的方法的流程图;
图3为本发明实施例三提供的一种休眠下自动喂狗的方法的流程图;
图4为本发明实施例四提供的一种储能***的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种休眠下自动喂狗的方法的流程图,本实施例可适用于储能***休眠的情况,该方法可以由储能***的处理器来执行,该处理器可以采用硬件和/或软件的形式实现。如图1所示,该休眠下自动喂狗的方法包括:
S110、控制***开始进入休眠状态。
其中,休眠状态是指***的功耗最低的状态。为了防止***功耗较大,可在***处于静置的待机状态一段时间后控制***自动开始进入休眠状态。
S120、关闭主时钟和耗电外设。
其中,主时钟是指***正常工作时所使用的时钟,通常为高速时钟。当该休眠下自动喂狗的方法配置在单片机内,主时钟可为HSI、HSE、PCLK等,在此不做具体限定。
耗电外设是指***较为耗电的除主机外的大部分硬件设备,例如键盘、鼠标、显示屏等,在此不做具体限定。例如耗电外设包括显示屏,当耗电外设关闭时,显示屏会相应的熄灭,防止显示屏在***休眠时增加耗电量。
S130、初始化配置唤醒条件。
其中,唤醒条件是指能够将***从休眠状态中唤醒的条件,例如充电唤醒、放电唤醒、按键唤醒、通信唤醒、串口唤醒等。充电唤醒即为***接收到充电信号后便被唤醒,放电唤醒即为***开始放电时便被唤醒,按键唤醒即为***连接的键盘的按键被按下时被唤醒,通信唤醒即为收到通信相关信号时被唤醒,串口唤醒是指***所连接的串口收到信号时被唤醒,根据使用需求的不同,可配置不同的唤醒条件,在此不做具体限定。
S140、配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间,其中,所述第二时间短于所述第一时间,所述休眠定时器的时钟频率小于所述主时钟的时钟频率。
其中,由于休眠定时器的溢出时间会小于看门狗的溢出时间,所以计时时会先到达休眠定时器的溢出时间。由于所述休眠定时器的时钟频率小于所述主时钟的时钟频率,所以休眠定时器所用的功耗较低。
S150、确定所述休眠定时器是否到达所述第二时间。
其中,第二时间为休眠定时器的溢出时间,所以到达第二时间时休眠定时器会溢出。
若所述休眠定时器到达所述第二时间,执行步骤S160。若所述休眠定时器未到达所述第二时间,可持续确定所述休眠定时器是否到达所述第二时间,即执行步骤S150。
S160、唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次。
其中,中断函数是在发生中断时间后,主程序自动进入中断函数运行,运行结束后在退出中断函数,返回到进入中断函数之前的运行状态。中断标志位标志着进入了中断函数。休眠定时器中断函数是指与休眠定时器有关的中断函数,当所述休眠定时器到达所述第二时间,说明休眠定时器溢出,故此时进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,然后从程序挫起的地方开始启动,即***返回到进入休眠定时器中断函数之前的状态,最后喂狗一次。
S170、控制所述***进入休眠状态。
其中,***进入休眠状态是指***已经处于耗电外设和主时钟关闭的功耗最低的状态。
上述方案,通过控制***开始进入休眠状态,然后关闭主时钟和耗电外设;初始化配置唤醒条件;然后配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间,其中,所述第二时间短于所述第一时间,所述休眠定时器的时钟频率小于所述主时钟的时钟频率;然后确定所述休眠定时器是否到达所述第二时间;若所述休眠定时器到达所述第二时间,唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次;最后控制所述***进入休眠状态。故在***休眠时,会关闭主时钟和耗电外设,并且能够采用休眠定时器进行喂狗,***无需进入主循环喂狗,***从在休眠中被休眠定时器唤醒,到再次进入休眠状态,执行的程序只有休眠定时器中断函数和喂狗等少数几条语句,只需要几个机器周期,同时所述休眠定时器的时钟频率小于所述主时钟的时钟频率,所以在短短的时间内产生的功耗极低,故本方案能够使***在休眠下自动喂狗产生的功耗极低,解决如何在***休眠下正常喂狗且造成的功耗较低的问题。
在本发明的可选实施例中,所述休眠定时器为LPTIM。
其中,LPTIM:Low-powertimer,即低功耗定时器。LPTIM是一个16位定时器,得益于其定时器的低功耗。由于LPTIM的时钟源具有多样性,因此LPTIM能够在所有电源模式下保持运行状态。即使没有内部时钟源,LPTIM也能运行,鉴于这一点,可将其用作“脉冲计数器”,这种脉冲计数器在某些应用中十分有用。此外,LPTIM还能将***从低功耗模式唤醒,因此非常适合实现“超时功能”,而且功耗极低。LPTIM引入了一个灵活的时钟方案,该方案能够提供所需的功能和性能,同时还能最大程度地降低功耗。故LPTIM能工作在极低的功耗下,具有从低功耗模式中唤醒***的能力,以极低的功耗实现超时功能监测,通过LPTIM在***休眠时进行喂狗,对***产生的额外功耗极低,使***能够满足休眠下正常喂狗且造成的功耗较低。
在一个具体的实施例中,***为便携储能***,在无工作状态下,进入休眠,为了实现低功耗,要求低功耗电流小于等于500uA。***从休眠中被LPTIM唤醒,到再次进入停止模式休眠,程序只有执行LPTIM中断函数和喂狗这4条语句,几个机器周期,在短短的时间内产生的功耗极低。在加入看门狗和低功耗定时器LPTIM唤醒的功能程序模块后,测得***的低功耗电流仍为310uA,满足***功耗要求。
在本发明的可选实施例中,所述第二时间的两倍与所述第一时间的差值小于预设差值。其中,通过使所述第二时间的两倍与所述第一时间的差值小于预设差值,故休眠定时器喂狗的时间约为看门狗的溢出时间的一半,满足及时喂狗的要求。
实施例二
图2为本发明实施例二提供的一种休眠下自动喂狗的方法的流程图,本实施例与上述实施例之间的关系是对实施例一进行改进。可选的,所述初始化配置唤醒条件之后,还包括:确定所述***是否接收到满足所述唤醒条件的唤醒操作;若所述***接收到满足所述唤醒条件的唤醒操作,控制所述***退出休眠状态,进入唤醒中断函数并清除所述唤醒中断函数的中断标志位,并清除休眠标志位;若所述***未接收到满足所述唤醒条件的唤醒操作,执行控制所述***进入休眠状态的步骤。在本发明的可选实施例中,所述控制所述***退出休眠状态,进入唤醒中断函数并清除所述唤醒中断函数的中断标志位,并清除休眠标志位之后,还包括:从程序挫起的地方开始启动并喂狗一次;重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间;读取所述***开始休眠时保存的状态指标参数;基于所述状态指标参数进行***初始化。基于此,如图2所示,该休眠下自动喂狗的方法包括:
S200、控制***开始进入休眠状态。
S210、关闭主时钟和耗电外设。
S220、初始化配置唤醒条件。
S231、确定所述***是否接收到满足所述唤醒条件的唤醒操作。
若所述***接收到满足所述唤醒条件的唤醒操作,执行步骤S241;若所述***未接收到满足所述唤醒条件的唤醒操作,执行步骤S290、控制所述***进入休眠状态的步骤。
其中,唤醒操作是指用于将***从休眠状态中唤醒的操作,可选的,所述唤醒条件包括充电唤醒、放电唤醒、按键唤醒、通信唤醒、串口唤醒中的至少一种。充电唤醒即为***接收到充电信号后便被唤醒,此时对应的唤醒操作即为有充电信号;放电唤醒即为***开始放电时便被唤醒,此时对应的唤醒操作即为***开始放电;按键唤醒即为***连接的键盘的按键被按下时被唤醒,此时对应的唤醒操作即为键盘被按下;通信唤醒即为收到通信相关信号时被唤醒,此时对应的唤醒操作即为收到通信信号;串口唤醒是指***所连接的串口收到信号时被唤醒,此时对应的唤醒操作即为对串口发出信号,根据使用需求的不同,可配置不同的唤醒条件,在此不做具体限定。
S241、控制所述***退出休眠状态,进入唤醒中断函数并清除所述唤醒中断函数的中断标志位,并清除休眠标志位。
其中,当***接收到满足所述唤醒条件的唤醒操作,说明***此时被唤醒,所以会退出休眠状态。故此时进入唤醒中断函数并清除所述唤醒中断函数的中断标志位,并清除休眠标志位,实现将***唤醒。
S251、从程序挫起的地方开始启动并喂狗一次。
其中,挫起的地方是指***进入唤醒中断函数时的状态,此时喂狗一次,防止***唤醒时看门狗溢出导致***重置影响***使用。
S261、重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间。
其中,由于此时***需要从休眠中被唤醒进入正常工作状态,正常工作时需要使用主时钟,所以需要配备所述主时钟,关闭所述休眠定时器。同时,通过配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间,通过使***休眠时喂狗时间较长,***休眠时看门狗不会产生多余的功耗,使得电池自我掉电加剧。通过使正常工作时看门狗的溢出时间较短,能够使***在正常工作下,倘若出现程序跑飞的死机情况,***能快速自我恢复。
S271、读取所述***开始休眠时保存的状态指标参数。
其中,状态指标参数是指***正常工作时各项正确参数,***休眠时内部的寄存器通常会保存***各项参数,***可通过读取寄存器内保存的状态指标参数,然后通过显示器显示当前***的状态指标参数。
S281、基于所述状态指标参数进行***初始化。
其中,通过进行***初始化,能够使***进入工作状态准备,便于***正常工作。
故采用上述方案,***能够从休眠状态被唤醒操作唤醒,同时唤醒后能够进入工作状态准备,便于***正常工作。
S232、配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间,其中,所述第二时间短于所述第一时间,所述休眠定时器的时钟频率小于所述主时钟的时钟频率。
S242、确定所述休眠定时器是否到达所述第二时间。
若所述休眠定时器到达所述第二时间,执行步骤S252,若所述休眠定时器未到达所述第二时间,可持续确定所述休眠定时器是否到达所述第二时间,即执行步骤S242。
S252、唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次。
S290、控制所述***进入休眠状态。
实施例三
图3为本发明实施例三提供的一种休眠下自动喂狗的方法的流程图,本实施例与上述实施例之间的关系是对实施例二进行改进。可选的,所述控制***开始进入休眠状态之前,还包括:设置休眠标志位为0;初始化看门狗,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间;控制所述***进入正常工作状态,其中,***在所述正常工作状态下,每周期喂狗一次,每周期时间小于所述第三时间;确定所述***是否在预设休眠时间内无动作且无工作状态;若是,执行控制***开始进入休眠状态的步骤;若否,执行控制所述***进入正常工作状态的步骤。可选的,所述配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间之后,还包括:确定所述***是否没有充放电操作;若所述***有充放电操作,执行重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间的步骤;若所述***没有充放电操作,设置所述休眠标志位为1;判断所述休眠标志位是否为1;若所述休眠标志位为1,执行控制所述***进入休眠状态的步骤。可选的,所述唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次之后,还包括:执行判断所述休眠标志位是否为1的步骤。基于此,如图3所示,该休眠下自动喂狗的方法包括:
S300、设置休眠标志位为0。
其中,休眠标志位是指反映***是否休眠的标志位,当休眠标志位为0,说明***不处于休眠状态。
S310、初始化看门狗,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间。
其中,由于***不处于休眠状态,此时***正常工作,通过配置所述看门狗的溢出时间为第三时间,所述第三时间短于所述第一时间,***在正常工作时倘若出现故障能够尽快恢复。
S320、控制所述***进入正常工作状态,其中,***在所述正常工作状态下,每周期喂狗一次,每周期时间小于所述第三时间。
其中,每周期即为***正常工作时一次主循环所需时间,例如主程序循环控制逻辑每周期执行时间约为2ms,每次主循环都进行一次喂狗。通过此设置,***正常工作时,每周期都会喂狗,从而在正常工作下,出现程序跑飞的死机情况,***无法喂狗时看门狗会溢出,进而***能快速自我恢复。故本方案在***的整个生命周期,能够抵御各种意外的因素造成的程序跑飞、死循环等死机现象。在一个具体的实施例中,第三时间为3s,满足***正常工作下,死机时能够快速恢复。
S330、确定所述***是否在预设休眠时间内无动作且无工作状态。
若是,执行步骤S340、控制***开始进入休眠状态;若否,执行步骤S320、控制所述***进入正常工作状态。
其中,当***在预设休眠时间内无动作且无工作状态,说明此时***无人操作,故可以开始进入休眠状态,实现在无人操作待机时能够自动进入休眠状态,节省***功耗。
S340、控制***开始进入休眠状态。
S350、关闭主时钟和耗电外设。
S360、初始化配置唤醒条件。
S371、确定所述***是否接收到满足所述唤醒条件的唤醒操作。
若所述***接收到满足所述唤醒条件的唤醒操作,执行步骤S381;若所述***未接收到满足所述唤醒条件的唤醒操作,执行步骤S290、控制所述***进入休眠状态的步骤。
S381、控制所述***退出休眠状态,进入唤醒中断函数并清除所述唤醒中断函数的中断标志位,并清除休眠标志位。
S391、从程序挫起的地方开始启动并喂狗一次。
S3101、重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间。
S3111、读取所述***开始休眠时保存的状态指标参数。
S3121、基于所述状态指标参数进行***初始化。
S372、配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间,其中,所述第二时间短于所述第一时间,所述休眠定时器的时钟频率小于所述主时钟的时钟频率。
S382、确定所述休眠定时器是否到达所述第二时间。
若所述休眠定时器到达所述第二时间,执行步骤S392,若所述休眠定时器未到达所述第二时间,可持续确定所述休眠定时器是否到达所述第二时间,即执行步骤S282。
S392、唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次。
在本发明的可选实施例中,所述唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次之后,还包括:执行判断所述休眠标志位是否为1的步骤,即执行步骤S3100。
S380、确定所述***是否没有充放电操作。
若所述***有充放电操作,执行步骤S3101、重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间;若所述***没有充放电操作,执行步骤S390、设置所述休眠标志位为1。
其中,充放电操作是指***是否在充电或放电,倘若***有充放电操作,说明***不应进入休眠,故此时执行步骤S3101、重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,能够使***尽快进入正常工作的状态。
S390、设置所述休眠标志位为1。
其中,当***没有充放电操作,说明***确实无任何操作,故此时需要进入休眠状态,设置休眠标志位1。
S3100、判断所述休眠标志位是否为1。
若所述休眠标志位为1,执行步骤S3110控制所述***进入休眠状态。若所述休眠标志位不为1,执行步骤S3101、重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间。
其中,若休眠标志位为1,说明***应当进入休眠状态,故此时执行步骤S3110控制所述***进入休眠状态,当休眠标志位不为1,说明此时***不应当休眠,故步骤S3101、重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,实现唤醒***,利于***进入正常工作。
S3110、控制所述***进入休眠状态。
在本发明的可选实施例中,所述判断所述休眠标志位是否为1,包括:
通过while语句判断所述休眠标志位是否为1。
其中,通过while语句进行判断较为常见,应用范围广。
在本发明的可选实施例中,所述休眠定时器中断函数的优先级大于所述唤醒中断函数的优先级。
其中,所述休眠定时器中断函数的优先级大于所述唤醒中断函数的优先级即为当休眠定时器到达溢出时间且同时接收到唤醒操作时,会先执行步骤S392、唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次。然后再执行步骤S381、控制所述***退出休眠状态,进入唤醒中断函数并清除所述唤醒中断函数的中断标志位,并清除休眠标志位以及后续的步骤。通过此方式程序执行的逻辑较为顺畅,***不易出现故障。
以下以一个具体实施案例来验证本方法能够起到正确的防护作用,在此实施例中,第三时间为3s,第一时间为35s,第二时间为15s。在主程序循环逻辑控制中,分别操作:加入定时2min后执行while(1)死循环测试代码,验证看门狗能在3s内重新复位***;加入定时2min后执行,在定点型mcu内指向浮点型float与整型int数据运算,数据强制取值造成程序跑飞,验证看门狗能3s内重新复位***;在主程序的中断函数中重复模拟上述软件故障,验证看门狗能3s内重新复位***;在进入停止模式休眠前一刻,退出停止模式后一刻再次重复模拟上述软件故障,验证***在休眠下35s内能复位,恢复正常工作。加入测试代码和未加入测试代码,通过LCD直观显示现象,正常现象:休眠后能正常唤醒;软件故障:LCD显示卡顿、唤不醒;软件故障下加入看门狗:对应的时间内***从死机变成复位重启。测试结果:在***死机或跑飞的情况下,本发明提出的休眠下自动喂狗的方法能在设定的时间内复位***。
实施例四
图4为本发明实施例四提供的一种储能***的结构示意图。如图4所示,该储能***10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM13中,还可存储储能***10操作所需的各种程序和数据。处理器11、ROM12以及RAM13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
储能***10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许储能***10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如休眠下自动喂狗的方法。
在一些实施例中,休眠下自动喂狗的方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM12和/或通信单元19而被载入和/或安装到储能***10上。当计算机程序加载到RAM13并由处理器11执行时,可以执行上文描述的休眠下自动喂狗的方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行休眠下自动喂狗的方法。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在储能***上实施此处描述的***和技术,该储能***具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给储能***。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种休眠下自动喂狗的方法,其特征在于,包括:
控制***开始进入休眠状态;
关闭主时钟和耗电外设;
初始化配置唤醒条件;
配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间,其中,所述第二时间短于所述第一时间,所述休眠定时器的时钟频率小于所述主时钟的时钟频率;
确定所述休眠定时器是否到达所述第二时间;
若所述休眠定时器到达所述第二时间,唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次;
控制所述***进入休眠状态。
2.根据权利要求1所述的休眠下自动喂狗的方法,其特征在于,所述初始化配置唤醒条件之后,还包括:
确定所述***是否接收到满足所述唤醒条件的唤醒操作;
若所述***接收到满足所述唤醒条件的唤醒操作,控制所述***退出休眠状态,进入唤醒中断函数并清除所述唤醒中断函数的中断标志位,并清除休眠标志位;
若所述***未接收到满足所述唤醒条件的唤醒操作,执行控制所述***进入休眠状态的步骤。
3.根据权利要求2所述的休眠下自动喂狗的方法,其特征在于,所述控制所述***退出休眠状态,进入唤醒中断函数并清除所述唤醒中断函数的中断标志位,并清除休眠标志位之后,还包括:
从程序挫起的地方开始启动并喂狗一次;
重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间;
读取所述***开始休眠时保存的状态指标参数;
基于所述状态指标参数进行***初始化。
4.根据权利要求1至3中任一项所述的休眠下自动喂狗的方法,其特征在于,所述控制***开始进入休眠状态之前,还包括:
设置休眠标志位为0;
初始化看门狗,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间;
控制所述***进入正常工作状态,其中,***在所述正常工作状态下,每周期喂狗一次,每周期时间小于所述第三时间;
确定所述***是否在预设休眠时间内无动作且无工作状态;
若是,执行控制***开始进入休眠状态的步骤;
若否,执行控制所述***进入正常工作状态的步骤。
5.根据权利要求4所述的休眠下自动喂狗的方法,其特征在于,所述配置看门狗的溢出时间为第一时间且配置休眠定时器的溢出时间为第二时间之后,还包括:
确定所述***是否没有充放电操作;
若所述***有充放电操作,执行重新配备所述主时钟、关闭所述休眠定时器,并配置所述看门狗的溢出时间为第三时间,其中,所述第三时间短于所述第一时间的步骤;
若所述***没有充放电操作,设置所述休眠标志位为1;
判断所述休眠标志位是否为1;
若所述休眠标志位为1,执行控制所述***进入休眠状态的步骤。
6.根据权利要求5所述的休眠下自动喂狗的方法,其特征在于,所述判断所述休眠标志位是否为1,包括:
通过while语句判断所述休眠标志位是否为1。
7.根据权利要求2或3所述的休眠下自动喂狗的方法,其特征在于,所述休眠定时器中断函数的优先级大于所述唤醒中断函数的优先级。
8.根据权利要求1至3中任一项所述的休眠下自动喂狗的方法,其特征在于,所述休眠下自动喂狗的方法还包括以下至少一项:
所述休眠定时器为LPTIM;
所述唤醒条件包括充电唤醒、放电唤醒、按键唤醒、通信唤醒、串口唤醒中的至少一种;
所述第二时间的两倍与所述第一时间的差值小于预设差值。
9.根据权利要求5所述的休眠下自动喂狗的方法,其特征在于,所述唤醒进入休眠定时器中断函数,清除所述休眠定时器中断函数的中断标志位,并喂狗一次之后,还包括:
执行判断所述休眠标志位是否为1的步骤。
10.一种储能***,其特征在于,所述储能***包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9中任一项所述的休眠下自动喂狗的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211650453.XA CN116010143A (zh) | 2022-12-21 | 2022-12-21 | 一种休眠下自动喂狗的方法和储能*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211650453.XA CN116010143A (zh) | 2022-12-21 | 2022-12-21 | 一种休眠下自动喂狗的方法和储能*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116010143A true CN116010143A (zh) | 2023-04-25 |
Family
ID=86020263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211650453.XA Pending CN116010143A (zh) | 2022-12-21 | 2022-12-21 | 一种休眠下自动喂狗的方法和储能*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116010143A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501399A (zh) * | 2023-06-26 | 2023-07-28 | 荣耀终端有限公司 | 一种唤醒方法及电子设备 |
-
2022
- 2022-12-21 CN CN202211650453.XA patent/CN116010143A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501399A (zh) * | 2023-06-26 | 2023-07-28 | 荣耀终端有限公司 | 一种唤醒方法及电子设备 |
CN116501399B (zh) * | 2023-06-26 | 2023-11-07 | 荣耀终端有限公司 | 一种唤醒方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6981163B2 (en) | Method and apparatus for power mode transition in a multi-thread processor | |
US7529956B2 (en) | Granular reduction in power consumption | |
TWI386791B (zh) | 用以將計算平台轉換為低電力系統狀態之技術 | |
US7430673B2 (en) | Power management system for computing platform | |
US9423847B2 (en) | Method and apparatus for transitioning a system to an active disconnect state | |
CN110806794A (zh) | 存储***的掉电保护方法、***、计算机设备以及介质 | |
US20140344599A1 (en) | Method and System for Power Management | |
CN104024980A (zh) | 连接的待机睡眠状态 | |
US10089182B2 (en) | Energy-efficient nonvolatile microprocessor | |
US7886177B2 (en) | Method and apparatus of collecting timer ticks | |
CN116010143A (zh) | 一种休眠下自动喂狗的方法和储能*** | |
CN102929381B (zh) | 电子***及其电源管理方法 | |
CN104111850A (zh) | 一种降低微控制单元mcu功耗的方法及*** | |
CN114987368B (zh) | 车辆静态电流的控制方法、装置、电子设备和存储介质 | |
US8560873B1 (en) | Determination of transitional characteristic attributes of components during scheduled wake-up power transition of computing device | |
CN103218031A (zh) | 电子装置以及休眠方法 | |
CN115964090A (zh) | 一种基于芯片的休眠、唤醒方法及装置 | |
CN103970253B (zh) | 省电操作方法与电子装置 | |
CN101980103A (zh) | 电源状态管理方法及相关的计算机*** | |
CN114902159A (zh) | 功率管理***和方法 | |
TWI395096B (zh) | 電源管理方法及其相關晶片組及電腦系統 | |
US20230315188A1 (en) | Using a hardware-based controller for power state management | |
CN114153303B (zh) | 一种功耗控制***和功耗控制方法、装置、介质 | |
CN115599194B (zh) | 一种Embedded Flash快速进入低功耗的设计***及方法 | |
CN111459555B (zh) | 一种休眠方法和装置 |
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 |