This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF:看门狗有时会发生故障

Guru**** 2589280 points
Other Parts Discussed in Thread: CC3220SF

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/801810/cc3220sf-watchdog-is-failing-sometimes

器件型号:CC3220SF

大家好、我的看门狗遇到了一些问题。

我将按如下方式初始化看门狗:

void _wL_watchdog_timer_init (void)

//首先初始化 WDT 接口
Watchdog_init();

memset (&WDT_Enable_Flag、false、sizeof (WDT_Enable_Flag));

Watchdog_Params WDT_params;
Watchdog_handle;
uint32_t 节拍= 0;
INT 状态= 0;

//初始化看门狗计时器参数初始化
Watchdog_Params_init (&WDT_params);
WDT_params.resetMode = Watchdog_reset_on;
wdt_params.callbackFxn =(Watchdog_Callback)_WL_WDT_ISR_Handler;
wdt_params.debugStallMode = Watchdog_debug_star_on;

WatchdogHandle = Watchdog_open (Board_WATCHDOG0、&WDT_params);
if (watchdogHandle == NULL){
log_out ("无法打开看门狗手柄\n\r\n);
InfinateLoop (__file__、__func__、__line__);
while (1);

//将毫秒转换为刻度
ticks = Watchdog_convertMsToTicks (watchdogHandle、millisecs_period);
STATUS = Watchdog_setReload (看门狗手柄、节拍数);
if (Status ==Watchdog_STATUS_UNSUPPORTED)

Log_out ("\n 无法设置重新加载值\n");

WDT 中断处理程序:

void _WL_WDT_ISR_Handler (Watchdog_Handle WDT_Handle)

if (WDT_Enable_FLAG。WDT_Network_Thread ||(Network_Disconnect >= 1)||
WDT_Enable_FLAG。WDT_Factory_Reset_Thread || WDT_Enable_FLAG。WDT_ADC_Thread ||
WDT_Enable_FLAG。WDT_MQTT_Thread || WDT_Enable_FLAG。WDT_RTC_Thread
|| WDT_Enable_FLAG。WDT_Temperature_Thread)

//log_out ("\n 在 WDT ISR 处理程序内\n");
LED_ON_OFF (LED_NUMBER_6、LED_STATUS_OFF);
LED_ON_OFF (LED_NUMBER_7、LED_STATUS_OFF);

//log_out ("WDT_Enable_FLAG。WDT_Network_Thread =%d\r\n"、WDT_Enable_FLAG。WDT_Network_Thread);
//log_out ("WDT_Enable_FLAG。WDT_Factory_Reset_Thread =%d\r\n"、WDT_Enable_Flag.WDT_Factory_Reset_Thread);
//log_out ("WDT_Enable_FLAG。WDT_ADC_Thread =%d\r\n"、WDT_Enable_FLAG。WDT_ADC_Thread);
//log_out ("WDT_Enable_FLAG。WDT_MQTT_Thread =%d\r\n"、WDT_Enable_FLAG。WDT_MQTT_Thread);
//log_out ("WDT_Enable_FLAG。WDT_RTC_Thread =%d\r\n"、WDT_Enable_FLAG。WDT_RTC_Thread);
//log_out ("WDT_Enable_FLAG。WDT_MODBUS_Thread =%d\r\n"、WDT_Enable_FLAG。WDT_MODBUS_Thread);
//log_out ("WDT_Enable_FLAG。WDT_Temperature_Thread =%d\r\n"、WDT_Enable_FLAG。WDT_Temperature_Thread);

Network_Disconnect 计数= 0;
返回;

Watchdog_clear (WDT_Handle);
WDT_Enable_FLAG。WDT_Network_Thread = true;
//WDT_Enable_FLAG。WDT_Factory_Reset_Thread = true;
WDT_Enable_FLAG。WDT_ADC_Thread = true;
WDT_Enable_FLAG。WDT_MQTT_Thread = true;
WDT_Enable_FLAG。WDT_RTC_Thread = true;
WDT_Enable_FLAG。WDT_MODBUS_Thread = true;
WDT_Enable_FLAG。WDT_Temperature_Thread = true;

我正在运行5-6个线程、如果其中一个线程无法执行并进入无限循环、我设置了30秒的 WDT 超时、它执行正常、 有时 、在中断处理程序复位中输入 IF 条件后不会触发、并且我也无法在其他线程中获取任何日志。

1.如果 WDT 未被清零、它应该复位、但没有发生这种情况、有人知道原因吗?

2.在 没有 WDT 复位的情况下返回的情况下,我是否需要处理这里的任何其他情况?

此致、

Chiranth H D.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Chiranth、

    您是否正在使用 RTOS? 您是否使用 SDK 中的一个示例构建了此示例?

    BR、
    Vince
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Vincent:
    我使用的是 TI-RTOS、是的、我使用 SDK 进行构建
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Chiranth、

    您是否使用过我们的看门狗示例、该示例中是否仍然出现此错误? 该示例位于 SDK 中的以下目录中:
    simplelink_cc32xx_sdk_3_10_00_04\examples\rtos\cC3220SF_LAUNCHXL_drivers\watchdog


    BR、
    Vince
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我假设您已经解决了您的问题、因为我没有听到您的反馈。 如果没有、请随时发布对此主题的响应、或打开有关此问题的新主题。