
MSP430FR6989之看门狗
发布日期:2021-05-08 09:39:56
浏览次数:22
分类:精选文章
本文共 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秒。
如果改变了看门狗的时钟源和分频系数,则需要重新计算定时间隔。
具体代码,如下所示:
#includeint 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);用于喂狗。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年03月25日 01时41分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
使用QT实现一个简单的登陆对话框(纯代码实现C++)
2021-05-08
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2021-05-08
GLFW 源码 下载-编译-使用/GLAD配置
2021-05-08
针对单个网站的渗透思路
2021-05-08
Typescript 学习笔记六:接口
2021-05-08
【ASP.NET】ASP.NET中权限验证使用OnAuthorization实现
2021-05-08
02、MySQL—数据库基本操作
2021-05-08
OpenJDK1.8.0 源码解析————HashMap的实现(一)
2021-05-08
MySQL-时区导致的时间前后端不一致
2021-05-08
2021-04-05阅读小笔记:局部性原理
2021-05-08
go语言简单介绍,增强了解
2021-05-08
python file文件操作--内置对象open
2021-05-08
架构师入门:搭建基本的Eureka架构(从项目里抽取)
2021-05-08
MongoDB 快速扫盲贴
2021-05-08
修复搜狗、360等浏览器不识别SameSite=None 引起的单点登录故障
2021-05-08
EXTJS4.2——10.Tab+Iframe
2021-05-08
WEB基础——AJAX
2021-05-08
one + two = 3
2021-05-08
sctf_2019_easy_heap
2021-05-09