历史上的今天
返回首页

历史上的今天

今天是:2025年03月31日(星期一)

正在发生

2020年03月31日 | MSP430使用指南8 -> WDT看门狗模块

2020-03-31 来源:eefocus

看门狗WDT电路在平时调试过程中使用并不多,但在真正产品应用上,可以说每一个系统都会使用看门狗,其主要功能和作用如下:


看门狗电路基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗计数器正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断。在定时器中断中执行一些复位操作。


使系统恢复正常的工作状态,即在程序没有正常运行期间,如期复位看门狗以保证所选择的定时溢出归零,使处理器重新启动。看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长即可。


MSP430  MCU内部直接集成了看门狗模块,可以通过用户的设置进行对程序是否跑死进行监控,同时可以通过寄存器配置成两种模式,使得客户使用起来更加方便,看门狗电路内部结构图如下图所示:

由上图结构图中可以看出,MSP430   MCU内部会提供一个PUC信号,用于清除看门狗计数器,这也就是外部看门狗所描述的喂狗操作,当程序跑死后,这个信号没有产生,因此当看门狗定时器定时时间到时,则会产生一个复位信号,使得系统重新启动。同时看门狗计数器的时钟源可以由用户进行选择。


MSP430看门狗比较简单,可以配置成两种模式:看门狗模式和间隔时间模式。这两种模式的描述及区别如下:


看门狗模式:和硬件看门狗功能一致,在设置好看门狗计数时间后,如果程序跑死情况出现,在设定的时间过后就会触发看门狗中断,同时软件复位,程序指针PC会指向复位向量,程序实现软件复位。注意:看门狗复位顺序是:程序跑死 -> 触发看门狗中断 -> 执行中断服务程序(保存数据等操作,这个由用户决定) -> 复位程序。


间隔时间模式:这个和定时器类似,不过时间不是很精确,在看门狗计数器达到设定时间后,会触发看门狗中断,但不会让软件重启,同时间隔时间模式是不存在喂狗操作的,类似于定时器,每隔设定的时间周期,都会触发看门狗中断,因此可以当作定时器使用。


下面讲解一下看门狗的寄存器,这个比较简单,看门狗仅有一个寄存器,如下图所示:

WDTCLY寄存器:

WDTPW:首先看这个寄存器的高八位,是WDT的密码,在操作这个寄存器时,必须同时输入密码(5Ah),否则写任何数字都会导致看门狗复位程序。(注意,是同事写入不是先写密码,再操作寄存器) 同时这个高八位密码寄存器的读取结果一致都是69h。


WDTHOLD:看门狗定时器的使能,0停止此定时器,1使能此定时器。


WDTSSEL:看门狗定时器时钟源选择,默认是SMCLK,X_CLK时钟尽在部分MSP430 MCU中存在。


WDTTMSEL:模式选择,0选择看门狗模式,1选择间隔时间模式。


WDTCNTCL:看门狗定时器清除位,写1会清除看门狗定时器当前的值,在此定时器达到定时时间后会自动清除。


WDTIS:定时时间设置,在这里有八个定时时间可选,起始这个就是对定时器的设定值进行设定,看门狗计数器是个32位寄存器,最大数为232,但由于看门狗并不要求精确时间,因此设置成8段,提供八个时间足够了,如上图所示计算时间,这个跟时钟源有关系,如图如果时钟源频率是32768Hz,WDTIS = 100b,那么也就是设置的计数值是215=32768,因此定时时间为1秒。


同时,细心的话你会发现,如果正常使用看门狗功能的话,还缺少两个寄存器:中断使能寄存器和中断标志位寄存器。这两个参数WDTIE和WDEIFG分别在SFRIE1.0和SFRIFG1.0寄存器中,如下图所示:


WDTIE(仅有1bit)

WDTIE在SFRIE1寄存器的0bit上,默认是0,即失能看门狗中断,注意:就算失能看门狗终端,如果看门狗定时器设置在看门狗模式下,在程序跑飞后,依旧会复位程序,知识不产生中断了而已,因此如果不适用看门狗定时器,请失能定时器,用下面程序:


WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT


WDTIFG(仅有1bit)

WDTIFG在SFRIFG1寄存器的0bit上,默认是0,即没有中断产证,可以手动清除,当然,看门狗定时器在进入中断后会自动清除此标志位。


好啦,讲解完原理和寄存器之后,依旧给出看门狗的程序:


Code 1: 间隔时间模式,toggle LED:


//******************************************************************************

#include

 

int main(void)

{

    WDTCTL = WDT_MDLY_32;       // WDT 32ms, SMCLK, interval timer

    P1OUT &= ~BIT0;             // Clear P1.0 output latch for a defined power-on state

    P1DIR |= BIT0;              // Set P1.0 to output direction

 

    PM5CTL0 &= ~LOCKLPM5;       // Disable the GPIO power-on default high-impedance mode

                                // to activate previously configured port settings

    SFRIE1 |= WDTIE;            // Enable WDT interrupt

 

    __bis_SR_register(LPM0_bits | GIE);     // Enter LPM0, enable interrupts

    __no_operation();                       // For debug

 

}

 

// Watchdog Timer interrupt service routine

#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)

#pragma vector=WDT_VECTOR

__interrupt void WDT_ISR(void)

#elif defined(__GNUC__)

void __attribute__ ((interrupt(WDT_VECTOR))) WDT_ISR (void)

#else

#error Compiler not supported!

#endif

{

    P1OUT ^= BIT0;                          // Toggle P1.0 (LED)

}

Code 2: 看门狗模式,1秒(使用过程中,看门狗时间需要用户根据自身程序去设定):


//******************************************************************************

#include

 

int main(void)

{

    // Selects the ACLK source to REFO (internal 32kHz clock source) as default

    WDTCTL = WDT_ARST_1000;                 // Set Watchdog Timer timeout 1s

    P1DIR |= BIT0;                          // Set P1.0 to output direction

    // Disable the GPIO power-on default high-impedance mode

    // to activate previously configured port settings

    PM5CTL0 &= ~LOCKLPM5;

 

    P1OUT ^= BIT0;                          // Toggle P1.0

    __bis_SR_register(LPM3_bits | GIE);     // Enter LPM3

    return 0;

}

推荐阅读

史海拾趣

AAC [American Accurate Components]公司的发展小趣事

随着业务的不断发展和规模的持续扩大,AAC公司在2005年成功在香港交易所上市。这一里程碑式的事件为AAC带来了更多的资本支持和市场认可。此后,AAC加快了全球扩张的步伐,不仅在欧洲、北美等地设立了分支机构,还与众多国际知名品牌建立了长期稳定的合作关系。

Garmin_Canada_Inc.公司的发展小趣事
考虑到实际应用环境的复杂性,拨号电路应具有一定的环境适应性。例如,在电磁干扰较强的环境中,采取适当的屏蔽和滤波措施;在温度变化较大的环境中,采用温度补偿电路等。
Eby Electro Inc公司的发展小趣事

Eby Electro Inc公司的创始人李明,是一位对电子技术充满热情的工程师。在20世纪90年代初,他看到了电子行业的巨大潜力和未来发展趋势,于是决定创立自己的公司。起初,公司只有几名员工,主要业务是设计和制造电子零部件。李明凭借其过硬的技术能力和对市场的敏锐洞察,带领公司逐步打开了市场。他坚持质量第一的原则,赢得了客户的信任。随着业务的拓展,Eby Electro Inc逐渐在电子行业中崭露头角。

GeneSiC Semiconductor公司的发展小趣事

Eby Electro Inc在发展壮大的同时,始终关注社会责任的履行。公司积极参与环保和公益活动,推广绿色电子产品,减少生产过程中的环境污染。此外,公司还设立了奖学金和助学金,支持教育事业的发展。这些举措不仅提升了公司的社会形象,也为公司赢得了更多的社会支持和认可。

Arctic Silicon Devices公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。Arctic Silicon Devices深知这一点,因此非常重视品质管理。公司建立了严格的质量管理体系,从原材料采购到产品生产、测试、包装等各个环节都进行严格把控。同时,公司还加强了对供应商的管理和评估,确保原材料的质量稳定可靠。这些措施使得Arctic Silicon Devices的产品在市场上赢得了良好的口碑和信誉。

Desco Tools公司的发展小趣事

随着技术的不断进步,Desco Tools公司不断进行技术创新和产品升级。公司投入大量研发资源,开发出了更加高效、可靠的防静电工具,如新型防静电工作服、无尘室专用工具等。这些产品不仅满足了市场对防静电工具日益增长的需求,还进一步巩固了公司在该领域的领先地位。

问答坊 | AI 解惑

华为PCB规范

希望对你有用…

查看全部问答>

nios 2 开发

我将生成的elf 文件下载到板上的过程中出现如图的错误 我该如何去解决 谢谢…

查看全部问答>

ST7-DVP3多少钱?

                                 用rlink太痛苦了,好点的多少钱?…

查看全部问答>

用图片教你识别各种电子器件

用图片教你识别各种电子器件,很不错,从最简单的电阻 电容 到复杂的引脚众多的IC芯片,蛮实用的。允许我赚点小钱啊,多多包涵。。。      …

查看全部问答>

LM3S9B92板子少了个作键盘的程序和PC连接

连接之后PC机没有反映,驱动怎么装? 各位赐教!谢谢!…

查看全部问答>

杭州盈天科学仪器有限公司诚聘

诚聘电子设计师一名。 要求:①.大专以上学历,电子类相关专业; ②.三年以上电子电路设计经验; ③.熟悉单片机开发、汇编语言,熟练使用protel、cad等相关设计软件,精通模拟和数字电路,了解常用电子元器件的性能及特性; ④.能独立开发设计电路 ...…

查看全部问答>

CPLD执行一条语句需要多少时间

verilog中 比如always @(posedge clk)//CLK频率为125MHZ. 8ns周期 begin ...... end 实际begin end中的语句执行一次 要多少时间啊…

查看全部问答>

430循迹程序

#include #define TR_1_H        P1IN|=BIT1      //P1.1 #define TR_1_L        P1IN&=~BIT1     //P1.1 #define TR_2_H   & ...…

查看全部问答>

贡献launchpad 内部测温通过串口传输给PC

最近玩launchpad,写了个简单的小程序通过msp430g2553内部测量温度,然后通过串口通信上传给电脑,但是没有加上校正,只能简单的使用…

查看全部问答>

关于二期学生培训视频的放出(不断更新中)

大家好: 第二期学生的全免费培训已经正式开始,这一期的培训视频也是全部免费的除了周末外视频可能会不定时更新,敬请大家以后多关注。 以下是这一期的培训视频: 免费视频地址为: http://pan.baidu.com/share/link?shareid=484506&uk=1846172 ...…

查看全部问答>