关于430外接晶振的问题
430上电复位后默认为DCO作为系统时钟,那么如果430外部不接任何晶振(低频和高频都不接)的话,430能工作吗?求高人指点。 可以的 我刚把430外部晶振拔掉了,用系统默认的800K频率使看门狗定时中断,看门狗中断进不去? /**********************************************测试看门狗的中断的两种方式 定时器方式等同于其他定时中断
效果,看门狗方式为看门狗时间到系统复位所有IO口为输入方式灯灭
**********************************************/
#include<msp430x14x.h>
/**************函数声明*******/
void setWDT(int mode);
/************************************
函数功能:利用看门狗两种中断方式实现LED灯闪烁
函数原型:void setWDT(int mode);
输入参数:模式选择变量(0为看门狗模式、1为看门狗定时中断模式)
输出参数:无
************************************/
void setWDT(int mode)
{
unsigned int tmp;
if(mode==1)
{
//WDTCTL=WDT_MDLY_32;//定时周期32ms
WDTCTL=WDT_ADLY_1000;//250MS中断间隔
IE1|=WDTIE;//使能WDT中断
P5DIR|=0X02;//P5.1输出模式
_EINT();//总中断
}
if(mode==0)//看门狗模式
{
WDTCTL=WDT_ARST_250;//设置看门狗时间间隔为250ms
for(tmp=0x7fff;tmp>0;tmp--);//延时
P5DIR|=0X02;//P5.1输出模式
P5OUT|=0X02;//p5.1输出高电平
for(tmp=0x7fff;tmp>0;tmp--);//保持高电平时间
}
}
void main()
{
// _BIS_SR(CPUOFF);//LPM0耗电模式
setWDT(1);
while(1)
{
_BIS_SR(CPUOFF);//LPM0耗电模式
_NOP();
}
}
/**********看门狗中断入口***********/
#pragma vector=WDT_VECTOR
__interrupt void watctdog_timer()
{
P5OUT^=0X02;//P5.1取反
} /* WDT is clocked by fACLK (assumed 32KHz) */
#define WDT_ADLY_1000 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL) /* 1000ms" */
#define WDT_ADLY_250 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0) /* 250ms " */
#define WDT_ADLY_16 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1) /* 16ms " */
#define WDT_ADLY_1_9 (WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0) /* 1.9ms " */
WDT_ADLY_1000 是选用外部32时钟做时钟源,去掉当然不工作了
可以用系统时钟模式延时
/* WDT is clocked by fSMCLK (assumed 1MHz) */
#define WDT_MDLY_32 (WDTPW+WDTTMSEL+WDTCNTCL) /* 32ms interval (default) */
#define WDT_MDLY_8 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0) /* 8ms " */
#define WDT_MDLY_0_5 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1) /* 0.5ms " */
#define WDT_MDLY_0_064 (WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0) /* 0.064ms " */ 要是不接外部时钟,需要注意的是如果用单片机内部模块,比如定时器、UART等,就不要选用外部时钟做时钟源了 哦还是头文件没有看懂啊,谢谢。
页:
[1]