工具/软件:
您好、 
我使用的是 MSP430FR4276微控制器、在使用 Timer_A3生成 PWM 信号时遇到问题。 需要通过 PI 控制器随时调节 PWM 占空比。 然而,我面临一个问题(如所附的图像中所示),我认为是有关时间我更新 CCR1. 
似乎、如果我 CCR1 在错误的时刻更新、 CCR1 和之间的比较事件 CCR0 在计时器达到其最大值之前不会发生。 因此、新的占空比仅在下一个周期生效。 
挑战在于、我不想使用 MC 位来停止计时器、也不想使用中断(ISR)。 根据数据表、影子寄存器用于此目的、应由自动处理 Timer_A_initCompareMode()。 因此、我希望只需调用以下命令:  
Timer_A_setCompareValue(TA3_BASE, TIMER_A_CAPTURECOMPARE_REGISTER_1, newDutyCycle);

void MY_TIMER_init(void)
{
  // Set up Timer_A3 in Up Mode
  Timer_A_initUpModeParam upModeParams = {0};
  upModeParams.clockSource = TIMER_A_CLOCKSOURCE_SMCLK;
  upModeParams.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_1;
  upModeParams.timerPeriod = 0xFFF;
  upModeParams.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_DISABLE;
  upModeParams.captureCompareInterruptEnable_CCR0_CCIE = TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE;
  upModeParams.timerClear = TIMER_A_DO_CLEAR;
  upModeParams.startTimer = false;
  Timer_A_initUpMode(TA3_BASE, &upModeParams);
  // Configure CCR1 for PWM output
  Timer_A_initCompareModeParam compareParams = {0};
  compareParams.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_1;
  compareParams.compareInterruptEnable = TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE;
  compareParams.compareOutputMode = TIMER_A_OUTPUTMODE_RESET_SET;
  compareParams.compareValue = 0x7FF;
  Timer_A_initCompareMode(TA3_BASE, &compareParams);
  Timer_A_startCounter(TA3_BASE, TIMER_A_UP_MODE);
}