MSP430F5438 看门狗实验

来源:本站
导读:目前正在解读《MSP430F5438 看门狗实验》的相关信息,《MSP430F5438 看门狗实验》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《MSP430F5438 看门狗实验》的详细说明。
简介:
1,学会在定时器和看门狗模式下操作 WDT,了解 WDT 寄存器的配置
2,编程实现WDT 定时功能,WDT 时钟源来自 ACLK,且 ACLK 无失效来自 XT1
晶体
3,实现功能:250ms 定时,每 250ms LED1 亮灭交替闪烁


1,看门狗介绍

看门狗定时器是一个32位的定时器它可以作为看门狗或定时器使用所有F5XX系列的器件中都有增强型看门狗定时器—WDT_A。

什么是看门狗?

从字面的意思理解,看门狗帮我的系统看门,防止我的系统到处乱跑。在实际嵌入式系统中看门狗也是充当这个角色的。看门狗,简称WDT,很明显它实际上是一个定时器,就如同我们所讲的Timer_A3亦或是Timer_B7系统一样,他们可以实现定时器的基本功能。但是,看门狗不具备Timer_A3或者Timer_B7那么多的计数模式以及输出功能,但是看门狗具有它自己的看家本领---看门---就是在某些时候迫使系统复位,主要是在程序死锁、系统异常等情况下完成强制复位。

看门狗的特性

1、电路里面包含有定时器和时钟源,当定时器计数到一定程度(一般是溢出)后将产生一个特定的信号;

2、在定时器计数的过程中,可以通过某些信号将定时器清零;

3、也可以禁用这个定时器以禁止看门狗功能;

4、另外,从看门狗的功能和应用领域讲,看门狗内部电路不应过于复杂,同时看门狗电路必须具有比处理器更高的稳定性和可靠性。

处理器如何控制看门狗

看门狗内部有定时器,如果MCU不能在一段时间内把看门狗定时器清零它就会发出一个信号。“狠狠地”通知MCU---看门狗很生气,后果很严重---MCU将被RESET。因此,一旦你的系统中添加了看门狗电路,你就一定要格外小心,“不要忽略你身边的任何一条狗”。

因此,一旦电路中添加了看门狗的功能,我们就必须在程序中添加将看门狗定时器清零的代码,这种操作我们称之为喂狗。对于喂狗操作,我们应当注意以下几点:

1、MCU中任何两次喂狗操作之间的时间间隔应小于看门狗的定时周期,如果某一任务的执行周期超过了看门狗的定时周期,需要向其中加入喂狗操作;

2、对于无操作系统的系统来说,喂狗操作只能在主循环中或被主循环调用的程序中执行,不可以在定时器中断服务程序中进行;

3、此外,用户还可以根据自己系统的情况来选择适当的看门狗定时器时间。

2,MSP430F54x的内部看门狗定时器

前面介绍的都是看门狗的一些共性,对于MSP430F54x系列微处理器来说,其内部的看门狗相对来说具有更强大的功能和灵活性:

8种软件可选的定时时间

看门狗工作模式

定时器工作模式

带密码保护的WDT控制寄存器

可选择时钟源

允许关闭以降低功耗

时钟故障保护

看门狗逻辑框图

MSP430F5438 看门狗实验

3,实验原理

WDT 可以工作在两种模式,一.看门够模式,时间一到就产生复位。另一种模式就是普通的定时器模式,对 WDT 寄存器进行配置可以完成不同时间间隔的定时。

如图 上图,看门狗内部是由两个 16 位的计数器组成一个 32 位的计数器来进行定时。计数器计数可以达到 ,当计数数值达到被选择的时间间隔就会使中断标志位为 1,如果工作在看门狗模式下,在看门狗中断标志置 1 同时,也会产生一个复位信号。当看门狗工作在定时器模式下,定时时间到来后就会使定时器中断标志位置 1,如果中断使能打开,就会进入看门狗定时器中断,执行中断程序。

4,寄存器设置

MSP430F5438 看门狗实验

WDTPW :看门狗密钥读出值是0x69,写时必须为0x5A,否则将产生PUC。

WDTHOLD: 关看门狗定时器降低功耗

WDTSSEL:看门狗时钟源

WDTTMSEL:工作模式选择

WDTCNTCL:看门狗计数器清零,当WDTCNTCL=1时,看门狗计数器值就变为0。WDTCNTCL位之后自动复位。

WDTIS :看门狗定时间隔选择。这些位可以选择看门狗的定时时间间隔而触发WDTIFG或者PUC信号,看门狗工作模式决定。

看门狗寄存器有密码保护,因此在要对看门狗进行配置的时候需要写入正确的密码 0x5A,如果密码错误会导致 PUC 复位。默认状态下工作在看门狗模式下,定时 32ms,如果不使用 WDT,可以将 WDTHOLD 位置为高将看门狗关闭,WDTTMSEL 选择定时器模式还是看门狗模式。WDTCNTCL用来清除 32 位计数器数值,WDTCNTCL 用来选择定时间隔。

例如 配置看门狗工作在定时器状态,定时间隔为 1 秒

WDTCTL = WDTPW + WDTTMSEL + WDTCNTCL + WDTSSEL0 + WDTIS2;

5,程序流程

MSP430F5438 看门狗实验

6,实验代码

// 功能: 250ms 定时,每 250ms LED1 亮灭交替闪烁

#include

void Init_Clk(void);

void Init_System(void);

void main(void)

{

Init_System(); // 系统初始化

_EINT(); // 开总中断

__bis_SR_register(LPM3_bits); //进入 LPM3

}

/****** 看门狗中断服务程序************************/

#pragma vector = WDT_VECTOR

__interrupt void watchdog_timer(void)

{

P1OUT ^= BIT0; // LED1 翻转

}

//函数(模块)名称:void Init_System(void)

void Init_System(void)

{

WDTCTL = WDTPW + WDTHOLD; // 关看门狗

Init_Clk(); //初始化时钟

WDTCTL = WDT_ADLY_250; // WDT 250ms, ACLK,

SFRIE1 |= WDTIE; // WDT 中断使能

P1DIR |= BIT0; // 设置 P1。0 为输出

}

//函数(模块)名称:void Init_Clk(void)

void Init_Clk(void)

{

P7SEL |= 0x03; // XT1 起振

P1DIR |= BIT0; // P1.0 输出

UCSCTL1 = DCORSEL_2; // 选择 DCO 频率范围

UCSCTL4 = SELA_0 ; // 设置 MCLK = DCOC,MCLK =DCO,ACLK=XT1

while (SFRIFG1 & OFIFG) //清除 OFIFG,and XT1OFFG ,DCOFFG

{

UCSCTL7 &= ~( XT1LFOFFG + DCOFFG);

SFRIFG1 &= ~OFIFG;

}

}

提醒:《MSP430F5438 看门狗实验》最后刷新时间 2024-03-14 00:52:55,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《MSP430F5438 看门狗实验》该内容的真实性请自行鉴别。