利用MSP430G2553 4路PWM输出产生,在不打开GIE的时候IO引脚输出正常但是打开GIE中断后输出不正常,具体程序如下:
void Timer0A3PWM()
{
P1DIR |=0x66 ; // 0110 0110
P1SEL |=0x66 ; // 0110 0110
TACTL |= TASSEL_2 + MC_1 ; // TACTL=TA0CTL 时钟源选择SMCLK MCLK=SMCLK=TACLK=default DCO 增计数模式
TACCTL0 |= OUTMOD_4; //模式4是toggle翻转模式 计数达到TACCR0输出翻转 占空比50%
TACCTL1 |= OUTMOD_7; //模式7是reset/set模式 计数达到TACCR1输出0 TACCR0输出1
TACCR0 = 120-1; //模式4周期的一半 模式7的整周期PWM的周期是120
TACCR1 = 60; //模式7的占空比 PWM的初值为60 此时的占空比为50%
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
Timer0A3PWM();
// _BIS_SR(LPM0_bits+ GIE ); // Enter LPM0 w/ interrupt 中断使能后也不正常!
_BIS_SR(LPM0_bits ); //不打开中断都正常
while (1);
}