与51、AVR等单片机不同msp430的时钟信号源有LFXT1,XT2,DCO三种。
1、LFXT1:可接高速和低速晶振,在低速形式下,它能够外接32k的晶振而不需要负载电容,这种方法较为常见首要用来为ACLK供给低速的时钟信号,以供低速外设运用。
2、XT2:高速振动器,它能够接一个0.4~16M的晶振,它相当于高速形式下的LFXT1。一般将它装备成一个高速的振动源,为MCLK何SMCLK供给高速时钟信号。
3、DCO:内部数字控制振动器,它的频率能够经过DCOCLK进行装备。在体系PUC之后,DCOx=7,MODx=3,表明挑选了最高的频率。
前面介绍了MSP430中有三个个时钟信号源,MSP430的时钟信号也有三种主时钟MCLK,子体系时钟SMCLK,辅佐时钟ACLK。
其间MCLK是用给体系运用的,SMCLK用给高速外设运用的,而ACLK首要用给低速外设运用。
在体系PUC之后,默许SMCLK与MCLK都以DCO作为时钟源,震动频率在1.1M左右,ACLK以LFXT1作为时钟源,作业在LF形式下内部6pF的负载电容。
一般情况下挑选XT2作为主时钟,时钟模块初始化程序如下:
WDTCTL=WDTPW+WDTHOLD;//封闭看门狗
/*——挑选体系主时钟为8MHz——-*/
BCSCTL1&=~XT2OFF;//翻开XT2高频晶体振动器
do
{
IFG1&=~OFIFG;//铲除晶振失利标志
for(i=0xFF;i》0;i–);//等候8MHz晶体起振
}
while((IFG1&OFIFG));//晶振失效标志依然存在?
BCSCTL2|=SELM_2+SELS;//主时钟和从时钟都挑选高频晶振
……………………………………………………。
留意:a.最好将IFG1&=~OFIFG;放入do –while循环中,我调了好一阵程序,发现IFG1好像置位之
后不能主动复位。
b.在XT2呈现过错的情况下将XT2设定为MCLK SMCLK的时钟源,单片时机主动的把时钟源替换
为DCO振动器。当时钟信号丢掉50us时,振动器失效。假如MCLK信号来自LFXT1或许XT2,
那么MSP430主动把MCLK的信号切换为DCO,这样能够确保程序持续运转。MSP430不对低频
形式的LFXT1进行监测。
b.BCSCTL2=SELM_2+SELS;句子有必要放在while之后,由于当XT2没有起振之前,XT2处于过错
阶段,因此在XT2没有起振之前将它设定为主时钟与子体系时钟后,单片时机主动的将DCO
设定为SMCLK MCLK的时钟源。