历史上的今天
返回首页

历史上的今天

今天是:2025年04月18日(星期五)

正在发生

2018年04月18日 | MSP430学习小结1-看门狗的使用总结

2018-04-18 来源:eefocus

看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。在很多单片机中都内置了看门狗,看门狗本身是一个定时器,当定时器溢出时即进行系统复位,因此需要在程序中对看门狗定时器进行清零,即常说的喂狗。
由于我用过AVR的单片机,和AVR的相比,MSP430的看门狗要灵活的多,首先默认看门狗是开着的,因此如果不使用看门狗的话要关闭,指令如下:
WDTCTL = WDTPW + WDTHOLD
如果打开看门狗则需要在程序中清零,指令如下:
WDTCTL=WDTPW+WDTCNTCL

这只是基本的应用,430的看门狗要稍微复杂一些,首先从IAR的头文件中看看定义了几种工作状态:

  1. /* WDT-interval times [1ms] coded with Bits 0-2 */  

  2. /* WDT is clocked by fSMCLK (assumed 1MHz) */  

  3. #define WDT_MDLY_32         (WDTPW+WDTTMSEL+WDTCNTCL)                         /* 32ms interval (default) */  

  4. #define WDT_MDLY_8          (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0)                  /* 8ms     " */  

  5. #define WDT_MDLY_0_5        (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1)                  /* 0.5ms   " */  

  6. #define WDT_MDLY_0_064      (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0)           /* 0.064ms " */  

  7. /* WDT is clocked by fACLK (assumed 32KHz) */  

  8. #define WDT_ADLY_1000       (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL)                 /* 1000ms  " */  

  9. #define WDT_ADLY_250        (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0)          /* 250ms   " */  

  10. #define WDT_ADLY_16         (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1)          /* 16ms    " */  

  11. #define WDT_ADLY_1_9        (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0)   /* 1.9ms   " */  

  12. /* Watchdog mode -> reset after expired time */  

  13. /* WDT is clocked by fSMCLK (assumed 1MHz) */  

  14. #define WDT_MRST_32         (WDTPW+WDTCNTCL)                                  /* 32ms interval (default) */  

  15. #define WDT_MRST_8          (WDTPW+WDTCNTCL+WDTIS0)                           /* 8ms     " */  

  16. #define WDT_MRST_0_5        (WDTPW+WDTCNTCL+WDTIS1)                           /* 0.5ms   " */  

  17. #define WDT_MRST_0_064      (WDTPW+WDTCNTCL+WDTIS1+WDTIS0)                    /* 0.064ms " */  

  18. /* WDT is clocked by fACLK (assumed 32KHz) */  

  19. #define WDT_ARST_1000       (WDTPW+WDTCNTCL+WDTSSEL)                          /* 1000ms  " */  

  20. #define WDT_ARST_250        (WDTPW+WDTCNTCL+WDTSSEL+WDTIS0)                   /* 250ms   " */  

  21. #define WDT_ARST_16         (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1)                   /* 16ms    " */  

  22. #define WDT_ARST_1_9        (WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0)            /* 1.9ms   " */   


     从头文件的定义中可以看出主要有两种方式,一种就是当做普通的定时器使用,一种才是作为看门狗,另外就是时钟源可选,选择8M或者32K的晶振来获得不同的延时,通过上面可以看出看门狗定时器最大的时间可以到1S,在程序中可以灵活的利用看门狗定时器实现想要的功能。

下面介绍两个典型应用:
1、在动态数码管显示中的应用,具体代码可以参考我之前的笔记,部分代码如下:
 WDTCTL = WDT_ADLY_1_9;        //   设置内部看门狗工作在定时器模式,1.9ms中断一次   
    //可以去看头文件中具体的配置,这里使用的手表晶振64分频计算可得是1.9ms   
    IE1 |= WDTIE;                 // 使能看门狗中断

__interrupt void watchdog_timer(void)   

}
这个程序主要是将看门狗定时器当做普通定时器使用,1.9ms刚好适合动态扫描间隔,在看门狗中断中对数码管进行动态扫描,这样使用相对于开一个定时器来说要有所方便。因此在需要的定时与看门狗定时器的几个时间相同时可以考虑使用看门狗。
2、普通延时
WDTCTL = WDT_ADLY_1000;               //间隔定时器,定时1000ms
 //延时2s
    for(i = 0; i < 3; i++)
    {

        IFG1 &= ~WDTIFG;
        while(!(IFG1 & WDTIFG));
        IFG1 &= ~WDTIFG; 
    }
这个程序同样是将看门狗当普通定时器使用,在主程序中读取中断标志位,实现延时效果,上面的程序为什么是延时2S自己分析。

这里面举了两个例子,是最近学习的一点小体会,当然还是不能忘了看门狗的本能工作,在程序较为简单时可以考虑使用看门狗定时器简化设计。另外还有一点觉得比较重要的是虽然头文件中对寄存器都有了很好的定义,但是还是很有必要对着头文件和寄存器把主要的寄存器看一面,弄清每一种工作模式的使用方式和注意点。


推荐阅读

史海拾趣

博林(BL)公司的发展小趣事

为了降低生产成本、提高生产效率,博林公司开始实施产业链整合战略。公司通过收购、兼并等方式,逐步掌握了从原材料供应到终端产品销售的完整产业链。同时,博林公司还积极向垂直化方向发展,涉足与电子产品相关的多个领域,如芯片设计、软件开发等。这种垂直化的发展模式使得博林公司在行业中更具竞争力,能够更好地应对市场变化和客户需求。

CIRCUITCO公司的发展小趣事

CIRCUITCO公司自创立之初,就致力于电子电路技术的研发。在某一时期,公司投入大量资源研发新型高性能电路板。经过数年的努力,团队终于成功开发出一款具有更高集成度、更低能耗的电路板。这一突破不仅提升了公司的技术实力,也使其在市场上获得了显著的竞争优势。随着这款新产品的推出,CIRCUITCO公司的业绩迅速攀升,成为行业内的佼佼者。

Comchip Technology公司的发展小趣事

为了进一步扩大市场份额,Comchip Technology积极开拓国内外市场,与多家知名企业建立了长期稳定的合作关系。同时,公司还加强了与国际同行的交流与合作,引进了先进的技术和管理经验,不断提升自身的竞争力。

Helium公司的发展小趣事

2017年,随着区块链技术的兴起,Helium团队看到了新的机遇。他们意识到区块链的透明性和自确认性可以为物联网网络的建设带来革命性变化。于是,Helium决定将网络建设“去中心化”,并借助区块链技术重新定义激励机制。这一决策标志着Helium从单纯的物联网项目转变为融合区块链技术的创新企业。通过去中心化的方式,Helium降低了网络建设和维护的成本,加速了网络覆盖的速度,为物联网设备提供了更加便捷和经济的连接方案。

Barry Industries Inc公司的发展小趣事

随着电子行业的快速发展,Barry Industries Inc意识到只有不断创新才能在市场中立足。公司加大了对研发的投入,引进了一批高素质的研发人才,并建立了完善的研发体系。经过多年的努力,Barry成功突破了微波半导体封装技术的多项关键技术,推出了多款性能卓越、具有创新性的产品。这些产品不仅广泛应用于军事、航天、通信等领域,还为公司赢得了市场的广泛认可。

HellermannTyton公司的发展小趣事

随着全球对环境保护意识的增强,Heimann Optoelectronics Gmbh积极响应,将绿色环保理念融入产品设计和生产中。公司投入大量资源研发出低功耗、长寿命的光电传感器,这些产品在使用过程中能够显著减少能源消耗和废弃物产生。此外,公司还采用环保材料进行包装,确保从生产到废弃的整个生命周期都符合环保标准。这一举措不仅赢得了市场的广泛赞誉,还为公司树立了良好的企业形象。

问答坊 | AI 解惑

技术人员为什么写东西就那么难

做起工作来都是废寝忘食,奋不顾身。可轮到写文章,做总结的时候却··········· 诶,啥时候也能像文人墨客那样奋笔疾书,行云流水呢!!!…

查看全部问答>

s3c2440的片外norflash

从Nandflash启动的Bootload已经可以运行了,现在我想在做一个Norflash上的Bootload。从s3c2440的datasheet里面看,boot internal sram(4kb)的地址是0x40000000,所以我在用ADS调试Bootload的时候,ro地址只能设置为这个才能运行。我的疑问是,为 ...…

查看全部问答>

S3C2450在wince5.0下用mediaplayer播放MP4的疑问?

硬件:S3C2450 主频400/533M,RAM:256M DDR2,LCD:7寸,分辨率800×480 OS:WINCE5.0 这样的环境下,用WINCE自带的MediaPlayer,能否流畅播放MP4? 7寸屏是固定的,播放视频时可适当下调整显示分辨率,不知道最大能流畅播放多少分辨率的视频! 考 ...…

查看全部问答>

TCPMP播放视频图片重影

我们做了个TCPMP播放器的UI.但是在播放视频和图片的时候会有重影,特别是在播放图片的时候,会有上一张的残留,这样一张一张累积起来,效果很难看.视频好点, 但有时也能看出来.我们有在切换到下一张图片的时候屏黑一下屏幕,但是如果图片比较大的话(数码 ...…

查看全部问答>

《2011应届理工学生求职宝典》免费赠送

应届工科生求职宝典           ——凌阳教育教你五步顺利就业         曾经有一份珍贵的“宝典”摆在我面前,我没有好好珍惜,今天凌阳教育出了新“宝典 ...…

查看全部问答>

ST菜菜请教:IARforSTM8和ST-LINK联机要怎样设置

                                 ST菜菜请教:IAR for STM8 和 ST-LINK联机要怎样设置?…

查看全部问答>

汇编写的一段自切换量程电压表程序

这是编写的一个自动切换量程的电压表汇编程序,调试时有个问题,就是只能从0.00调到1.99,不满足题目及程序的编写要求,恳请前辈们悉心指点一二:(题目:采用模数转换芯片ADC0832做电压采集,继电器做量程切换,电压采集结果用3位数码管显示,要 ...…

查看全部问答>

LM3S AD寄存器貌似有BUG

各种AD例程里面几乎都有一句 while( (HWREG(ADC_BASE + ADC_O_X_SSFSTAT) & 0x00000100) );      /*  等待FIFO 0为非空,即等待转换*/ 这个ADC_O_X_SSFSTAT的宏定义附近是…… #define ADC_O_EMUX   & ...…

查看全部问答>