This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

msp430的时钟设置,延时

Other Parts Discussed in Thread: MSP430G2553

#include  <msp430g2553.h>

void main(void)

{

 volatile unsigned int i;

 volatile unsigned int j;

 WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT

 P1DIR |= 0x01;                            // P1.0 output

 while(1)

 {

   P1OUT ^= 0x01;

   for(i=32768;i>0;i--);                   // Delay

 }

}

请问老师,这程序默认的时钟频率是多少?如果是32768hz,要想led灯1s闪一次是不是就是把i设成32768然后进行循环?

  • 这个程序的默认主时钟是来自DCO,大概为~1.1MHz。

  • 这些信息都是可以从数据手册中找到的,希望楼主有空的时候阅读一下数据手册,会对您有所帮助的。

  • 1.按照默认的来,在3V供电时,是在0.8MHz-1.5MHz之间;

    2.for循环不是单周期的,所以如果32768HZ,i=32768,有可能延时成了好几秒

    3.如果需要较精确的定时,最好使用定时器中断,需要注意的是定时周期需要减掉进出中断和中断处理的时间,可保证精度这1-2个CPU cycle

    4.还有一个方法,用定时器中断来数定时1S时for循环进行了多少次,然后将这个次数写成i,这也是比较精确且简单的方法,适合在不使用中断的应用中。