功能:定时器A P1.2 P1.3 输出PWM波形,定时器B定时1s,每隔1秒,就改变一次定时器A的占空比。
问题:但是,示波器显示,定时器A输出的PWM的占空比一直是不变的。
我的分析:不知道是没有进入定时器B的中断, 还是进入了中断,但改变CCR1 CCR2的方法不正确
#include <msp430x14x.h>
void mcu_init(void) { WDTCTL = WDTPW + WDTHOLD;
//定时器A的初始化 P1DIR |= 0x0C; // P1.2 and P1.3 P1SEL |= 0x0C; // P1.2 and P1.3 TACTL = TASSEL1 + TACLR; / /SMCLK TACCR0 = 1000; TACCTL1 = OUTMOD_7 ; TACCR1 = 500; TACCTL2 = OUTMOD_7 ; TACCR2 = 500; TACTL |= MC_1;
//定时器B的初始化
TBCTL=TBSSEL0+TBCLR; TBCCTL0=CCIE;//CCR0中断允许 TBCCR0=32768; _EINT(); }
void main(void) { mcu_init(); while(1); }
#pragma vector=TIMERB0_VECTOR __interrupt void Timer_B (void) { TACCR0 = 1000; //保持ccr0不变 TACCR1 += 100; //改变ccr1,以改变占空比 if(TACCR1==900) TACCR1 = 100; TACCR2 -= 100; //改变ccr2,以改变占空比 if(TACCR2 == 200) TACCR2 = 900; }
[ 本帖最后由 江汉大学南瓜 于 2011-7-11 10:38 编辑 ]
|