reference:library:sleepdog:sleep
目录
Watchdog.sleep()
设定休眠时常并启动休眠,时间长度为毫秒。
设定的时常并不是无限长,以SAMD21G为例,其睡眠时常大概为16秒。设置的睡眠时间不可以超过这个时长。
比如你设置的睡眠时长为40000ms,也就是40秒,实际醒来时间也为16秒。主要原因在于该睡眠采用内部定时器中断,由于内部定时器位数有限,因此在16s后,内部定时器溢出。
无参数状态按照最大睡眠时间自动唤醒。
语法
unsigned int Watchdog.sleep(); unsigned int Watchdog.sleep(unsigned int sleepMS);
参数
- sleepMS:休眠时间长度,单位是毫秒。1000代表1秒。
返回值
返回在睡眠中消耗的时间,单位是毫秒(无符号长整数)。
例子
/*本例以lora物联网低功耗板为例,开发板为arduino Zero */ /*A5控制外部设备功耗,高电平代表工作状态,低电平代表关机状态*/ /*本例让开发板处于休眠状态,并每隔16s判断是否达到休眠时间,休眠时间不足将继续休眠,否则开启外部设备电源进入全功耗工作状态*/ #include <Adafruit_SleepyDog.h> #define MAXSLEEP 600000 unsigned int sleepTime=0; void setup() { pinMode(A5,OUTPUT); // 初始化A5引脚为输出 digitalWrite(A5,LOW); // A5引脚为低电平,关闭外设电源 } void loop() { while(sleepTime<MAXSLEEP){ //休眠10分钟 Watchdog.sleep(); sleepTime+=16000; } digitalWrite(A5,HIGH); //all work code can place here //其他代码可在此处编写 sleepTime=0; }
reference/library/sleepdog/sleep.txt · 最后更改: 2023/06/07 04:24 由 127.0.0.1