历史上的今天
今天是:2025年08月20日(星期三)
2018年08月20日 | msp430 看门狗设置
2018-08-20 来源:eefocus
看门狗定时器(
WDTPW:Bits15-8,WDT Password,写为05Ah,读为069h。
WDTHOLD:Bit7,WDT HOLD,
0:打开看门狗计时器;
1:关闭
WDTSSEL:Bits6-5,WDT Clock Source Select时钟源选择
WDTTMSEL:Bit4,工作模式选择
0:看门狗模式;
1:定时器模式;
WDTCNTCL:Bit3,计时器清零
0:无效;
1:清空计数器,即WDTCNT=0x0000h
WDTIS: Bits2-0,WDT Interval Select,间隔时间选择。用来选择计数的周期,共有8种时间可以选择。
备注:括号前数字为计数器的值

2.2.2 看门狗计数值寄存器WDTCNT(Watchdog Timer Counter)
这是一个32Bit的加计数器,但是不能通过软件来直接对其进行赋值等操作,只能通过WDTCTL中的WDTIS来选择时间。或者你可以通过WDTSSEL选择不同的时钟源,来间接改变时间。
2.2.3 看门狗中断位控制
WDT利用SFRS总寄存器中的两位来控制中断。
WDT中断标志位:WDTIFG,位于SFRIFG1.0
WDT 中断使能位:WDTIE,位于SFRIE1.0
看门狗模式:如果不及时对WDTCNT清零或者对WDT初始化,WDTIFG就会置位,然后程序就会重启。
计时器模式:必须开总中断GIE和看门狗中断WDTIE。此外,当执行完中断服务程序后,标志位WDTIFG会自动清零。
2.3常用操作
/*关闭看门狗*/
WDTCTL=WDTPW+WDTHOLD;
/*喂狗,即对有效状态的看门狗进行清零操作*/
/* 时间计满还不喂狗就会导致程序重启*/
/*WDTIS2即WDTIS=100,此时时间间隔设为1S,假定频率为32.768KHZ*/
WDTCTL = WDTPW + WDTCNTCL+WDTSSEL0+WDTIS2;
/*将看门狗设置为计数器模式,计数8192约250ms,假定频率为32.768KHZ*/
/* WDTIS2+WDTIS0即101*/
WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS2+WDTIS0
总结例程:
/*首先将WDT设为定时器功能。而中断服务子程序则是把WDT改为看门狗功能。这样就通过中断控制的周期性的重启程序,实现了LED闪烁*/
/*注意,这里默认的时钟源不是32KHZ,而是内部的DCO-SMCLK(之后会讲到)1.045MHZ。所以前面WDTIS定义的时间大约都要缩小1045/32=32倍*/
#include
void main(void)
{
/*清零-设定为计数器-时间设定为010模式,即256S/32=8S*/
WDTCTL=WDTPW+WDTCNTCL+WDTTMSEL+WDTIS1;
__enable_interrupt(); //开总中断
SFRIE1|=WDTIE; //开看门狗定时器中断
P1DIR=0xff;
int i,j;
P1OUT=0xff;
for(i=0;i<30000;i++)
for(j=0;j<50;j++); //延时约8S
P1OUT=0x00;
while(1);
}
/*中断服务程序*/
#pragma vector=WDT_VECTOR
__interrupt void WatchTimer(void)
{
WDTCTL=WDTPW+WDTCNTCL+WDTIS1; //看门狗模式,时间设定约为8S
}
史海拾趣
|
这是其乐达956D的固件升级文件 ,加装了触摸屏,请各位大哥帮小弟看看这个文件是用什么软件开发的 QQ752352212 谢谢~~~! 这是其乐达956D的固件升级文件 ,加装了触摸屏,请各位大哥帮小弟看看这个文件是用什么软件开发的 QQ752352212 ...… 查看全部问答> |
|
有分析师认为,智能手机操作系统的市场正趋于开源化;此外,苹果和RIM的封闭系统也在不断壮大,微软正面临两面受困的局面。 在去年11月底以2亿美元收购联想移动后的短短1个多月,昨日,联想集团正式发布其移动互联网战略———“乐计划”,并推出 ...… 查看全部问答> |
|
心得分享:周末仔细研究了一下Stellaris的数据书,终于学会了如何使用外接的SDRAM 周末仔细研究了一下数据书,从里面的蛛丝马迹里理解领会,终于找到了答案。 事后觉得答案十分,因为这个可能会的人不大愿意回答: 1、初始化EPI接口时需要指定EPI的工作模式:SDRAM接口或 ...… 查看全部问答> |
|
您好。我是uClinux个新手。谢谢帮助哈~~。 贴子有点长,我把问题先写出来吧: 1.zlib库应该怎么安装呢?是用gcc安装 还是交叉编译? 装到哪里? 2.可不可以直接对mtd设备文件读写呢? 我在uClinux 下跑 boa server 。现在问题是这样 ...… 查看全部问答> |
|
各位大虾! 我的程序一开始在各款手簿上(都是Wince操作系统)都可以以Debug方式调试,但是随着程序不断变大,慢慢有些手簿出现无法调试的情况,例如多普达828、多普达696、还有一些工业手簿等。 Debug调试时,程序 ...… 查看全部问答> |




