Thread 中讨论的其他器件:SysConfig
大家好、
我的目标是生成具有固定导通时间和300Hz 至400Hz 可变频率且每1ms 更新一次的 PWM 信号。
为此、我将计时器的"加载值"设置为相应的计时器值和关断时间的"捕获比较值"、以便导通时间始终保持恒定(~200us)。
类似地、我有一个用于 ADC 测量的10us 中断。
void Pwm_SetFrequencyTicks(uint16_t au16_Ticks)
{
/* Set the calculated Clock Timer Count for the PWM */
DL_Timer_setLoadValue(PWM_Transistor_Drive_INST, (uint16_t)(au16_Ticks - 1U));
/* Set the on time of the pwm */
DL_TimerG_setCaptureCompareValue(PWM_Transistor_Drive_INST, (au16_Ticks - PWM_ONTIME_TICKS), DL_TIMER_CC_1_INDEX);
}
现在、我遇到了一个问题、即控制器输出的 PWM 每隔几秒随机跳过一个 PWM 周期的下降沿。

因此、在较新的软件版本中、我反转了 PWM、以便我 可以通过"捕获比较值"直接设置 PWM 的导通时间、并且在启动后仅设置一次。
通过此更改、问题似乎得到解决。
void Pwm_SetFrequencyTicks(uint16_t au16_Ticks)
{
/* Set the calculated Clock Timer Count for the PWM */
DL_Timer_setLoadValue(PWM_Transistor_Drive_INST, (uint16_t)(au16_Ticks - 1U));
}
我的问题是:这是已知问题还是我的第一个实施问题? 我能否确定我的第二个实施方案确实解决了这个问题?
