主题中讨论的其他器件:HALCOGEN
您好!
我们将您的 RM48L952zwt 平台与 HalCoGen 4.03.00生成的驱动程序结合使用、并基于我们几年前从 TI 获得的示例函数。 我们的硬件一直停留在波形与传输的设置不匹配上。 即、屏幕截图 PWM 占空比= 37且频率= 100、生成的波形的占空比为28.6
或者、如果 PWM 占空比设置为38 - 40且频率设置为100、则波形的占空比为42.9:
/**
* void setPWMOutput (PWM_channel_type PWM、CPU_INT32U 赫兹、CPU_FP32百分比)
*
*@简要设置特定通道的 PWM 值
*
*@param[in] PWM PWM 通道
*@param[in] 赫兹 使用的频率
*@param[in] 浮 点值百分比
*
*@返回 void
*
void setPWMOutput (PWM_CHANNEL 类型 PWM、CPU_INT32U 赫兹、CPU_FP32百分比)
{
CPU_FP64周期= 0;
CPU_FP32 dutyCycle = 0;
CPU_FP32 polarityReversedDutyCycle = 0;
HW_PWM_CONTRAL_SET_FN 设置 Fn = 0;
//占空比不能超过100%
if (百分比> MAX_DUTY 周期百分比值)
百分比= MAX_DUTY 周期百分比值;
周期=(1/((CPU_FP64)赫兹)* 1000 * 1000;
dutyCycle =百分比;
//TODO 清理魔术编号
if (g_pwmPinPolarity[PWM]=极性_有效_低电平)
PolarityReversedDutyCycle = 100 - dutyCycle;
其他
PolarityReversedDutyCycle = dutyCycle;
IF (PWM < PWM_LAST)
setFn = g_pwmPinSetFn[PWM];
if (setFn!= 0)
{
//无法将 PWM 直接设置为0,必须先将其设置为中间值,然后再设置为0
if (polarityReversedDutyCycle = 0)
{
if (g_pwmPinPolarity[PWM]=极性_有效_低电平)
(* setFn)(g_pwmPinMapping[PWM]、周期、(100.0 - One_Percent _duty_cycle));
其他
(* setFn)(g_pwmPinMapping[PWM]、period、One_Percent _duty_cycle);
OSTimeDlyHMSM (0、0、0、PWM_TIME_DELAY);
}
(* setFn)(g_pwmPinMapping[PWM]、句点、多项式 ReversedDutyCycle);
dataStruct_setPWMFrequency (PWM、Hz);
dataStruct_setPWMDutyCycle (PWM、百分比);
}
}
谢谢你。