MSP430 5xx/6xx Watchdog看门狗编程实例
看门狗定时器是一个32位定时器,可以用作看门狗或间隔定时器。
看门狗定时器模块的主要功能是在出现软件问题后执行受控的系统重启。如果超过选定的时间间隔,将生成系统复位。如果应用程序不需要看门狗功能,则模块可配置为间隔定时器,并可在选定的时间间隔内生成中断。
看门狗定时器模块的特点包括:
- 八个软件可选时间间隔
- 看门狗模式
- 间隔定时器模式
- 密码保护访问看门狗定时器控制(WDTCTL)寄存器
- 可选时钟源
- 可停止以节省电力
- 时钟故障保护功能
注:看门狗定时器上电时自动激活
在PUC之后,WDT_A模块自动配置为看门狗模式,初始复位间隔为32ms,使用SMCLK。用户必须在这个初始重置间隔到期之前设置或停止WDT_A。
看门狗定时器模块可以利用WDTCTL寄存器配置为看门狗定时器或间隔定时器。WDTCTL是一个16位密码保护读/写寄存器。任何读写访问必须使用word指令,写访问必须在高位字节中包含写密码05Ah。对WDTCTL的任何写入操作,如果高字节中的值不是05Ah,则会违反密码并触发PUC系统复位,且无论定时器处于何种模式。对WDTCTL的任何读取高位字节的值为069h。以字节方式无论读取WDTCTL高字节或低字节返回的都是低字节的值。以字节方式无论写入WDTCTL高字节或低字节都将触发PUC系统复位。
WDTCNT是一个32位增计数器,不能由软件直接访问。通过看门狗定时器控制寄存器(WDTCTL)控制WDTCNT,并选择其时间间隔。WDTCNT的时钟来自SMCLK、ACLK、VLOCLK或X_CLK。时钟源由WDTCTL.WDTSSEL位选择。定时器间隔由WDTCTL.WDTIS位选择。
看门狗模式:
PUC后,使用SMCLK作为时钟将WDT模块配置为看门狗模式,初始重置间隔为32ms。用户必须在初始重置间隔到期之前,设置、停止或清除看门狗计时器。当看门狗定时器配置为在看门狗模式下运行时,使用错误的密码写入WDTCTL,或者所选时间间隔过期将触发PUC。PUC将看门狗计时器重置为其默认状态。
工程介绍:
MCU型号: MSP430F6736A
编译平台: IAR for MSP430 6.40.1
实验项目: Watchdog: 用作看门狗模式
看门狗定时器溢出时间为250ms, 测试看门狗溢出复位功能
系统上电后将流水灯全部点亮31.25ms后再熄灭,
然后等待看门狗溢出, 系统复位, 流水灯全部点亮31.25ms后再熄灭, 如此循环
选择 REFOCLK (内部校准的低频振荡器, 典型频率为32.768 kHz) 作为 ACLK SMCLK MCLK
#include "msp430.h"
#include "msp430f6736a.h"void main(void)
{// 看门狗定时器时钟=ACLK=32.768 kHz// 看门狗模式// 定时器清0// 看门狗定时器时钟/(2^13) = 32768 / 8192 = 4Hz (250ms)WDTCTL = WDTPW + WDTSSEL__ACLK + WDTCNTCL + WDTIS2 + WDTIS0;// 选择 REFO (内部校准的低频振荡器, 典型频率为32.768 kHz): 作为 ACLK SMCLK MCLKUCSCTL4 = SELA__REFOCLK | SELS__REFOCLK | SELM__REFOCLK;// PORT 3 : P3.7 P3.6 P3.5 P3.4用作流水灯输出, 管脚功能:I/O 模式:输出P3SEL = 0;P3DIR = 0xf0;P3OUT = 0xf0;P3OUT = 0x00; // 流水灯全部点亮__delay_cycles(1024); // 等待时间 1024 / MCLK = 1024 / 32768 = 31.25msP3OUT = 0xff; // 流水灯全部熄灭while(1); // 等待看门狗溢出, 复位系统
}
间隔定时器模式
将WDTCTL.WDTTMSEL=1可选择间隔定时器模式。此模式可用于提供周期性中断。在间隔定时器模式下,SFRIFG1.WDTIFG标志在选定的时间间隔到期时置位。在所选定时器间隔到期时,不会在间隔定时器模式下生成PUC,并且WDTIFG的允许位SFRIE1.WDTIE保持不变。
设置SFRIE1.WDTIE位和GIE位时,SFRIFG1.WDTIFG标志请求中断。当中断请求被处理时,SFRIFG1.WDTIFG中断标志会自动复位,或者可以通过软件重置。间隔定时器模式下的中断向量地址不同于看门狗模式下的中断向量地址
注:修改看门狗定时器
在一条指令中,看门狗定时器间隔应与WDTCTL.WDTCNTCL=1一起更改,以避免意外的立即PUC或中断。在更改时钟源之前,应停止看门狗计时器,以避免可能出现的错误间隔。
工程介绍:
MCU型号: MSP430F6736A
编译平台: IAR for MSP430 6.40.1
实验项目: Watchdog: 用作间隔定时器模式
选择 REFOCLK 作为 ACLK SMCLK MCLK
看门狗时钟采用ACLK, 间隔时间=250ms, 以此间隔时间顺序点亮流水灯
#include "msp430.h"
#include "msp430f6736a.h"char LampValue;void main(void)
{// 看门狗定时器时钟=ACLK=32.768 kHz// 间隔定时器模式// 定时器清0// 看门狗定时器时钟/(2^13) = 32768 / 8192 = 4Hz (250ms)WDTCTL = WDTPW + WDTSSEL__ACLK + WDTTMSEL + WDTCNTCL + WDTIS2 + WDTIS0;SFRIE1 |= WDTIE; // 允许 WDT 中断// 选择 REFO (内部校准的低频振荡器, 典型频率为32.768 kHz): 作为 ACLK SMCLK MCLKUCSCTL4 = SELA__REFOCLK | SELS__REFOCLK | SELM__REFOCLK;// PORT 3 : P3.7 P3.6 P3.5 P3.4用作流水灯输出, 管脚功能:I/O 模式:输出P3SEL = 0;P3DIR = 0xf0;P3OUT = 0xf0;// 中断总使能__bis_SR_register(GIE);LampValue = 0x10;while(1);
}/**********************************************************
* Watchdog 中断服务程序
**********************************************************/
#pragma vector=WDT_VECTOR
__interrupt void WDT_ISR(void)
{P3OUT = ~LampValue;LampValue = LampValue<<1;if (LampValue == 0x00) LampValue = 0x10;
}
MSP430 5xx/6xx Watchdog看门狗编程实例相关推荐
- MSP430 5xx/6xx系列 低频振荡器VLO编程实例(源码+电路)
MSP430 5xx/6xx系列内部VLO提供10 kHz的典型频率(参数见芯片的特定数据表),无需晶体.VLO为不需要精确时基的应用提供了一个低成本的超低功耗时钟源. 本实例示范如何使用VLO,并将 ...
- MSP430 5xx/6xx 以REFO或XT1为时钟源的DCO编程实例
当MSP430 5xx/6xx 系列外部接入32768Hz的低频晶振时,满足不了需要高速运行的应用.所以需要通过MCU内部的DCO(数字控制振荡器)和FLL(锁相环)将低速时钟32768Hz进行倍频, ...
- 什么是看门狗(watchdog)?看门狗有什么作用?
什么是看门狗(watchdog) 看门狗,又叫 watchdog timer,是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂 ...
- Android system server之WatchDog看门狗分析
android -- WatchDog看门狗分析 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系 ...
- MSP430 5xx/6xx 定时器A增计数模式编程实例
Timer_A是一个16位定时器/计数器,最多有7个捕获/比较寄存器.Timer_A可支持多个捕获/比较.PWM输出和间隔定时.Timer_A还具有广泛的中断功能.计数器的溢出和每个捕获/比较寄存器都 ...
- AURIX TC397 SCU 之 Watchdog 看门狗
目录 看门狗基础 TC397 Watchdog 微信公众号 看门狗基础 文档参阅 TC3XX User Manual 的9.4节, 看门狗Watchdog Timers (WDT)是System Co ...
- ESP32学习笔记(40)——Watchdog看门狗使用
一.简介 看门狗其实就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新回复到系统刚上电状态,以保障系统出问题的时候可以重启一次.说的复杂一点,看门狗就是能让 ...
- Linux Watchdog/看门狗
Watchdog timer(看门狗定时器)是一种电子计时器,其用于检测和恢复计算机故障.在正常操作期间,计算机定期重置看门狗定时器以防止它"超时".如果由于硬件故障或程序错误,计 ...
- NRF52832学习笔记(31)——Watchdog看门狗使用
一.简介 看门狗定时器(WDT: Watchdog Timer)的作用是在发生软件故障时(如程序陷入死循环或者程序跑飞),强制复位单片机,让单片机重新运行程序. 看门狗定时器本质上是一个计数器,只不过 ...
最新文章
- 黄聪:IE6下css大bug:文字神秘消失,鼠标选择了才出现
- LOJ#2302 整数
- 深入浅出Android App耗电量统计
- java 服务器长链接_Java如何实现长连接
- [javascript] Date 时间精确到天
- 计算机二级考试题停车收费,计算机二级考试真题-Excel-停车场调整收费标准
- spring处理循环依赖时序图_spring--解决循环依赖
- 算法设计分析(44页)
- Java se 基础
- vnc远程,在windows下如何实现vnc远程
- 小白 Linux 云计算怎么学,都要学什么?---超详细---
- 基因组时代线粒体基因组拼装策略及软件应用现状
- IE浏览器地址栏输入中文乱码问题
- 静态模型,动态模型!
- 算法岗面经总结(新华智云-北京)
- 移动app手机物理键返回、后退、上一页面并重新加载页面数据
- SVN Commit的时候提示Unexpected HTTP status 413 'Request Entity Too Large' on xxxx
- linux环境变量设置图解,Ubuntu Linux 各个环境变量配置文件详解, 环境变量PATH设置...
- bat启动cmd,超级管理员
- 大数据知识点归纳总结