一、描述你遇到的问题
在例程的基础上修改了一下,调用uapi_pwm_update_duty_ratio接口调整通道的占空比,没有任何反应。实际上SDK里的uapi_gpio_set_val、uapi_pwm_start、uapi_pwm_get_frequency、uapi_pwm_stop等接口都有这样的毛病,不过都能用相应方法实现同一功能,我也就不提了,占空比修改不了还是很致命的,我试图用:
uapi_pwm_stop_group(channel);
if(duty == 0)
{
//不支持占空比为0,所以在此加个判断,直接把通道关闭掉后就不再做任何处理。
return;
}
uapi_pwm_close(channel);
uapi_pwm_clear_group(channel);
uapi_pwm_unregister_interrupt(channel);
pwm_config_t cfg_no_repeat = {
TOTAL_TIME / 100 * (100 - duty),//低电平
TOTAL_TIME / 100 * duty,//高电平。之所以先除再乘是因为防止数据溢出
0,
0,
true
};
/* 设置可作为PWM IO的模式 */
uapi_pin_set_mode(pin, PWM_PIN_MODE);
uapi_pwm_deinit();
uapi_pwm_init();
/* 打开指定chanel的PWM */
uapi_pwm_open(channel, &cfg_no_repeat);
/* 注册回调函数 */
uapi_pwm_unregister_interrupt(channel);
uapi_pwm_register_interrupt(channel, pwm_sample_callback);
/* 每个通道单独一组,分别指定 */
uint8_t channel_id[1] = {channel};
uapi_pwm_set_group(channel, channel_id, 1);
的方式重新初始化PWM,实现同样的功能,但是还是不行,所以想问一下怎么回事。是调用uapi_pwm_update_duty_ratio接口前要先关闭通道等做些更多操作吗?
二、你具体做的所有步骤结果截图
三、当前开发板状态全景照片
四、开发板串口所有日志
调用uapi_pwm_update_duty_ratio接口的实现方式中串口基本没输出什么东西,而如果用重新初始化的方法,日志是这样的: