msp430f5529的官方代码的疑惑

2019-03-24 11:12发布

 使用此程序后是这个结果:ACLK = REFO = 32.768kHz, MCLK = SMCLK = Default 1MHz include <msp430f5529.h> void main(void)
{
  volatile unsigned int i;   WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
  P1DIR |= BIT1;                            // P1.1 output   P1DIR |= BIT0;                            // ACLK set out to pins
  P1SEL |= BIT0;                           
  P2DIR |= BIT2;                            // SMCLK set out to pins
  P2SEL |= BIT2;                           
  P7DIR |= BIT7;                            // MCLK set out to pins
  P7SEL |= BIT7;                                while(1)
  {
    P1OUT ^= BIT1;
    __delay_cycles(60000);                  // Delay
  }
} 但问题是为什么会有这个结果呢?ACLK = REFO = 32.768kHz, MCLK = SMCLK = Default 1MHz (字节限制,只好分开提问了) 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
ckx提问
1楼-- · 2019-03-24 17:38

然后,我从网上查到资料:
在上电清除信号(PUC)之后,UCS模块的默认配置是:
XT1 低频模式被选择为XT1CLK时钟的振荡器。XT1CLK被选择为ACLK的时钟源。
•DCOCLKDIV作为MCLK的时钟源。
•DCOCLKDIV作为SMCLK的时钟源。
•FLL(锁频环)运行被使能,XT1CLK作为FLL参考时钟,即FLLREFCLK
•XIN和XOUT引脚被设置为通用IO时,XT1保持禁能直到IO口置为XT1操作模式。
•如果XT2IN和XT2OUT引脚被设置为通用IO,XT2被禁能。
在初始状态,FLL以XT1为参考时钟的运行默认使能,但XT1被禁止。要使能XT1,相应管脚的PSEL位必须置位。

当一个32.768KHz的晶振用作XT1CLK时,出错的控制逻辑电路直接造成REFOCLK作为ACLK的时钟源,因为XT1不会立即稳定。一旦振荡开始信号被获取到了,FLL就使MCLK和SMCLK稳定到1.048576MHz,f(DCO)=2.097152MHz。
状态寄存器控制位(SCG0,SCG1,OSCOFF和CPUOFF)配置MSP430的运行模式,还使能或禁能UCS模块的部分功能(参考系统复位,中断,运行模式等章节)。寄存器UCSCTL0到UCSCTL8配置UCS模块。

 

 

但,这里我疑惑不解的是这句“因为XT1不会立即稳定。一旦振荡开始信号被获取到了,FLL就使MCLK和SMCLK稳定到1.048576MHz

这是为什么?

ckx提问
2楼-- · 2019-03-24 21:22
 精彩回答 2  元偷偷看……
ckx提问
3楼-- · 2019-03-25 02:39
鸵鸟蝈蝈 回答

您好,


PUC后,XT1是disable的,直到XT1的两个引脚被配置为XT1模式后才enable,所以需要有以下的程序配置:

// Set up XT1

P5SEL |= BIT4+BIT5;                       // Select XT1

UCSCTL6 &= ~(XT1OFF);                     // XT1 On

UCSCTL6 |= XCAP_3;                        // Internal load cap

默认情况下,XT1CLK作为FLL参考时钟,即FLLREFCLK。但是MSP430的UCS中有fail-safe机制,即当外部晶体出错的时候,那么自动切换到内部的振荡器,比如REFOCLK。在上电后,会有一个XT1LFOFFG,所以FLLREFCLK就自动切换到REFOCLK来驱动。

默认情况下,n=1,N=31,FLLREFCLK=REFOCLK=32.768KHz,DCOCLKDIV 所以能够计算出大概是1048576Hz

“XIN和XOUT引脚被设置为通用IO时,XT1保持禁能直到IO口置为XT1操作模式。”这句话翻译是有问题的!加了一个“时”字,让人完全糊涂了。所以建议您参考英文的User's Guide。

希望对您有所帮助!
leoandaries
4楼-- · 2019-03-25 08:31
官网例程在哪找的啊?我没找到呢
aaw45w4
5楼-- · 2019-03-25 10:42
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章