600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Arduino ESP32 看门狗定时器

Arduino ESP32 看门狗定时器

时间:2021-10-21 10:41:21

相关推荐

Arduino ESP32 看门狗定时器

Arduino ESP32 看门狗定时器

相关篇《Arduino ESP32定时器功能使用》

当GPIO4引脚接按键。如果按下,拉低电平,系统判断,程序跑飞,强制重启。

实例代码

/*看门狗定时器:当GPIO 4当接地超过3s,系统判断程序跑飞,强制重启。接线说明: 按键接D4--GPIO4*/#include "esp_system.h"const int button = 4; //用于触发延迟的0接脚const int wdtTimeout = 1000; //触发看门狗的时间(以毫秒为单位)hw_timer_t *timer = NULL;void IRAM_ATTR resetModule() {ets_printf("reboot\n");esp_restart();}void setup() {Serial.begin(115200);Serial.println();Serial.println("running setup");pinMode(button, INPUT_PULLUP);//初始化控制引脚timer = timerBegin(0, 80, true); //初始化定时器 定时器编号0,分频数 80,是否是累加模式:truetimerAttachInterrupt(timer, &resetModule, true); //附加回调timerAlarmWrite(timer, wdtTimeout * 1000, false); //设置定时器timerAlarmEnable(timer);//开启中断}void loop() {Serial.println("running main loop");timerWrite(timer, 0); //重置定时器(饲料看门狗)long loopTime = millis();//按下按钮时,最多延迟 3 秒触发定时器while (!digitalRead(button)) {Serial.println("button pressed");delay(500);}delay(1000); //模拟工作loopTime = millis() - loopTime;Serial.print("loop time is = ");Serial.println(loopTime); //应该在 3000 以下}

测试时,串口打印信息

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。