Explorar el Código

add:pwm输出0%

alienwalker hace 3 años
padre
commit
8102c79f55
Se han modificado 1 ficheros con 57 adiciones y 15 borrados
  1. 57 15
      application/src/luat_pwm_air105.c

+ 57 - 15
application/src/luat_pwm_air105.c

@@ -60,12 +60,12 @@ int luat_pwm_setup(luat_pwm_conf_t* conf) {
 		case 5:
 			GPIO_Iomux(GPIOC_07, 2);
 			break;
-		case 6:
-			GPIO_Iomux(GPIOC_08, 2);
-			break;
-		case 7:
-			GPIO_Iomux(GPIOC_09, 2);
-			break;
+//		case 6:
+//			GPIO_Iomux(GPIOC_08, 2);
+//			break;
+//		case 7:
+//			GPIO_Iomux(GPIOC_09, 2);
+//			break;
 		default:
 			break;
 	}
@@ -74,7 +74,47 @@ int luat_pwm_setup(luat_pwm_conf_t* conf) {
 	//uint32_t hz = 48000000 / period / precision;
 
 	//HWTimer_StartPWM(channel, hz * pulse, hz * (precision - pulse), pnum);
-	if(pulse * (1000 / precision) == 1000)//HWTimer_SetPWM传入duty大于999会不执行
+	if (!pulse)
+	{
+		switch (channel)
+		{
+			case 0:
+				luat_gpio_mode(GPIOB_00, Luat_GPIO_OUTPUT, Luat_GPIO_PULLDOWN, 0);
+				luat_gpio_set(GPIOB_00, Luat_GPIO_LOW);
+				break;
+			case 1:
+				luat_gpio_mode(GPIOB_01, Luat_GPIO_OUTPUT, Luat_GPIO_PULLDOWN, 0);
+				luat_gpio_set(GPIOB_01, Luat_GPIO_LOW);
+				break;
+			case 2:
+				luat_gpio_mode(GPIOA_02, Luat_GPIO_OUTPUT, Luat_GPIO_PULLDOWN, 0);
+				luat_gpio_set(GPIOA_02, Luat_GPIO_LOW);
+				break;
+			case 3:
+				luat_gpio_mode(GPIOA_03, Luat_GPIO_OUTPUT, Luat_GPIO_PULLDOWN, 0);
+				luat_gpio_set(GPIOA_03, Luat_GPIO_LOW);
+				break;
+			case 4:
+				luat_gpio_mode(GPIOC_06, Luat_GPIO_OUTPUT, Luat_GPIO_PULLDOWN, 0);
+				luat_gpio_set(GPIOC_06, Luat_GPIO_LOW);
+				break;
+			case 5:
+				luat_gpio_mode(GPIOC_07, Luat_GPIO_OUTPUT, Luat_GPIO_PULLDOWN, 0);
+				luat_gpio_set(GPIOC_07, Luat_GPIO_LOW);
+				break;
+//			case 6:
+//				luat_gpio_mode(GPIOC_08, Luat_GPIO_OUTPUT, Luat_GPIO_PULLDOWN, 0);
+//				luat_gpio_set(GPIOC_08, Luat_GPIO_LOW);
+//				break;
+//			case 7:
+//				luat_gpio_mode(GPIOC_09, Luat_GPIO_OUTPUT, Luat_GPIO_PULLDOWN, 0);
+//				luat_gpio_set(GPIOC_09, Luat_GPIO_LOW);
+//				break;
+			default:
+				break;
+		}
+	}
+	else if(pulse * (1000 / precision) == 1000)//HWTimer_SetPWM传入duty大于999会不执行
 	{
 		switch (channel)
 		{
@@ -102,20 +142,22 @@ int luat_pwm_setup(luat_pwm_conf_t* conf) {
 				luat_gpio_mode(GPIOC_07, Luat_GPIO_OUTPUT, Luat_GPIO_PULLUP, 1);
 				luat_gpio_set(GPIOC_07, Luat_GPIO_HIGH);
 				break;
-			case 6:
-				luat_gpio_mode(GPIOC_08, Luat_GPIO_OUTPUT, Luat_GPIO_PULLUP, 1);
-				luat_gpio_set(GPIOC_08, Luat_GPIO_HIGH);
-				break;
-			case 7:
-				luat_gpio_mode(GPIOC_09, Luat_GPIO_OUTPUT, Luat_GPIO_PULLUP, 1);
-				luat_gpio_set(GPIOC_09, Luat_GPIO_HIGH);
-				break;
+//			case 6:
+//				luat_gpio_mode(GPIOC_08, Luat_GPIO_OUTPUT, Luat_GPIO_PULLUP, 1);
+//				luat_gpio_set(GPIOC_08, Luat_GPIO_HIGH);
+//				break;
+//			case 7:
+//				luat_gpio_mode(GPIOC_09, Luat_GPIO_OUTPUT, Luat_GPIO_PULLUP, 1);
+//				luat_gpio_set(GPIOC_09, Luat_GPIO_HIGH);
+//				break;
 			default:
 				break;
 		}
 	}
 	else
+	{
 		HWTimer_SetPWM(channel, period, pulse * (1000 / precision), pnum);
+	}
     return 0;
 }