我采用CCR1.CCR2.CCR0产生了pwm波 ,但是 这样的话 定时器中断函数无法进入 。
单独采用CCR0,不使用CCR1,CCR2,定时器可以进入中断函数。
想请问是哪个地方配置错误了呢?。
代码如下:
#include "io430.h"
/*定时器输出单元举例:
ACLK时钟频率为LFXT1=32768Hz,利用Timer_A输出周期为512/32768
=15.625ms,占空比分别为75%和25%的PWM波
*/
int flag=0;
int i=0;
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
//Initialize
P4DIR |= BIT7; //将4.7设为输出 led
P4OUT^= BIT7;
P1DIR |= BIT0;
P1OUT |= BIT0;
P1SEL |= BIT2; //从P1.2输出
P1DIR |= BIT2;
P1SEL |= BIT3; //从P1.3输出
P1DIR |= BIT3;
TA0CTL=TASSEL_1+TACLR;
TA0CCTL0 = CCIE;
TA0CCR0=512-1;//PWM周期
TA0CCTL1=OUTMOD_7;
TA0CCR1=384;//384/512=0.75
TA0CCTL2=OUTMOD_7;
TA0CCR2=128;//占空比128/512=0.25
TA0CTL|=MC_1;//增计数模式
__enable_interrupt();//打开总中断
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, enable interrupts
}
#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A0(void)
{ i=i+1;
if(i==100)
{i=0;
P4OUT ^= BIT7;
}
}