S32K146 MCU基于FreeRTOS的看门狗喂狗失败问题求助
S32K146 FreeRTOS环境下看门狗喂狗失败导致持续复位问题
使用S32K146 MCU与DS for ARM v2.2开发环境,在基于FreeRTOS的应用中,看门狗(WDOG)初始化后可正常触发系统复位,但所有喂狗操作均无效,系统持续复位。
WDOG配置代码
#include "watchdog1.h" /*! watchdog1 configuration structure */ const wdog_user_config_t watchdog1_Config0 = { .clkSource = WDOG_LPO_CLOCK, /* WDOG clock source */ .opMode = { false, /* Wait Mode */ false, /* Stop Mode */ false /* Debug Mode */ }, .updateEnable = true, /* Enable/Disable further updates of the WDOG configuration */ .intEnable = true, /* Timeout interrupt disabled */ .winEnable = false, /* Enable/Disable Window mode */ .windowValue = 0U, /* Window value */ .timeoutValue = 9000U, /* Timeout value */ .prescalerEnable = true /* WDOG prescaler */ };
初始化与喂狗封装函数
void init_watchdog(void) { /* Initialize the WDOG driver */ WDOG_DRV_Init(INST_WATCHDOG1, &watchdog1_Config0); } void refresh_watchdog(void) { WDOG_DRV_Trigger(INST_WATCHDOG1); }
看门狗初始化调用放在main函数的初始化流程中,通过UART打印可确认系统复位状态。目前已尝试多种喂狗方式均无效:
- 在RTOS任务的while(1)循环内或任务末尾调用
refresh_watchdog() - 在ISR函数中执行喂狗操作(虽不规范但已尝试)
- 创建独立RTOS任务,通过信号量触发喂狗
- 启用FreeRTOS的
configUSE_IDLE_HOOK,在空闲任务钩子函数中调用喂狗
现寻求解决该喂狗失败问题的方案。
内容的提问来源于stack exchange,提问作者ferrrnum
相关产品推荐
相关产品推荐

