历史上的今天

今天是:2024年10月19日(星期六)

正在发生

2019年10月19日 | MSP430学习笔记-看门狗

发布者:breakthrough3 来源: eefocus关键字:MSP430  看门狗  定时器 手机看文章 扫描二维码
随时随地手机看文章

WDTCTL 看门狗控制寄存器

image.png

WDTCTL 由两部分组成: 
高 8 位是对 WDT 操作的控制命令。要写入操作 WDT 的控制命令,出于安全原因必须先正确写入高字节 
看门狗口令。口令位 5AH,如果口令写错将导致系统复位。 
读 WDTCTL 时,不需要口令,可直接读取地址 120H 中的内容,读出数据低字节位 WDTCTL 的值,高字 
节始终位 69H。WDTCTL 除了看门狗定时器的控制位之外,还有两个用于设置 NMI 引脚功能。 
WDTISx:选择看门狗定时器的计时输出 
其中 T 是 WDTCNT 的输入时钟源周期。 
0 T×2的15次方 
1 T×2的13次方 
2 T×2的9次方 
3 T×2的6次方 
WDTSSEL:选择 WDTCNT 的时钟源 
0 SMCLK 
1 ACLK 
由 WDTISx 及 WDTSSEL 位便可确定 WDT 定时时间,因此通过软件对计数器设置不同的初始值就可实现 
不同时间的定时。与其他定时器不同之处在于,WDT 最多只能定时 8 种和时钟源相关的时间。 
下表列出了 WDT 可选的定时时间(晶振为 32.768KHz,SMCLK=1MHz)。

image.png

WDTCNTCL:看门狗计数器清零位 
0: 无操作 
1: 将 WDTCTL 的值清零 
当该位为 1 时,清除 WDTCNT。 
WDTTMSEL:工作模式选择 
0 看门狗模式; 
1 定时器模式。 
WDTNMI:选择 RST/NMI 引脚功能(在 PUC 后被复位) 
0 RST/NMI 引脚为复位端; 
1 RST/NMI 引脚为边沿触发的非屏蔽中断输入。 
WDTNMIES:选择中断的边沿触发方式 


WDTHOLD:停止看门狗计数器 
0 WDT 功能激活 
1 时钟禁止输入,计数停止

WDTCNT 计数单元


image.png

WDTCNT 时 16 位增计数器,由于 MSP430 所选定的时钟电路产生的固定周期脉冲信号对计数器进行加 
法计数。如果计数器事先被预置的初始状态不同,那么从开始计数到计数溢出为止的时间就不同。 
WDTCNT 不能直接通过软件直接通过软件存取,必须通过看门狗定时器的控制寄存器 WDTCTL 来控制。

IE1 中断允许寄存器

image.png

WDTIE:看门狗定时器模式中断允许控制位 
0 看门狗定时器中断禁止 
1 看门狗定时器中断允许 
NMIIE:非屏蔽中断允许控制位 
0 禁止非屏蔽中断 
1 允许非屏蔽中断

IFG1 中断标志寄存器

image.png

WDTIFG:看门狗定时器模式中断标志 
0 无看门狗定时器中断标志 
1 有看门狗定时器中断标志 
NMIIFG:非屏蔽中断标志 
0 无非屏蔽中断标志 
1 有非屏蔽中断标志

看门狗定时器操作

用户可以通过 WDTCTL 寄存器中的 WDTTMSEL 和 WDTHOLD 控制位设置 WDT 工作在看门狗模式、定 
时器模式和低功耗模式。

看门狗模式

由于在上电复位或系统复位时,WDTCNT 和 WDTCL 两寄存器内容被全部清除(晶振为 32768Hz, 
SMCLK=1MHz): 
复位后,工作在看门狗模式,以 ACLK 为时钟,WDT 定时时间为 32ms。 
上述情况将导致 WDT 的运行自动进入看门狗模式。 
所以,用户软件一般都需要进行如下操作:

  • 进行 WDT 的初始化:设置合适的时间(通过 SSEL、IS0、IS1 位来选定)。

  • 周期性的对 WDTCNT 清零:防止 WDT 溢出,保证 WDT 的正确使用。

  • 在看门狗模式下,如果计数器超过了定时时间,就会产生复位和激活系统上电清除信号,系统从上电 复位的地址重启动。

  • 如果系统不用看门狗功能,应该在程序开始处禁止看门狗功能。

定时器模式 
WDTCTL 的 WDTTMSEL 位置位选择定时器模式。这一模式产生选定时间的周期性中断。定时时间 
可以通过 WDTCTL 的 WDTCNCTL 位置位来开始。

  • 改变定时时间而不同时清楚 WDTCNT 将导致不可预料的系统立即复位或中断。定时时间可以通过 WDTCTL 的 CNCTL 位置位来开始。

  • 如果先后分别进行清除和定时时间选择,则可能立即引起不可预料的系统复位或中断。

  • 另外,在终场工作时。改变时钟源可能导致 WDTCNT 额外的计数时钟。

低功耗模式 
当系统不需要 WDT 做看门狗和定时器时,可关闭 WDT 以减小功耗。 
控制位 WDTHOLD=1 时关闭 WDT,这时看门狗停止工作。

看门狗定时器头文件定义

在 msp430x14x.h 头文件中定义如下:

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

* WATCHDOG TIMER 

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

#define WDTCTL_ (0x0120) /* Watchdog Timer Control */

DEFW( WDTCTL , WDTCTL_) 

/* The bit names have been prefixed with "WDT" */ 

#define WDTIS0 (0x0001) 

#define WDTIS1 (0x0002) 

#define WDTSSEL (0x0004) 

#define WDTCNTCL (0x0008) 

#define WDTTMSEL (0x0010) 

#define WDTNMI (0x0020) 

#define WDTNMIES (0x0040) 

#define WDTHOLD (0x0080) 

#define WDTPW (0x5A00) 

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

/* WDT is clocked by fMCLK (assumed 1MHz) */ 

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

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

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

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

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

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

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

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

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

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

/* WDT is clocked by fMCLK (assumed 1MHz) */ 

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

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

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

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

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

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

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

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

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

所以我们使用 WDT 的时候可以直接写成下面的形式: 
做定时器用: 
WDTCTL = WDT_ADLY_1000; // 以 ACLK 延迟 1000ms 
WDTCTL = WDT_MDLY_32; // 以 SMCLK 延迟 32ms 
// 记得要开 IE1 中的 WDTIE 和_EINT(); 
做看门狗用: 
WDTCTL = WDT_ARST_1000; // 以 ACLK 设定 1000ms 的看门狗 
WDTCTL = WDT_MRST_32; // 以 SMCLK 设定 32ms 的看门狗 
// 由于在看门狗的定义里面包含 WDTCNCTL 
// 所以需要喂狗的时候只需要再写一边 WDTCTL = WDT_MRST_32; 就行了

关键字:MSP430  看门狗  定时器 引用地址:MSP430学习笔记-看门狗

上一篇:浅谈msp430f5529入门(1)——时钟模块DCO
下一篇:TI MSP430 如何使用 DCO 倍频

推荐阅读

专注于引入新品并提供海量库存的电子元器件分销商贸泽电子 (Mouser Electronics) 即日起备货Molex的各种蜂窝柔性天线。此宽带天线系列可以满足无线应用开发的未来需求,以支持不断发展的LTE和4G蜂窝技术。 贸泽电子供应的Molex蜂窝柔性天线采用平衡的传输设计,因为不需要额外的电路、频率调谐和电子元件集成,因此可以最大限度地减少接地平面效...
一周前索尼官方正式宣布了下一代主机是PlayStation 5(以下简称PS5),将在2020年底上市,手柄会全新设计,加入更多震动反馈效果。PS5主机的处理器也会大幅升级,依然是找AMD定制的,这次可以用上AMD最新的CPU及GPU,包括7nm工艺的8核Zen2 CPU及RDNA架构的Radeon GPU,之前爆料称GPU频率可达2GHz,浮点性能高达9.2TFLOPS,性能比RX 5700显卡还要高...
  本文介绍了新一代基于射频技术的汽车防盗系统结构,提出了一种以ARM微处理器为核心的汽车射频识别防盗系统的设计方案,方案中给出了此汽车射频识别防盗系统的硬件及局部构件的电路图,在硬件平台上移植了嵌入式实时操作系统,并编写了系统的驱动及应用软件,搭建了实验室模拟仿真平台,在此平台上测试运行结果表明系统良好的防盗功能,从而证实了本方...
近日,山西省科学技术厅公布2021年度山西省科技重大专项计划“揭榜挂帅”项目,本次张榜项目共29个,分为企业重大技术攻关、重大基础前沿与民生公益两类。在企业重大技术攻关类别中,包括大尺寸4H-SiC单晶衬底材料制备产业化技术研发项目、8英寸碳化硅单晶生长设备研发项目、柔性OLED照明核心材料及其面板制备关键技术项目等。在重大基础前沿与民生公益类...

史海拾趣

问答坊 | AI 解惑

去做人生的那棵树,关于工程师命运的感慨。

去做人生的那棵树,关于工程师命运的感慨。 做为一个在嵌入式系统行业从业十年的工程师来说,为了生存与发展,现在也还一天天忙于奔命,连以前最常来的这个BBS论坛也有近一个多月没来,以下有些想法希望能与大家分享。希望能给刚入道的工程师或已经 ...…

查看全部问答∨

linux 视频教程下载--推荐

天嵌科技继推出Linux2.6.25完整移植教程之后,再推出TQ2440精品视频教程, 使你更容易上手,更快捷入门,更早进入嵌入式开发的殿堂。 欢迎大家到http://www.embedsky.net/technical/homePage.html 下载, 到http://www.embedsky.net/bbs 开题讨 ...…

查看全部问答∨

基于DSP的手持式数字存储示波表系统设计

基于DSP的手持式数字存储示波表系统设计…

查看全部问答∨

利用SOPC Builder生成系统时的问题

利用SOPC Builder生成系统时,需要添加一个SSRAM模块进去,但是QUARTUS II 7.2版本的SSRAM型号是CY7C1380C,而我的板子上面用到的是IS61LPS12836A_200TQLI,我查看了二者的datasheet,发现二者引脚完全一致,以及真值表也一样,请问能否用CY7C1380C ...…

查看全部问答∨

基于STC89C51+M62429的音量控制电路与程序设计

1  引言 本文介绍的音量控制IC为M62429,市面上有很多类似的产品,例如:FM62429、CD62429、CSC62429等。其实,掌握了一两种IC的编程方法,稍作改动就很容易移植到其它产品上。M62429是日本三菱公司的音量控制IC,音量调节范围是0~-83 ...…

查看全部问答∨

问个关于IIC的问题

在wince 6.0下,相同的代码,用在两个环境下,s3c2442x的芯片 在一个环境下正常,在另一个环境下: IIC数据发送出去后,从设备不返回完成标志是什么原因?就是说CON寄存器的第5位没有被置一。 哪位大侠碰到过,指点下,不胜感激~…

查看全部问答∨

100分求WinCE下驱动程序开发电子书或资料!!1

哪位大哥有Win CE Device dirver Kit (设备驱动程序设计指南)的电子书,或者有RT方面的资料,可以给我转一份,谢谢!! m-ja@163.com…

查看全部问答∨

sd卡驱动

在SD卡驱动程序中有这样一个定义:WCHAR *szRegKey_SDMMC = L"Drivers\\\\SDCARD\\\\ClientDrivers\\\\Class\\\\SDMemory_Class"; 在中断线程中,通过这条语句调用szRegKey_SDMMC: hDevice = ActivateDeviceEx(szRegKey_SDMMC, NULL, 0, NU ...…

查看全部问答∨

要求驱动文件不能被SOFT-ICE看到.怎么弄.

我想编写的驱动程序,不能被soft-ice看到,就是翻译成符号文件,可以看到源程序的.编译时,需要怎么设置.…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved