msp430f235的MCLK、SMCLK、ACLK时钟信号输出问题

2019-08-03 21:13发布

430.jpg 图1    输出.jpg   图2
各位430单片机的大咖们:
     你们好,小弟刚刚开始学习430单片机,很多东西还不是很理解,在此请教你们一些问题。
     图1是我用proteus仿真设计的一个简单电路图,仿真的目的是想用示波器测量MCLK、SMCLK以及ACLK的频率,看看这些频率是否与我设置的时钟源的频率一致。但是不知道为什么,仿真时用示波器测量3个时钟信号,输出都是低电平,实验结果如图2所示。
     程序为:
#include <msp430f235.h>
void clock_init();
void port_init();

/**************************************************/
//               main program                      //
/**************************************************/
void main( void )
{
  WDTCTL = WDTPW + WDTHOLD;            // Stop watchdog timer to prevent time out reset
  clock_init();
  port_init();
  for(;;);
}

/**************************************************/
//               port initiallize program          //
/**************************************************/
void port_init()
{
  P5DIR |=BIT4+BIT5+BIT6;                   //Set P5.4 P5.5 P5.6 output
  P5SEL |=BIT4+BIT5+BIT6;                   //P5.4=MCLK,P5.5=SMCLK,P5.6=ACLK
}

/**************************************************/
//              clock initiallize program         //
/**************************************************/
void clock_init()
{
  DCOCTL |=DCO0+DCO1;                          //设置DCO模式
  BCSCTL1 |=XT2OFF+RSEL2+RSEL1+RSEL0;
  BCSCTL2 |=DIVM_3+DIVS_2;                     //f(MCLK)=f(DCO)/8; f(SMCLK)=f(DCO)/4; f(ACLK)=f(XT1);
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
myselfzhangji
2019-08-05 03:50
myselfzhangji 发表于 2014-7-14 20:48
既然可以回答430的相关问题的,在我面前就是大神了,或者至少是前辈了,哈哈!。
我现在仔细看了 ...

#include  <msp430g2553.h>

void main(void)
{
  WDTCTL = WDTPW +WDTHOLD;                  // Stop Watchdog Timer
  if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)                                    
  {  
    while(1);                               // If calibration constants erased
                                            // do not load, trap CPU!!
  }
//1Mhz
  BCSCTL1 = CALBC1_1MHZ;                    // Set range
  DCOCTL = CALDCO_1MHZ;                     // Set DCO step + modulation */

/* //8Mhz
  BCSCTL1 = CALBC1_8MHZ;                    // Set range
  DCOCTL = CALDCO_8MHZ;                     // Set DCO step + modulation */

/* //12Mhz
  BCSCTL1 = CALBC1_12MHZ;                   // Set range
  DCOCTL = CALDCO_12MHZ;                    // Set DCO step + modulation*/

/* //16Mhz
  BCSCTL1 = CALBC1_16MHZ;                   // Set range
  DCOCTL = CALDCO_16MHZ;                    // Set DCO step + modulation*/

  P1DIR |= 0x13;                            // P1.0,1 and P1.4 outputs
  P1SEL |= 0x11;                            // P1.0,4 ACLK, SMCLK output

  while(1)
  {
    P1OUT |= 0x02;                                // P1.1 = 1
    P1OUT &= ~0x02;                         // P1.1 = 0
  }
}

你好,我看了一下TI官网的程序,对比一下我的程序,我发现应该就是最后的while(1)循环不一样,请问这个while(1)循环里是什么意思,不明白,请指教!

一周热门 更多>