方法一

Arduino nano bootloader(老版)不支持看门狗,如果你直接使用看门狗定时器,会卡死在bootloader中。如果要使用看门狗可以使用ISP下载器直接下载程序。这里采用的方法是用一个arduino uno用作ISP编译器的方式来进行给arduino nano下载程序。

1、将arduino uno制作成编程器

把官方代码传到uno板

arduino esp32 关闭看门狗_重置

 

2、引脚连接

UNO

NANO

D13

D13

D12

D12

D11

D11

D10

RST

5V

5V

GND

GND

注:按照上述连接方式只需给uno供电即可,nano是通过uno供电。

3、软件设置

arduino esp32 关闭看门狗_经验分享_02

处理器、端口选项根据自己板子情况自行选择。

arduino esp32 关闭看门狗_arduino esp32 关闭看门狗_03

 上传程序时不要点软件自带的上传,需要用上图中的上传。

4、示例看门狗程序
#include <avr/wdt.h>

void setup() {
  // 启用看门狗计时器,设置超时时间为8秒
  wdt_enable(WDTO_8S);
}

void loop() {
  // 在主循环中执行你的任务

  // 喂狗,重置看门狗计时器
  wdt_reset();
}

在 Arduino 的看门狗库(avr/wdt.h)中,提供了以下几个主要的

  1. wdt_enable(time):启用看门狗计时器,并设置超时时间。其中,time 参数可以是以下预定义常量之一,表示不同的超时时间:
  • WDTO_15MS:15 毫秒
  • WDTO_30MS:30 毫秒
  • WDTO_60MS:60 毫秒
  • WDTO_120MS:120 毫秒
  • WDTO_250MS:250 毫秒
  • WDTO_500MS:500 毫秒
  • WDTO_1S:1 秒
  • WDTO_2S:2 秒
  • WDTO_4S:4 秒
  • WDTO_8S:8 秒
  1. wdt_disable():禁用看门狗计时器,防止其触发复位。一旦禁用,看门狗计时器将不会在超时时触发。
  2. wdt_reset():重置(喂狗)看门狗计时器。在程序的主循环中,定期调用这个函数可以防止看门狗计时器超时触发复位。重置计时器会重新开始计时,避免超时发生。

这些函数用于配置和控制看门狗计时器,以确保程序在正常运行时不会触发复位,同时在程序出现故障或死锁时触发复位,从而保持系统的稳定性。根据个人需求进行测试。