ESP32C3 PWM 阻塞于非阻塞

‘使用硬件的改变占空比,用来电机软启动和关机调速。

/// @brief 打开电机PWM
void    moto_pwm_on(void){
    //占空比100% 渐变至0%,时间LEDC_FADE_TIME
    	ledc_set_fade_with_time(moto_channel.speed_mode,
                      moto_channel.channel,
                      PWM_MAX_DUTY,
                      PWM_FADE_TIME);
    	//渐变开始
    	ledc_fade_start(moto_channel.speed_mode,
                      moto_channel.channel,
                      //LEDC_FADE_NO_WAIT);
                      LEDC_FADE_WAIT_DONE);
}

使用硬件改变 PWM 占空比

LED PWM 控制器硬件可逐渐改变占空比的数值。要使用此功能,需用函数 ledc_fade_func_install() 使能渐变,之后用下列可用渐变函数之一配置:

最后需要调用 ledc_fade_start() 开启渐变。渐变可以在阻塞或非阻塞模式下运行,具体区别请查看 ledc_fade_mode_t。需要特别注意的是,不管在哪种模式下,下一次渐变或是单次占空比配置的指令生效都必须等到前一次渐变完成或被中止。中止一个正在运行中的渐变需要调用函数 ledc_fade_stop()

enum ledc_fade_mode_t

Values:

enumerator LEDC_FADE_NO_WAIT

LEDC fade function will return immediately 

enumerator LEDC_FADE_WAIT_DONE

LEDC fade function will block until fading to the target duty 

enumerator LEDC_FADE_MAX

但是实际上,不管LEDC_FADE_NO_WAIT还是LEDC_FADE_WATE_DONE,都是在加速或者减速之后才退出。这里有点小尴尬了,感觉像是软件模拟一样。为啥没成功非阻塞的方式设定完了就硬件去执行呢?在用阿里云适配的乐鑫IDF环境,V4.4.6。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值