WDT看门狗程序讲义.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WDT看门狗程序讲义

WDT of MSP430 看门狗 目录 看门狗定时器的原理 MSP430X1/4XX系列单片机的看门狗定时器 WDT 的相关寄存器 看门狗的三种工作模式 相关C程序 看门狗定时器的原理(1/2) 所谓程序跑飞就是PC指针没有按照预定的程序变更,可能PC指针指向一个不确定的或者根本就没有存放用户代码的程序存贮空间,造成PC指针根本无法恢复到用户代码空间之内,程序跑飞,当发生中断时,中断服务程序代码仍然可以被执行。 在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰信号噪声。这些干扰信号作用于数字器件,极易引发错误动作,引起“程序跑飞”事故! 看门狗的目的在于阻止程序跑飞。在正常操作期间,一次WDT定时时间到,将产生一次器件复位。 看门狗定时器的原理(2/2) 如杲通过编制程序使WDT定时时间略微大于程序执行一次的时间,并且程序执行过程中有对看门狗定时器清零的指令,使计数器重新计数,则程序正常运行时,就会在WDT定时时间到之前对WDT清零(定时喂狗),不会产生WDT溢出。 如果由于干扰使程序跑飞,则不会在WDT定时时间到之前执行WDT清零指令,则WDT就会产生溢出,从而自动产生系统复位,CPU需要重新运行用户程序,这样程序就可以重新回到正常运行状态! MSP430X1/4XX系列单片机的看门狗定时器 看门狗定时器材的结构如下图: WDT 的相关寄存器(1/5) 一、WDT寄存器包括WDTCNT和WDTCTL,两个寄存器在上电和系统复位内容全部清零 ,就是说MSP430的看门狗在此时处于默认开启的状态。 1. 记数单元WDTCNT: WDTCNT是16位增记数器,由MSP430选定的时钟电路产生的固定周期脉冲信号对记数器进行加法记数。WDTCNT不能直接软件存取,必须通过看门狗定时器的控制寄存器WDTCTL来控制。 2. 控制寄存器WDTCTL: WDTCTL由两部分组成,高8位用作口令,即5AH(头 文件中定义为WDTPW),低8位是对WDT操作 的控制命令。写入WDT控制命令时先写入口令WDTPW,口令写错将导致系统复位。读WDTCTL时不需口令,低字节WDTCTL的 值,高字节读出始终为69H。 WDT 的相关寄存器(2/5) WDT 的相关寄存器(3/5) WDT 的相关寄存器(4/5) WDT 的相关寄存器(5/5) 看门狗的三种工作模式(1/4) 以MSP430F2274为例。其中汇编实现采用的是IAR汇编。 1.?看门狗有 三种工作模式:停止模式,计时器模式,看门狗模式。 2.?其中后两种模式可以选择的时钟源有: SMCLK 和 ACLK 3.?在使用后两种模式时候要注意单片机所处的状态下看门狗能否工作,如单片机处在LPM3时候只有ACLK时钟,处在LPM4下,没有时钟可以使用。 看门狗的三种工作模式(2/4) 4.?????? 看门狗模式的使用方法:当看门狗计数溢出时,程序复位。 在程序中开启看门狗,在计数溢出前清空看门狗,或重置看门狗,以使其重新计数。若程序跑飞,看门狗可能没有被清空或重置,就会溢,使程序复位。 5.?????? 在MSP430F2274中,看门狗模式下可以计时最长为1s,若需要以更长的时间复位,可采取的方法,使用其他计数器,计数满后执行((void(*)())RESET_VECTOR)() ; 或计数满后往看门狗控制寄存器写个错误值或执行一条无效命令:如((void (*)())0x170)();0x170是外围模块的一个地址,不可能是一个函数地址,所以执行此句将使程序复位。? 看门狗的三种工作模式(3/4) 看门狗的三种工作模式(4/4) 看门狗模式:计数溢出时,执行复位中断函数。 C语言实现: 清看门狗: WDTCTL = WDTPW+WDTCNCTL; 设置看门狗: WDTCTL = WDT_MRST_0_5; /* TSMCLK*2POWER9=0.512ms?*/ 或 WDTCTL = WDT_ARST_1000; /* TACLK*2POWER15=1000ms?*/ 相关C程序(1.用看门狗定时器产生一方波) 相关C程序(2.用看门狗定时器产生一方波) #include msp430x14x.h void main(void) { WDTCTL = WDT_ADLY_250; // WDT 250ms, ACLK, interval timer IE1 |= WDTIE; // Enable WDT interrupt P1DIR |= 0x01;

文档评论(0)

2299972 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档