Arduino-AirMCU icon indicating copy to clipboard operation
Arduino-AirMCU copied to clipboard

实现arduino的软复位和硬件看门狗

Open ls701110 opened this issue 2 years ago • 4 comments

您的功能请求是否与解决某些问题有关?请描述一下。/ Is your feature request related to a problem? Please describe.

在硬件看门狗没有实现的情况下可以直接调用HAL实现看门狗吗?有没有HAL调用相关的示例,直接引用air001xx_hal_iwdg.h调用编译的时候提示找不到方法

描述您想要的解决方案 / Describe the solution you'd like

在硬件看门狗没有实现的情况下可以直接调用HAL实现看门狗吗?有没有HAL调用相关的示例,直接引用air001xx_hal_iwdg.h调用编译的时候提示找不到方法

描述您想要的详细使用步骤描述 / Describe the solution you'd like to use in what way

在硬件看门狗没有实现的情况下可以直接调用HAL实现看门狗吗?有没有HAL调用相关的示例,直接引用air001xx_hal_iwdg.h调用编译的时候提示找不到方法

其他备注信息或截图 / Add any other context or screenshots about the feature request here

No response

确认信息

  • [X] 检查过该需求,之前没有人提过 / Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
  • [X] 这个需求是真实存在的,并且对于本项目来说是必要的
  • [X] 我已经提供了该需求的清晰、详细、完整的方案,请按该方案进行实施
  • [X] 我认为我提供的信息已经足够,不需要其他人继续完善该需求的其他细节
  • [X] 我同意跟进该需求的实施进程,并在适时提供合理的解释与纠正

ls701110 avatar Oct 29 '23 08:10 ls701110

#include <air001xx_hal_iwdg.h>

int i = 0; IWDG_HandleTypeDef watchdog;

void setup() { // put your setup code here, to run once: HAL_StatusTypeDef ret;

watchdog.Init.Prescaler = IWDG_PRESCALER_64; watchdog.Init.Reload = 512; watchdog.Instance = IWDG;

Serial.begin(9600); Serial.print("Board Start!\r\n");

ret = HAL_IWDG_Init(&watchdog); Serial.println((int)ret); }

void loop() { // put your main code here, to run repeatedly: delay(1000); i++; Serial.println(i); }


ino文件的同目录建立build_opt.h写入一下内容 -DHAL_IWDG_MODULE_ENABLED

668477 avatar Nov 15 '23 12:11 668477

上面的代码 直接编译运行,一直不看门狗复位呢

xky183 avatar Jun 02 '24 00:06 xky183

用起来了,基于上面代码,再增加时钟

xky183 avatar Jun 12 '24 01:06 xky183

楼上大佬没讲清楚,这里补充一下,如果直接复制代码烧录是没有效果的,设置低速内部时钟LSI后(如下图)芯片会不断复位,因为此时没有喂狗,如果在loop中加入HAL_IWDG_Refresh(&watchdog);(喂狗),串口打印的值会每秒递增1,即程序正常运行,代码没看懂可以找HAL库相关教程 LSI

Vegetable-SYC avatar Nov 06 '24 02:11 Vegetable-SYC