博客
关于我
MSP430FR6989之看门狗
阅读量:389 次
发布时间:2019-03-05

本文共 1056 字,大约阅读时间需要 3 分钟。

MSP430FR6989的看门狗比较简单,只有一个寄存器可以设置,如下图所示。

WDTPW:看门狗密码。每次设置WDTCTL寄存器都要向WDTPW写入0x05A。

WDTHOLD:禁用/启用看门狗。

WDTSSEL:设置看门狗时钟源。

WDTTMSEL:看门狗模式设置。为0进入看门狗模式;为1进入间隔定时器模式。

WDTCNTCL:喂狗。

WDTIS:看门狗分频系数。

再看看板子上的晶振,为32.768KHz,接在LFX低速晶振引脚上。

而LFX则是接在ACLK上,所以WDTSSEL正好可以设为ACLK。

WDTIS设为2的15次方,即32768,那么看门狗的定时间隔为32.768KHz/32768=1Hz,即1秒。

如果改变了看门狗的时钟源和分频系数,则需要重新计算定时间隔。

具体代码,如下所示:

#include 
int main(void) { volatile uint32_t i; WDT_A_hold(WDT_A_BASE); // 停止看门狗 WDT_A_initWatchdogTimer(WDT_A_BASE,WDT_A_CLOCKSOURCE_ACLK,WDT_A_CLOCKDIVIDER_32K); WDT_A_start(WDT_A_BASE); GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN0); GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN0); PMM_unlockLPM5(); while(1) { for(i=10000; i>0; i--); GPIO_toggleOutputOnPin(GPIO_PORT_P1,GPIO_PIN0); // LED闪烁 WDT_A_resetTimer(WDT_A_BASE); // 喂狗 }}

通过观察得知for(i=10000; i>0; i--);延时不足1秒,喂狗成功,那么代码会正常运行,P1.0口会翻转,LED灯闪烁。

如果改为for(i=100000; i>0; i--);延时超过1秒,喂狗失败,那么代码将会一直复位,P1.0口一直拉高,LED灯常亮。

看门狗具有监测单片机程序是否跑飞的功能。

如果代码延时较大,则需要在里面插入若干行WDT_A_resetTimer(WDT_A_BASE);用于喂狗。

 

转载地址:http://ldiwz.baihongyu.com/

你可能感兴趣的文章
Netty工作笔记0010---Channel应用案例1
查看>>
Netty工作笔记0011---Channel应用案例2
查看>>
Netty工作笔记0012---Channel应用案例3
查看>>
Netty工作笔记0013---Channel应用案例4Copy图片
查看>>
Netty工作笔记0014---Buffer类型化和只读
查看>>
Netty工作笔记0015---MappedByteBuffer使用
查看>>
Netty工作笔记0016---Buffer的分散和聚合
查看>>
Netty工作笔记0017---Channel和Buffer梳理
查看>>
Netty工作笔记0018---Selector介绍和原理
查看>>
Netty工作笔记0019---Selector API介绍
查看>>
Netty工作笔记0020---Selectionkey在NIO体系
查看>>
Netty工作笔记0021---NIO编写,快速入门---编写服务器
查看>>
Netty工作笔记0022---NIO快速入门--编写客户端
查看>>
Vue踩坑笔记 - 关于vue静态资源引入的问题
查看>>
Netty工作笔记0024---SelectionKey API
查看>>
Netty工作笔记0025---SocketChannel API
查看>>
Netty工作笔记0026---NIO 网络编程应用--群聊系统1---编写服务器1
查看>>
Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
查看>>
Netty工作笔记0028---NIO 网络编程应用--群聊系统3--客户端编写1
查看>>
Netty工作笔记0029---NIO 网络编程应用--群聊系统4--客户端编写2
查看>>