MSP430单片机实例15-看门狗定时器定时应用
[复制链接]
一、任务要求
利用MSP30F247单片机的看门狗定时器产生设定的时间间隔中断,在中断服务程序中切换LED灯的亮灭状态,点亮1S,熄灭1S。
二、分析说明
看门狗定时器的时钟源只有ACLK和SMCLK两种,4种分频值,只能实现几种简单的定时间隔中断。
三、硬件电路
选取MSP430F247单片机的P4.1连接一个LED灯,同时用虚拟示波器观察引脚电平变换频率,低频晶振采用32768Hz的晶振,获得稳定的ACLK时钟。XT2接8MHz晶振,用两个22pF的匹配电容,供MCLK,SMCLK时钟。一般发光二级管的管压降约为1.8~2.2V,电流5~10mA,本例限流电阻选为300欧姆。。
四、程序设计
#include "msp430f247.h"
#include "stdlib.h"
#include "string.h"
/*****************************************软件延时,主频1M*******************/
#define CPU_F1 ((double)1000000)
#define delay_us1M(x) __delay_cycles((long)(CPU_F1*(double)x/1000000.0))
#define delay_ms1M(x) __delay_cycles((long)(CPU_F1*(double)x/1000.0))
/****************************************************************************/
/************************************************
函数名称:主函数
函数功能:看门狗定时器应用
入口参数:无
出口参数:无
************************************************/
main()
{
//WDTCTL = WDT_MDLY_32;
WDTCTL=WDT_ADLY_1000;;//看门狗 定时时间间隔1S
_EINT();
IE1 |= WDTIE;//允许WDT中断
P4DIR=0x01;//P4.0输出
while(1)
{
_BIS_SR(LPM3_bits);//进入LPM3低功耗模式,总中断允许
_NOP();
}
}
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)//看门狗中断服务程序
{
P4OUT ^= 0x01;//P4.0输出取反
_NOP();
}
五、程序说明
看门狗定时器时钟源选择ACLK,分频系数为32768,所以得到1S的定时时间间隔。P4.0设为输出方式,主循环进入LPM3低功耗模式。
注意设置单片机的属性中的ACLK时钟的频率。
|