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.

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

Guru**** 2589265 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1083442/tms320f28379d-watchdog-timer

部件号:TMS320F28379D

您好,

大约一个月前,我提出了一个关于看门狗计时器的问题,但没有得到明确的答案。

我有以下设置的寄存器。 我先禁用看门狗计时器,然后在 SCSR 中,WDOVERRIDE 设置为0,看门狗中断启用。 在这种情况下,看门狗计时器是禁用还是启用的?

无效 InitWatchd(无效)

   ASM(" EALLOW ");                       //启用 EALLOW 保护寄存器访问

//--禁用监视程序计时器
   WdRegs.WDCR.ALL = 0x0068;
//第15-70位     :   保留
//位6        1:     WDDIS,1=禁用 WD
//位5-3      101:   WDCHK,WD 校验位,始终写入101b
//位2-0 000      :   WDPS,WD 预页位,000:WDCLK=OSCCLK/512/1

//--系统和控制寄存器
   WdRegs.scSR.all = 0x0000;
//第15-3位     :   保留
//位2        0:     WDINTS,WD 中断状态位(只读)
//位1        0:     WDENINT,0= WD 导致重置,1= WD 导致 WDINT
//位0        :     WDOVERRIDE,写入1以禁用 WD (只清除)

   WdRegs.WDWCR.All = 0x0000;
//第15-9位     :   保留
//位8        0:     FIRSTKEY (只读)
//位7-0      0x00:  最小,最小保养间隔- 0x00不最小

   ASM(" EDIS");                       //禁用 EALLOW 保护寄存器访问

//--启用监视程序中断
   PieCtrlRegs.PIEIER1.Bit.INTx8 =1;   //在 PIE 组#1中启用 WAKEINT (LPM/WD)
   IER |= 0x0001;                       //在 IER 中启用 INT1以启用 PIE 组1

}// InitWatchd()结束

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

    按照您编写代码的方式,WD 仍处于禁用状态。

    WDRegs.WDCR.all = 0x0068;     //禁用 WD

    WdRegs.scSR.all = 0x0000;        // WD 仍处于禁用状态

    WdRegs.WDWCR.all = 0x0000;   // WD 仍处于禁用状态  

    将0写入 WDOVERRIDE 位不起作用。 请参阅 TRM 中的位说明:如果此位设置为1,则允许用户更改看门狗控制(WWCR)寄存器中看门狗禁用(WDDIS)位的状态。 如果清除 WDOVERRIDE 位,则写入1将无法修改 WDDIS 位。 写入0将不起作用。 如果清除此位,则它将保持此状态,直到重置。 用户可以读取此位的当前状态。

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

    非常感谢先生。 这就是我需要知道的。