本帖最后由 杜专 于 2012-6-21 17:49 编辑
使用MSP430f5527 我配置外部晶振 发现MCLK 脚上面是一个1M频率输出
我的情况是这样的
外部晶振16M 程序选择外部晶振 不分频, MCLK = SMCLK = X2 ACLK = 32khz
我现在想得到 MCLK 是16MHZ 我用P7.7脚做MCLK 脚输出测试 用示波器测试发现 P7.7 MCLK 脚只有1M 频率输出
麻烦大家帮我看一下
下面是我的代码
/* 外部16M */
P7DIR |= 0x80;// 测试MCLK 主时钟
P7SEL |= 0x80;
P5SEL |= 0x0C; // Port select XT2
//UCSCTL2 = 0x00;
UCSCTL3 |= SELREF_2; // FLLref = REFO
// Since LFXT1 is not used,
// sourcing FLL with LFXT1 can cause
// XT1OFFG flag to set
UCSCTL4 |= SELA_2; //refclk 32768hz // ACLK=REFO,SMCLK=DCO,MCLK=DCO
//UCSCTL4 |= SELA_5; //不能一开始将ACLK配置成外部不X2
// Loop until XT1,XT2 & DCO stabilizes
do
{
// UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); XT1HFOFFG??
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
// Clear XT2,XT1,DCO fault flags
SFRIFG1 &= ~OFIFG; // Clear fault flags
for(i=0;i<0xFFFF;i++); // Delay for Osc to stabilize
}while (SFRIFG1&OFIFG); // Test oscillator fault flag
//UCSCTL6 &= ~XT2DRIVE0; // Decrease XT2 Drive according to
//UCSCTL6 |=XCAP_3;
//UCSCTL6 &= ~(XT1OFF+XT2OFF); //XT1、XT2打开
//UCSCTL6 &= ~(XT2DRIVE0 + XT2DRIVE1); //
//UCSCTL6 |= XT2DRIVE1; //XT2的驱动力
/////////////////////
UCSCTL6 = 0XC1CD;
//__no_operation(); // expected frequency
//UCSCTL4 |=SELA_5+ SELS_5 + SELM_5;
// UCSCTL5 |= DIVS_1; // SMCLK/2=8Mhz
UCSCTL4 |= SELS_5 + SELM_5; // SMCLK=MCLK=XT2
//UCSCTL5 = 0
这个是我 仿真器仿真的时候 USC寄存器表 |