关于MSP430G2553的DCO频率的精度问题

2019-03-24 13:28发布

求高手解释一下。我现在要做一个测高频的频率计,需要用到1ms的延时,测这1ms的脉冲个数,但是计出的结果有很大误差,我怀疑是内部的DCO晶振不准
  是不是launchpad不能外接晶振?怎么计到比较准的频率?我用得是DCO  8MHz频率,我的延时程序如下:
#define CPU_F                               ((double)8000000)
#define delay_us(x)                       __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x)                       __delay_cycles((long)(CPU_F*(double)x/1000.0)) 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
ccstc
2019-03-25 16:45
  1. #include  

  2. void main(void)
  3. {
  4.   WDTCTL = WDTPW +WDTHOLD;                  // Stop Watchdog Timer
  5.   if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)                                    
  6.   {  
  7.     while(1);                               // If calibration constants erased
  8.                                             // do not load, trap CPU!!
  9.   }
  10. //1Mhz
  11.   BCSCTL1 = CALBC1_1MHZ;                    // Set range
  12.   DCOCTL = CALDCO_1MHZ;                     // Set DCO step + modulation */

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

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

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

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

  24.   while(1)
  25.   {
  26.     P1OUT |= 0x02;                                // P1.1 = 1
  27.     P1OUT &= ~0x02;                         // P1.1 = 0
  28.   }
  29. }
复制代码我试下来,8M的更准一些
6楼的应该没有包含头文件所以出错了
其实这些东西在TI产品页面的Code Example里面都有的

一周热门 更多>

相关问题

    相关文章