您好!
我使用 PWM 来控制 LCD 背光亮度-请参阅下面的 INIT 函数。 我遇到了一个问题,即输出引脚在此函数之后打开,尽管我希望它关闭(具体而言,引脚在 ROM_TimerControlLevel ()调用后立即打开)。
我使用这些 ROM 调用的顺序进行了变通、我发现、如果我在 ROM_TimerConfigure()调用之后移动了 ROM_TimerMatchSet()和 ROM_TimerPrescaleMatchSet()调用、问题就得到了解决。 这有道理吗? MatchSet()函数是否需要位于 TimerConfigure 之后才能正常工作? 只是想确保我找到了问题的根源、而不仅仅是意外地解决了问题。
静态空 LCD_BacklightInit (空){
uint32 timerPeriod;
uint8 timerPrescaler;
backlightLoadValue = SysCtlClockGet ()/ backlight_PWM_FREQ_Hz;
timerPeriod = backlightLoadValue & 0xFFFF;//最低4字节
timerPrescaler = backlightLoadValue >> 16;
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_TIMER2);
ROM_TimerDisable (TIMER2_base、TIMER_B);
ROM_TimerMatchSet (TIMER2_base、TIMER_B、0);//初始关闭
ROM_TimerPrescaleMatchSet (TIMER2_base、TIMER_B、0);ROM_GPIOPinConfigure (GPIO_PF5_T2CCP1);
ROM_GPIOPinTypeTimer (GPIO_PORTF_BASE、GPIO_PIN_5);
ROM_TimerConfigure (TIMER2_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_PWM);
ROM_TimerControlLevel (TIMER2_base、TIMER_B、true);//反转 PWM 输出、启用更简单的占空比设置函数
ROM_TimerLoadSet (TIMER2_base、TIMER_B、timerPeriod);
ROM_TimerPrescaleSet (TIMER2_base、TIMER_B、timerPrescaler);
ROM_TimerEnable (TIMER2_base、TIMER_B);
}