物联网专题9:看门狗DOG 系统延时
看门狗DOG
以下是 API 参考中关于ESP8266看门狗的描述:
看门狗的代码在串口 URAT 的例程上进行修改;
增加了死循环(不进行喂狗),如下所示:
串口调试信息如下:
可以看到,程序不停的在复位。原因是我们执行了 while (1)死循环,占用了CPU而没有及时喂狗,导致8266复位。
执行喂狗操作如下,重新编译运行:
串口调试信息如下所示:
打印信息只出现一次,表示喂狗函数执行成功,8266没有复位。
系统延时
API 参考手册中,提供了微秒延时函数,如下所示:
在 os_api.h 头文件中,有关于os_api.h的定义:
接下来,我们尝试自己编写 毫秒 延时函数:
这里的这个宏定义,在SDK中有描述,主要是将函数定位绝对地址到 irm0 节区。可以看到,在user_main.c中的函数都用了这个宏,因此,我们与 SDK 保持一致:
SDK中的描述:
SDK中的调用:
这里,我们保持一致即可。
然后在user_main.c中调用bsp_delay_ms延时函数,并通过串口打印调试信息:
串口打印如下:
可以看到,串口循环打印调试信息,程序正确执行。