这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
reference:library:sleepdog:sleep [2019/07/30 08:00] – [Watchdog.sleep()] liudun | reference:library:sleepdog:sleep [2023/06/07 04:24] (当前版本) – 外部编辑 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Watchdog.sleep() ====== | ||
+ | 设定休眠时常并启动休眠,时间长度为毫秒。 | ||
+ | 设定的时常并不是无限长,以SAMD21G为例,其睡眠时常大概为16秒。设置的睡眠时间不可以超过这个时长。 | ||
+ | |||
+ | 比如你设置的睡眠时长为40000ms,也就是40秒,实际醒来时间也为16秒。主要原因在于该睡眠采用内部定时器中断,由于内部定时器位数有限,因此在16s后,内部定时器溢出。 | ||
+ | |||
+ | 无参数状态按照最大睡眠时间自动唤醒。 | ||
+ | ===== 语法 ===== | ||
+ | < | ||
+ | unsigned int Watchdog.sleep(); | ||
+ | unsigned int Watchdog.sleep(unsigned int sleepMS); | ||
+ | </ | ||
+ | ===== 参数 ===== | ||
+ | * sleepMS: | ||
+ | ===== 返回值 ===== | ||
+ | 返回在睡眠中消耗的时间,单位是毫秒(无符号长整数)。 | ||
+ | ===== 例子 ===== | ||
+ | <code cpp> | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | #include < | ||
+ | |||
+ | #define MAXSLEEP 600000 | ||
+ | |||
+ | unsigned int sleepTime=0; | ||
+ | |||
+ | void setup() { | ||
+ | |||
+ | pinMode(A5, | ||
+ | digitalWrite(A5, | ||
+ | |||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | while(sleepTime< | ||
+ | Watchdog.sleep(); | ||
+ | sleepTime+=16000; | ||
+ | } | ||
+ | digitalWrite(A5, | ||
+ | //all work code can place here // | ||
+ | sleepTime=0; | ||
+ | | ||
+ | } | ||
+ | </ |