TI M4看门狗watchdog使用

2 篇文章 0 订阅

使用的M4是TI的TM4C123型芯片

根据datasheet,该芯片的watchdog有两个watchdog Timer,WDT0与WDT1,WDT0使用的系统时钟,WDT1使用的是固定的比较精确的内部时钟,时钟频率固定为16MHz。另外,这两个watchdog Timer还有另外一个区别:访问或设置WDT0模块相关寄存器对时序无特殊要求(因其使用的是系统时钟),而访问或设置WDT1模块相关寄存器时对时序有要求(其使用的是内部其他时钟16MHz)。对WDT1访问的时序可通过查询WDTCTL寄存器中的WRC位来实现,当WRC=1时,WDT1可访问或设置,当WRC=0时,WDT1仍在设置且未完成。

TI M4的WDT是二次超时机制,第一次超时,产生中断,第二次超时,则产生复位信号(WDTCTL的RESEN=1)。

关于WDT的中断问题,对WDT的中断清除操作实际上即是喂狗操作。而是否需为WDT设定中断处理函数,则是看具体情况而定,即可设定中断处理函数也可不设定(不设定时芯片依然按照上述机制产生复位信号)。当设定了中断处理函数时,中断处理函数可为空函数(不做任何处理),或者是直接在函数内清除中断标志或重新载入超时值到计数器或直接喂狗。还是那一句话,具体怎么处理看情况,反正都可以。

WDT的初始化及配置参考datasheet:
1、载入超时值到WDTLOAD寄存器中;
2、如果是WDT1,等待WDTCTL的WRC=1;
3、如果WDT是配置成触发系统复位的目的,将WDTCTL的RESEN=1;
4、如果是WDT1,等待WDTCTL的WRC=1;
5、设置WDTCTL的INTEN=1使能WDT,使能中断及锁定WDTCTL寄存器;
6、为防止中途WDT的某些寄存器被不经意的更改,可将WDTLOCK寄存器设定为某个值锁定整个WDT模块寄存器,WDTICR(喂狗)寄存器除外。

以下为代码,使用的TI的库:

bool waitWRC()
{
    return HWREG(WATCHDOG1_BASE + WDT_0_CTL) & WDT_CTL_WRC;
}


SysCtlPeripheralEnable(SYSCTL_PERIPH_WDOG1);
SysCtlDelay(SysCtlClockGet()/1000);

while(waitWRC()==0)
{}

if(WatchdogLockState(WATCHDOG1_BASE)==true)
{
    while(waitWRC()==0)
    {}
    WatchdogUnlock(WATCHDOG1_BASE);
}

while(waitWRC()==0)
{}
//超时时间为 SysCtlClockGet()/16000000
WatchdogReloadSet(WATCHDOG1_BASE,SysCtlClockGet());

while(waitWRC()==0)
{}
WatchdogResetEnable(WATCHDOG1_BASE);

while(waitWRC()==0)
{}
WatchdogStallEnable(WATCHDOG1_BASE);

while(waitWRC()==0)
{}
WatchdogEnable(WATCHDOG1_BASE);

while(waitWRC()==0)
{}
WatchdogLock(WATCHDOG1_BASE);

上述是对WDT1的设置过程,对WDT0的设置只需将上面代码中的WATCHDOG1_BASE改写成WATCHDOG0_BASE,且把所有的while(waitWRC()==0){}代码去掉即可,而其超时时间则为1S。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: s32k的Watchdog看门狗)是一种硬件功能,旨在提高系统的可靠性和稳定性。它是一种定时器,用于监视系统的运行状态,并在系统停止响应时自动重启系统或采取其他措施。 Watchdog的工作原理是在系统启动时启动一个计时器,定时器周期性地向操作系统发送信号,作为系统正常工作的标志。如果系统正常运行,操作系统会在每个周期内重置或刷新Watchdog计时器。如果系统出现故障或停止响应,操作系统将无法刷新Watchdog计时器,计时器则会超时。 一旦Watchdog计时器超时,它将触发一个复位信号,导致系统重启。这样,Watchdog起到了保护系统免受死锁(系统停止响应)和其他故障的作用。此外,Watchdog还可以设置为在系统停止响应时触发其他操作,例如发送警报信号或进行日志记录。 通过使用Watchdog,系统可以在遇到严重故障时及时进行自动重启,从而避免人为干预或系统长时间停机。这对于要求高可靠性和稳定性的系统,如自动控制系统、仪表仪器、工业控制等领域非常重要。 综上所述,s32k的Watchdog是一项重要的功能,它有效地监控系统的运行状态并在必要时采取措施以保护系统的可靠性。 ### 回答2: S32K的看门狗Watchdog)是一种用于监视系统运行状态的重要功能。它类似于现实生活中的看门狗,当系统出现异常或崩溃时,看门狗能够自动重启系统,确保系统持续可靠运行。 看门狗主要由看门狗定时器(WDT)和看门狗控制寄存器(WCR)两部分组成。看门狗定时器是一个独立的硬件计数器,它在系统启动时启动计数,并按照预设时间间隔进行递减。当计数器值归零时,看门狗控制寄存器会触发一个复位信号,使系统重启。这样就能避免系统长时间停滞或假死,提高系统的稳定性和可靠性。 在S32K中,我们可以通过设置寄存器来配置看门狗的工作模式和计数器时间。可以根据系统的需求,设置适当的计数器时间,以及是否启用看门狗复位功能。同时,看门狗还可以配合其他系统监控功能一起工作,例如外部中断或系统时钟监控器。 需要注意的是,看门狗并不是万能的解决方案。在设计中还需慎重考虑计数器时间的设置,以免触发误复位。另外,应及时处理系统异常问题,以避免看门狗频繁触发重启。 总之,S32K的看门狗是一项非常重要的系统保护功能,它能够监控系统运行状态并自动重启系统,确保系统的可靠性和稳定性。合理配置和使用看门狗可以大大提高系统的工作效率和可用性。 ### 回答3: S32K是一款由恩智浦公司开发的32位微控制器,其内置了一种看门狗定时器(Watchdog Timer)。Watchdog Timer是一种硬件设备,在嵌入式系统中用于检测和处理系统可能出现的故障或错误情况。 看门狗的主要工作原理是通过定时器来监视系统的运行状态。它需要被定期重置,否则将会触发一个系统复位信号。这样,如果系统在正常运行时出现问题,导致无法及时重置看门狗,系统将会被强制复位,以防止系统崩溃或陷入无限循环。 S32K微控制器上的看门狗具有以下特点: 1. 看门狗定时器的计数器可以由软件程序进行配置,并且可以在系统的各个阶段进行启用、禁用或重置。 2. 看门狗定时器可以设置一个预置值,定时器计数器必须在该值之前被重置,否则将会触发看门狗复位。 3. 看门狗复位信号可以用来重新启动整个系统,以确保系统从错误状态中恢复。 通过使用S32K的看门狗功能,我们可以增强系统的稳定性和可靠性。当系统出现异常时,看门狗能够及时检测问题,并采取相应措施,例如强制系统重启,确保系统能够正常工作。这种硬件级别的保护机制能够提高系统的可靠性和抗干扰能力,使S32K微控制器在各种应用场景下都能够保持正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值