|
|
@@ -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;
|
|
|
}
|
|
|
|