新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > MSP430单片机看门狗面面观

MSP430单片机看门狗面面观

作者:时间:2013-04-07来源:网络收藏

F2274为例。其中汇编实现采用的是IAR汇编,CCE汇编实现稍作修改即可。

1. 有三种工作模式:停止模式,计时器模式,模式。

2. 其中后两种模式可以选择的时钟源有:SMCLK和ACLK。

3. 在使用后两种模式时候要注意所处的状态下能否工作,如处在LPM3时候只有ACLK时钟,处在LPM4下,没有时钟可以使用。

4. 看门狗模式的使用方法:当看门狗计数溢出时,程序复位。在程序中开启看门狗,在计数溢出前清空看门狗,或重置看门狗,以使其重新计数。若程序跑飞,看门狗可能没有被清空或重置,就会溢,使程序复位。

5. 在F2274中,看门狗模式下可以计时最长为1s,若需要以更长的时间复位,可采取的方法,使用其他计数器,计数满后执行((void (*)())RESET_VECTOR)();或计数满后往看门狗控制寄存器写个错误值或执行一条无效命令:如((void (*)())0x170)();0x170是外围模块的一个地址,不可能是一个函数地址,所以执行此句将使程序复位。

停止模式:关闭看门狗

C语言实现:WDTCTL = WDTPW + WDTHOLD

汇编语言实现:mov.w #WDTPW+WDTHOLD,WDTCTL

计时器模式:作为一个计时器使用,计数器满产生中断时执行看门狗中断函数。

C语言实现:

主程序中:开启看门狗计时器,如:WDTCTL = WDT_MDLY_8;或WDTCTL = WDT_ADLY_250;等

看门狗中断函数为:

#pragma vector=WDT_VECTOR

__interrupt void wATchdog_timer(void)

{

//..................................

}

汇编语言实现:

开启看门狗计时器,如:

mov.w #WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 ,WDTCTL

或 mov.w #WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0 ,WDTCTL等

中断向量表中的看门狗中断向量:

ORG 0FFF4h ;msp430f2274的看门狗中断地址

DW RESET ;程序开始处以REST作为标号

看门狗中断函数:

WDT_ISR

;....................

reti

看门狗模式:计数溢出时,执行复位中断函数。

C语言实现:

清看门狗:WDTCTL = WDTPW+WDTCNCTL;

设置看门狗:WDTCTL = WDT_MRST_0_5;

或WDTCTL = WDT_ARST_1000;等

汇编语言实现:

中断向量表中的复位向量:

ORG 0FFFEh ;msp430f2274的复位地址

DW RESET ;程序开始处以REST作为标号

清看门狗:mov.w #WDTPW+WDTCNCTL,WDTCTL


上一页 1 2 3 下一页

关键词: MSP430 单片机 看门狗

评论


相关推荐

技术专区

关闭