请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123AH6PM 大家好、
我有一个关于 配置为宽定时器的引脚 PWM 输出问题的问题。 我已使用计时器进行 PWM 输出、配置似乎正常、当没有频率发生变化时、工作正常(频率根据 ADC 上接收到的2-200Hz 的一些模拟输入发生变化)。 但我注意到、当以非常低的值(2-15Hz)更改频率时、有时我的输出会在一段时间内完全变为低电平、然后进行更新以为 PWM 提供新的频率输出。 这是 系统检测到频率请求更改时使用的代码片段:
ulPeriod = SysCtlClockGet ()/input_AnalogVals.dPotFreqPWM;//计算新的周期 dutyclePWM2 =(无符号长整型)(ulPeriod-1)* dPWMDutyDivider; TimerUpdateMode (WTIMER 5_base、timer_A、timer_up_load_timer_timer_timer_timer_up_timer_timer_timeout;TimerUpdateMode)| TimerUpdateTimerLoad_timeout_timer_timer_timer_timer_timer_timer_timer_timer_timer_timer_timer_timer_tim Timer_A、ulPeriod-1); uint32_t ui32_dutyCyclePWM2=(uint32_t) dutyCyclePWM2; TimerMatchSet (WTIMER 5_base、timer_A、 ui32_dutyCyclPWM2);
下面是我配置此输出的代码:
SysCtlPeripheralEnable (SYSCTL_Periph_WTIMER 5); GPIOPinConfigure (GPIO_PD6_WT5CCP0); GPIOPinTypeTimer (GPIO_PORTD_base、GPIO_PIN_6); ulPeriod = SysCtlClockGet ()/2;/200Hz 默认 dutyCyclPWM2 =(无符号长整型)(ulPeriod-1)*(1-(5.0/100.0)); TimerConfigure (WTIMER 5_BASE、(TIMER_CFG_SPLIT_PAY|TIMER_CFG_A_PWM)); TimerUpdateMode (WTIMER 5_BASE、TIMER_A、 Timer_up_load_timeout | timer_up_match_timeout); TimerLoadSet (WTIMER 5_base、timer_A、ulPeriod-1); TimerMatchSet (WTIMER 5_base、 Timer_A、dutyCyclPWM2); TimerEnable (WTIMER 5_base、timer_A);
我假定此行"TimerUpdateMode"控制计时器在计数先前匹配之前不更新加载值、但有时这似乎不是真的。
你怎么看、我出了什么问题?
提前感谢您。