longxiang 发表于 2011-8-16 09:35:31

msp430 片内时钟输出

我是看视频写的这段代码,怎么用示波器观察的时候,并没有输出时钟,请高手指教,代码如下:
#include<msp430x24x.h>

void main(void)
{
    WDTCTL = WDTPW + WDTHOLD; //stop watch dog 0x5a80
    DCOCTL = DCO0 + DCO1 + DCO2;
    BCSCTL1 = RSEL0 + RSEL1 + RSEL2;//nominal frequence
    BCSCTL2 |= SELS;//select the SMCLK sourse 0== DCOCLK;1== XT2CLK
    P4DIR |= BIT0;
    P4OUT |= BIT0;
    P5DIR |= BIT4|BIT5|BIT6;
    P5SEL |= BIT4|BIT5|BIT6;
    while(1);
}

yylooker 发表于 2011-8-16 13:05:42

你想测到什么?
从程序来看,你用的是DCO振荡器,频率最高的那种设置,然后没有XT1,没有XT2,就是没有启动外接晶振。
但是BCSCTL2 |= SELS把 SMCLK时钟源设成了XT2,这样的话你就算把P5相关阵脚设成外部模块(时钟输出),SMCLK输出阵脚不可能有时钟输出啊!!而ACLK一定是XT1时钟源,你同样也没有。。。。。
而P5的MCLK阵脚,是主时钟输入,而不是输出,你同样测不到。。

建议把 BCSCTL2 |= SELS直接删掉,程序默认SMCLK时钟源是DCO,这样测P5的SMCLK阵脚应该有6-10M左右的频率了。

hck2llj 发表于 2011-8-17 13:51:28

我刚试了一下,你的代码是没问题的。但是我之前刚做的两块底板只能检测到DCO的波形,郁闷ing,检查一下硬件吧

hck2llj 发表于 2011-8-17 13:56:12

现在还剩主时钟没有起振了,可能振荡电容拿错了……

rengo 发表于 2011-8-17 15:02:21

高速晶体没起振
你设的xt2
BCSCTL2 |= SELS;
必须启动高速晶体
//开启高速晶振
BCSCTL1 &= ~XT2OFF;                     // Activate XT2 high freq xtal
BCSCTL3 |= XT2S_2;                        // 3 ?16MHz crystal or resonator

do
{
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
    for (i = 0xFF; i > 0; i--);             // Time for flag to set
}
while (IFG1 & OFIFG);                     // OSCFault flag still set?

hck2llj 发表于 2011-8-17 15:09:20

原来是电容的问题,把33pF换成22pF后能正常起振了,楼上的代码也可行,顶一个

pangfuhua 发表于 2011-11-5 12:55:54

对,之前我用51时也是电容太大,起振不了
页: [1]
查看完整版本: msp430 片内时钟输出