友情提示点击顶部放大镜 可以使用站内搜索 记住我们的地址 www.hainabaike.com
看门狗(Watch Dog)是一个独立的定时器,当你开启看门狗后,需要在程序中看门狗定时器溢出前,对其进行 喂狗(复位)操作,否则看门狗会强制你的单片机重启,从头运行程序。
虽然Arduino核心库并未提供看门狗相关的API,但AVRGCC提供了相应的API支持,同样简单易用。需要注意的是Arduino bootloader并不支持看门狗,如果你直接使用看门狗定时器,可能会卡死在bootloader中。如果要使用看门狗建议使用ISP下载器直接下载程序。
在使用该API前,你需要调用相应的头文件wdt.h:
#include <avr/wdt.h>
在wdt.h中,提供了3个看门狗API:
wdt_enable(timeout) //看门狗使能 并设置超时时间 wdt_disable() //看门狗禁止 wdt_reset() //看门狗复位
wdt_enable(timeout) 中timeout可使用如下常量:
序号 | 常量 | 定义 |
1 | WDTO_15MS | 看门狗定时器15ms超时 |
2 | WDTO_30MS | 看门狗定时器30ms超时 |
3 | WDTO_60MS | 看门狗定时器60ms超时 |
4 | WDTO_120MS | 看门狗定时器120ms超时 |
5 | WDTO_250MS | 看门狗定时器250ms超时 |
6 | WDTO_500MS | 看门狗定时器500ms超时 |
7 | WDTO_1S | 看门狗定时器1S超时 |
8 | WDTO_2S | 看门狗定时器2S超时 |
9 | WDTO_4S | 看门狗定时器4S超时 |
10 | WDTO_8S | 看门狗定时器8S超时 |
通常情况下,在arduino中使用该API,你需要在setup中使能看门狗定时器,并在loop中按实际需要进行喂狗操作。示例代码如下:
#include <avr/wdt.h> void setup() { pinMode(13,OUTPUT); wdt_enable(WDTO_2S); //开启看门狗,并设置溢出时间为两秒 } void loop() { digitalWrite(13,HIGH); delay(100); digitalWrite(13,LOW); delay(100); wdt_reset(); //喂狗操作,使看门狗定时器复位 }
标签: arduino编程level3watchdog看门狗
文章来源:
Arduino 实验室
版权声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除。
评论列表