在网上搜到msp430g2553(20pin)可以实现5路不同的pwm输出,分别是TA0.0,TA0.1,TA1.0,TA1.1,TA1.2,自己实践发现TA0.1,TA1.1,TA1.2可以做出来 ,但是对于TA0.0和TA1.0,怎么写程序使其实现pwm信号输出呢?
程序我只知道做如下设置,后面就不知道怎么写了,注释部分是实现T0.1 pwm输出的代码,假如我想让TA0.0实现50%的pwm输出,应该如何写,在此向各位大神请教。
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= BIT1; // P1.1output
P1SEL |= BIT1;
CCR0 = 512-1; // PWM Period
//CCTL1 = OUTMOD_7; // CCR1 reset/set
//CCR1 = 256;
//TACTL = TASSEL_1 + MC_1; // ACLK, up mode
HG:
一般会用一个timer两个channel来实现,一个控制周期,一个控制占空比。
int main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x0C; // P1.2 and P1.3 output P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 options CCR0 = 512-1; // PWM Period CCTL1 = OUTMOD_7; // CCR1 reset/set CCR1 = 384; // CCR1 PWM duty cycle TACTL = TASSEL_2 + MC_1; // SMCLK, up mode
__bis_SR_register(CPUOFF); // Enter LPM0}
上面这个程序就是CCR0控制周期,CCR1控制占空比,实现75%的PWM,从P1.2输出,TIMER工作在UP模式。
Clark Fu1:
回复 HG:
人家问TA0.0上怎么输出WM,TA0.1上已经实现了PWM输出,你现在告诉人家TA0.1上怎么输出,麻烦你回答一下G2553上怎么实现TA0.0输出。上面的回答不仅浪费了自己的时间同时也浪费公共资源。