Browse Source

update: pwm的占空比传入0的时候, 优先调用pwm_close函数, 其他处理就跳过了

Wendal Chen 3 years ago
parent
commit
a5add89289
1 changed files with 7 additions and 1 deletions
  1. 7 1
      app/port/luat_pwm_air101.c

+ 7 - 1
app/port/luat_pwm_air101.c

@@ -63,6 +63,8 @@ int luat_pwm_setup(luat_pwm_conf_t* conf) {
 	size_t pnum = conf->pnum;
 	size_t precision = conf->precision;
 
+	tls_sys_clk sysclk;
+
 	if (precision != 100 && precision != 256) {
 		LLOGW("only 100 or 256 PWM precision supported");
 		return -1;
@@ -166,7 +168,9 @@ int luat_pwm_setup(luat_pwm_conf_t* conf) {
 	channel = channel%10;
 	if (channel < 0 || channel > 4)
 		return -1;
-	tls_sys_clk sysclk;
+	if (conf->pulse == 0) {
+		return luat_pwm_close(conf->channel);
+	}
 	
 	tls_sys_clk_get(&sysclk);
 
@@ -187,8 +191,10 @@ int luat_pwm_setup(luat_pwm_conf_t* conf) {
 			if (pwm_confs[channel].pulse != conf->pulse) {
 				// 仅占空比不同,修改即可, V0006
 				tls_pwm_duty_config(channel, pulse);
+				pwm_confs[channel].pulse = conf->pulse;
 				return 0;
 			}
+			break;
 		}
 	}
 	else {