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.

[参考译文] TMS320F28386S:是否可以将看门狗计时器配置为可以中断任何其他 ISR 的不可屏蔽中断、或者是否需要中断嵌套?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1519668/tms320f28386s-is-it-possible-to-configure-the-watchdog-timer-as-a-non-maskable-interrupt-that-can-interrupt-any-other-isrs-or-is-interrupt-nesting-required

部件号:TMS320F28386S

工具/软件:

大家好:

在我正在开发的应用中、我遇到了极少数情况、即 C28x CPU1处理器似乎挂起、我怀疑其在 ISR 中被捕获。

看门狗计时器配置如下:

void InitWatchdog (void)

  //--配置看门狗
  SysCtl_setWatchdogPredivider (SYSCTL_WD_PREDIV_512);     // WDPRECLKDIV = INTOSC1/512
  SysCtl_setWatchdogPrescaler (SysCtl_WD_PRESCALE_2);      // WDCLK=OSCCLK/512/2
  SysCtl_setWatchdogWindowValue (0);                   //最小窗口阈值(禁用)

  //--设置看门狗模式(复位/中断)
  SysCtl_setWatchdogMode (SYSCTL_WD_MODE_INTERRUPT);      //看门狗生成中断

  //--启用/禁用看门狗
  SysCtl_enableWatchdog ();                               //启用 watchdog
  SysCtl_serviceWatchdog();

  //--启用看门狗中断
  INTERRUPT_REGISTER (INT_WAKE、&wakeISR);    // Re ISR 函数的 ISR 映射看门狗唤醒中断信号
  INTERRUPT_ENABLE (INT_WAKE);                //在 PIE 组1中启用 WAKEINT 并在 IER 中启用 INT1以启用 PIE 组1
}  // InitWatchdog()结束

理想情况下,我希望 wakeISR ()触发并重新启动模块,因为我已经配置了它,但它没有发生,大概是因为 PIE 中断无法在另一个正在运行时执行。 相反、它们会根据优先级排队。

是否有办法将看门狗计时器配置为在其到期时触发不可屏蔽中断、以便使其能够中断任何其他 ISR、或者我是否必须启用嵌套并将 wakeISR 嵌套在所有其他中断内?

此致、

- Jakub

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

    您好、

    对于看门狗、只能使用两个选项:触发中断或触发器件复位 XRSn。

    此器件无法从看门狗触发 NMI

    谢谢