工具/软件:Code Composer Studio
大家好、有人能给我一个使用 TimerA 通过中断生成 PWM 的示例吗?
我的代码继续标记 CCR0中断。
// MSP430G2553
//----------
//| |
//| |
//| P1.3/TA1|--> PWM
//
int main (空)
{
WDTCTL = WDTPW + WDTHOLD;//停止 WDT
P1DIR |= BIT3;//计时器的 PWM 输出
TA1CCR0 = 100;//frequency
TA1CCR1 = 50;//占空比
TA1CCTL0 |= CCIE + OUTMOD_7;//启用 TBCCR0中断
TA1CCTL1 |= CCIE + OUTMOD_7;//启用 TBCCR0中断
_bis_SR_register (GIE);//输入 LPM0、启用中断
while (1){}
#pragma vector=Timer1_A0_vector
_interrupt void Timer1_A0_ISR (void)
{
P1OUT |= BIT3;
}
#pragma vector=Timer1_A1_vector
_interrupt void Timer1_A1_ISR (void)
{
/*任何对 TBIV 寄存器的访问、读取或写入都会自动复位
最高"挂起"中断标志。 *
switch (__even_in_range (TA1IV、14))
{
情况0:中断;//无中断
案例2:
P1OUT &=~BIT3;//结束 PWM
中断;
案例4:
中断;
案例6:中断;//未使用 CCR3
案例8:中断;//未使用 CCR4
案例10:中断;//未使用 CCR5
情况12:中断;//未使用 CCR6
案例14://溢出
中断;
默认值:break;
}
}
抱歉、未格式化的代码。 希望有道理。
谢谢、
Scott