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.

[参考译文] MSP432P401R:看门狗计时器

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/570739/msp432p401r-watchdog-timer

器件型号:MSP432P401R

你(们)好

我尝试将 wqtchdog 计时器溢出设置为软复位、因此我正在检查 RSTCTL_SOFTRESET_STAT_SRC1寄存器。如果位位置1中有1、则意味着复位源是看门狗软复位。

但是、即使在复位发生之前、我观察到的是 RSTCTL_SOFTRESET_STAT_SRC1中的值 也是1、表示 rsest.I 尝试通过语句 RSTCTL->SOFTRESET_CLR = 2将其清除;但不清除.How to clear the watchdog RSTCTL_SOFTRESET_SRC1 bit 1 STAT_1 register.

void main (void)

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
RST = RSTCTL_SOFTRESET_STAT_SRC1; //此处的值为2
RSTCTL->SOFTRESET_CLR = 2;
RST = RSTCTL_SOFTRESET_STAT_SRC1;//此处的值应为0,但显示为2,whcih 表示 SRC1未清除
  if (rst == 2)

{//if watchdog overflows 该标志被置位
 RSTCTL->SOFTRESET_CLR = 2;
 Watchdog_Reset_Indicator();

Watchdog_Init();

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您不会查询 SOFTRESET_STAT 寄存器的内容、RSTCTL_SOFTRESET_STAT_SRC1是一个宏(在 msp432p401r.h 中定义):
    #define RSTCTL_SOFTRESET_STAT_SRC1 ((uint32_t) 0x00000002) /*!<如果为1、则表示 SRC1是软复位的源*/
    这个宏用于检查源1的位是否被设定、例如:
    if (RSTCTL->SOFTRESET_STAT 和 RSTCTL_SOFTRESET_STAT_SRC1){//看门狗导致此处复位时的代码*/}
    因此、您应该能够通过将第2行更改为:
    RST = RSTCTL->SOFTRESET_STAT;
    此外、不要将每个位具有单独含义的寄存器直接与值进行比较。 因此,如果要检查位1是否已设置,请不要执行以下操作:如果(rst == 2)由于该比较将失败,如果位1和2已设置(则 rst 将为6!= 2)。 相反,如果(rst & 2),则使用,即使设置了其他位,也会起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Dan、

    我得到了解决方案。您的解决方案有效。

    Govind G.