我使用XT2IN,XT2OUT作为晶振输入,频率8Mhz.只有这一个晶振源,用示波器可以看到125nS震荡信号,通过设置,我可以使SMCLK得到125ns,但是无论怎样设置,MCLK却始终无法得到125ns,这是什么原因?
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
DCOCTL |= 0xe0;
BCSCTL1 = 0x0c7; //1100 0111 XT2on
//BCSCTL1 = 0x47; //0100 0111 XT2on
//BCSCTL2 = 0x88; //1000 1000
BCSCTL2 = 0x00; //0000 0000
注释掉的部分是我试图使SMCLK/MCLK时钟源都从XT2获得,而实际上只有SMCLK得到了。未注释掉的则是现在关掉XT2,得到时钟频率约为4.76mhz,这是用示波器测量得到的
用下面的程序试试:
#include <msp430x14x.h>
void main(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P5DIR |= 0x10; // P5.4= output direction
P5SEL |= 0x10; // P5.4= MCLK option select
BCSCTL1 &= ~XT2OFF; // XT2= HF XTAL
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?
BCSCTL2 |= SELM_2; // MCLK= XT2 (safe)
for (;;); // Do nothing
}
“P5DIR |= 0x10; // P5.4= output direction
P5SEL |= 0x10; // P5.4= MCLK option select”
lsdfae04,为什么要用到这两句呢?
这好像与选择XT2作为MCLK没有什么必然联系吧?
请指教!谢谢
是用P5.4的第二功能
P5.4的第二功能是MCLK的输出
P5.4的第二功能是MCLK的输出,这样就可以测试MCLK了。
你是用什么方法测得MCLK的?不是通过P5.4吗?