工具与软件:
您好!
我想我已经发现最新 TI SimpleLink SDK 回归并修复了它。
*在旧的 SDK (例如:5_20_00_52)上、PWMTimerCC26XX_STOP 运行正常。
*在最近的 SDK (例如:7_40_00_77)上、PWMTimerCC26XX_STOP 不会将 GPIO 设置回其空闲级别(例如、它会忽略 PWM_Params.idleLevel)。
*类似的权变措施是在 PWM_Stop 之前使用 PWM_setDuty 设置预期的电平。
*以下是重现问题和暂时修复的示例代码。
请确认或确认错误。
此致、
——Olivier
____________________________________________
pwm_init();
PWM_Handle PWM_Handle;
PWM_Params PWM_params;
PWM_Params_init (&PWM_params);
pwm_params.periodUnit = pwm_period_Hz;
pwm_params.periodValue = 1e6;
pwm_params.dutyUnits = PWM_DUTY_分数;
pwm_params.dutyValue = 0;
pwm_params.idleLevel = pwm_idle_low;
PWM_Handle = PWM_open (CONFIG_PWM、&PWM_PARAMS);
PWM_START (PWM_Handle);
PWM_setDuty (PWM_Handle、PWM_DUTY_FRACTION_MAX);
PWM_STOP (PWM_Handle);
Sleep (3)//在这里、输出为高电平(由于 PWM_setDuty)、而不是 PWM_IDLE_LOW
PWM_Close (PWM_Handle);
pwm_params.idleLevel = pwm_idle_high;
PWM_Handle = PWM_open (CONFIG_PWM、&PWM_PARAMS);
PWM_START (PWM_Handle);
PWM_setDuty (PWM_Handle、0);
PWM_STOP (PWM_Handle);
Sleep (3)//在这里、输出为低电平(由于 PWM_setDuty)、而不是 PWM_IDLE_HIGH
PWM_Close (PWM_Handle);
____________________________________________
diff --git a/source/ti/drivers/pwm/PWMTimerCC26XX.c b/source/ti/drivers/pwm/PWMTimerCC26XX.c
Index 1498bbd3e..32387db2b 100644.
---source/ti/drivers/pwm/PWMTimerCC26XX.c
++ b/source/ti/drivers/pwm/PWMTimerCC26XX.c
@@-404、6 +404、10 @@ void PWMTimerCC26XX_STOP (PWM_Handle handle)
/*将 PWM 引脚路由到 GPIO 模块*/
GPIO_getconfig (hwAttrs->pwmPin、&pinConfig);
+ if (object->idleLevel == pwm_idle_high)
+ pinConfig |= GPIO_CFG_OUT_HIGH;
+ else
+ pinConfig 并且=~GPIO_CFG_OUT_HIGH;
GPIO_setConfigAndMux (hwAttrs->pwmPin、pinConfig、GPIO_MUX_GPIO);
}
——
2.34.1.