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.

MSP430g2553



怎么用ccs软件产生一个占空比可调的程序?

1.void Generator_pwm(int  Frequency, unsigned char Duty_precent )

Generator_pwm(1000, 80)

2 int PWM_Measure(void)

//测量返回值是以微妙为单位的正数

main()

 

  • 楼主,

       你是要实现两个函数吗?PWM产生请参考下面的代码(P2.6产生PWM波),再把它编成函数;PWM测量是测量周期吗?

    #include <msp430.h>

     

    int main(void)

    {

      WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

      P2DIR |= 0x40;

      P2SEL |= 0x40;

      P2SEL &= ~0x80;

      P2SEL2&=~0xC0; 

      TA0CCR0 = 512-1;                             // PWM Period

      TA0CCTL1 = OUTMOD_7;                         // CCR1 reset/set

      TA0CCR1 = 384;                               // CCR1 PWM duty cycle

      TA0CTL = TASSEL_2 + MC_1;                  // SMCLK, up mode

     

    // _BIS_SR(CPUOFF);                          // Enter LPM0

       While(1)

      {

     

      }

    }

  • 使用任何一个timer均可以实现,始终频率越高,分辨率越高。

  • 你好,

    你要明确PWM的频率是多少,光光只是产生一路PWM可调没有太多价值。

    首先你要确定MCU系统时钟。

    然后根据调整TA0CCR0 控制PWM频率。

    利用CCR1控制占空比周期。

    通过选择硬件PWM模式,再做输出。

    这样做才有逻辑。

    int main(void)

    {

      WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

      BCSCTL1 = CALBC1_1MHZ;                // Set range

      DCOCTL = CALDCO_1MHZ;                //设置DCO模式

      P2DIR |= 0x40;

      P2SEL |= 0x40;

      P2SEL &= ~0x80;

      P2SEL2&=~0xC0; 

      TA0CCR0 = 512-1;                                      // PWM Period

      TA0CCTL1 = OUTMOD_7;                         // CCR1 reset/set

      TA0CCR1 = 384;                               // CCR1 PWM duty cycle

      TA0CTL = TASSEL_2 + MC_1;                  // SMCLK, up mode

     

    // _BIS_SR(CPUOFF);                          // Enter LPM0

       While(1);

    }

  • 谢谢啦,我是初学者想问一下

    BCSCTL1 = CALBC1_1MHZ;                // Set range

      DCOCTL = CALDCO_1MHZ;                //设置DCO模式

    是什么意思??

  • 你好,

    这是专门用来设置内部DCO时钟,G2xx系列MCU你也知道,是不支持外部高频晶振的,一般用内部的DCO时钟,DCO时钟出厂前,我们有把校准数据存放于information memory。CALBC1_1MHZ和CALDCO_1MHZ是直接读取校准的1M时钟数据给BCSCTL1和DCOCTL寄存器。

    这样DCO时钟就是1M HZ 了!

  • P2SEL &= ~0x80;

      P2SEL2&=~0xC0; 

    这两句是什么意思呢,设置一个输出就可以啊