This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2633:启动 PWM 计时器时系统无响应

Guru**** 2386610 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/929238/msp430fr2633-system-no-response-when-start-pwm-timer

器件型号:MSP430FR2633

大家好、

我使用 Timer1_A3在 P1.0上生成 PWM 信号。

由于 P1.0不是 PWM 输出引脚、我打开/关闭中断服务例程中的 LED。

系统在 PWM 计时器启动时挂起。

它是否与 Capt 计时器发生冲突?

void InitPWMTimer (void)
{
TA1CTL |=(TACLR);
TA1CTL |=(TASSEL_SMCLK);// SMCLK=2M

TA1CCR0 = 52; // 38KHz PWM 周期(2000000/38000)= 53
TA1CCTL0 |= CCIE;
TA1CCTL0 &=~CCIFG;

TA1CCR1 = 17; // 33%占空比(2000000/38000/3)= 18
TA1CCTL1 |= CCIE;
TA1CCTL1 &=~CCIFG;
}

void KeypadTouchCallback (TSENSOR *pSensor)
{
if ((pSensor->bSensorTouch = true)&&(pSensor->bSensorPrevTouch = false))
{
if (keypadSensor_E00.bTouch = true)
{
TA1CTL |= MC__UP;
}
}
否则(((pSensor->bSensorTouch = false)
&&(pSensor->bSensorPrevTouch = true)
{
TA1CTL &=~MC__UP;
}
}

void main (void)
{
WDTCTL = WDTPW | WDTHOLD;
bsp_configureMCU();
InitPWMTimer();
_bis_SR_register (GIE);

CAPT_AppStart();
CAPT_registerCallback (&keypadSensor、&KeypadTouchCallback);

while (1)
{
if (CAPT_appHandler()=true)
{

}
CAPT_appSleep ();
}
}

#pragma vector = Timer1_A0_vector
__interrupt void ISR_PWMPeriod (void)
{
P1OUT |= BIT7;
TA0CCTL0 &=~CCIFG;
}

#pragma vector = Timer1_A1_vector
__interrupt void ISR_PWMDuty (void)
{
P1OUT &=~BIT7;
TA0CCTL1 &=~CCIFG;
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    拼写错误警报:
        TA0CCTL0 &= ~CCIFG;
    [...]
        TA0CCTL1 &= ~CCIFG;
    我认为这些应该是 TA1、而不是 TA0。  
    未经请求:由于 CCR0 CCIFG 会自动复位、因此不需要这些中的第一个。 [参考用户指南(SLAU445I)第13.2.6.1节]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bruce、

    感谢您的通知~

    这实际上是一个拼写错误... :(

    谢谢!!