|
|
@@ -42,10 +42,7 @@ void pwm_3phase_init(void){
|
|
|
_init_pwm_timer(true);
|
|
|
}
|
|
|
|
|
|
-void pwm_3phase_sides(bool hon, bool lon) {
|
|
|
- if (hon && lon) {
|
|
|
- return;
|
|
|
- }
|
|
|
+void pwm_3phase_sides(u8 mask) {
|
|
|
timer_deinit(MOS_PWM_TIMER);
|
|
|
rcu_periph_clock_enable(_rcu_clk(MOS_PWM_TIMER));
|
|
|
gpio_init(PWM_U_P_GROUP,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,PWM_U_P_PIN);
|
|
|
@@ -57,34 +54,35 @@ void pwm_3phase_sides(bool hon, bool lon) {
|
|
|
gpio_init(PWM_W_N_GROUP,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ,PWM_W_N_PIN);
|
|
|
|
|
|
sys_debug("pwm_3phase_sides\n");
|
|
|
- /* 开上桥或者下桥之前先关闭下桥或者上桥 */
|
|
|
- if (hon) {
|
|
|
- _pwm_gpio_config();
|
|
|
- _init_pwm_timer(false);
|
|
|
- delay_us(10);
|
|
|
- pwm_start();
|
|
|
- pwm_update_duty(FOC_PWM_Half_Period-200, FOC_PWM_Half_Period-200, FOC_PWM_Half_Period-200);
|
|
|
- }else if (lon) {
|
|
|
+ if (mask & 0x01) {
|
|
|
+ gpio_bit_write(PWM_U_P_GROUP, PWM_U_P_PIN, SET);
|
|
|
+ }else {
|
|
|
gpio_bit_write(PWM_U_P_GROUP, PWM_U_P_PIN, RESET);
|
|
|
+ }
|
|
|
+ if (mask & 0x02) {
|
|
|
+ gpio_bit_write(PWM_V_P_GROUP, PWM_V_P_PIN, SET);
|
|
|
+ }else {
|
|
|
gpio_bit_write(PWM_V_P_GROUP, PWM_V_P_PIN, RESET);
|
|
|
+ }
|
|
|
+ if (mask & 0x04) {
|
|
|
+ gpio_bit_write(PWM_W_P_GROUP, PWM_W_P_PIN, SET);
|
|
|
+ }else {
|
|
|
gpio_bit_write(PWM_W_P_GROUP, PWM_W_P_PIN, RESET);
|
|
|
-
|
|
|
- delay_us(10);
|
|
|
+ }
|
|
|
+ if (mask & 0x10) {
|
|
|
gpio_bit_write(PWM_U_N_GROUP, PWM_U_N_PIN, SET);
|
|
|
- gpio_bit_write(PWM_V_N_GROUP, PWM_V_N_PIN, SET);
|
|
|
- gpio_bit_write(PWM_W_N_GROUP, PWM_W_N_PIN, SET);
|
|
|
}else {
|
|
|
-#if 0
|
|
|
- gpio_bit_write(PWM_U_P_GROUP, PWM_U_P_PIN, RESET);
|
|
|
- gpio_bit_write(PWM_V_P_GROUP, PWM_V_P_PIN, RESET);
|
|
|
- gpio_bit_write(PWM_W_P_GROUP, PWM_W_P_PIN, RESET);
|
|
|
-
|
|
|
gpio_bit_write(PWM_U_N_GROUP, PWM_U_N_PIN, RESET);
|
|
|
+ }
|
|
|
+ if (mask & 0x20) {
|
|
|
+ gpio_bit_write(PWM_V_N_GROUP, PWM_V_N_PIN, SET);
|
|
|
+ }else {
|
|
|
gpio_bit_write(PWM_V_N_GROUP, PWM_V_N_PIN, RESET);
|
|
|
+ }
|
|
|
+ if (mask & 0x40) {
|
|
|
+ gpio_bit_write(PWM_W_N_GROUP, PWM_W_N_PIN, SET);
|
|
|
+ }else {
|
|
|
gpio_bit_write(PWM_W_N_GROUP, PWM_W_N_PIN, RESET);
|
|
|
-#else
|
|
|
- pwm_3phase_init();
|
|
|
-#endif
|
|
|
}
|
|
|
}
|
|
|
|