LW21-01B/BSP/Driver/full_bridge/full_bridge.c

644 lines
14 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

////////////////////////////////////////////////////////////////////////////////
/// FULL_BRIDGE<47>ļ<EFBFBD>
///
///
/// <20><><EFBFBD><EFBFBD>hall<6C><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// @file full_bridge.c
/// @author LH
/// @date 2022-07-19
/// @version v1.0
////////////////////////////////////////////////////////////////////////////////
#include "full_bridge.h"
#include "ptz_struct.h"
#include "gd32f4xx_it.h"
#include "rotate_bldc.h"
#include "rotate_plan.h"
#include "device_adc_collect.h"
#include "gd32f4xx_timer.h"
#include "speed_to_bldc.h"
#ifdef Full_bridge
typedef void(*pctr) (void);
pctr h_six_step_commu[6];
pctr v_six_step_commu[6];
HALL_State H_Hall_state;
HALL_State V_Hall_state;
/*
********************************<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>***********************************/
static unsigned int h_pwm_duty;
static unsigned int v_pwm_duty;
/*!
\brief none pwmռ<6D>ձ<EFBFBD><D5B1><EFBFBD><EFBFBD><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.10.11
*/
//ˮƽ
void h_pwm_duty_change(unsigned int pwm_duty)
{
h_pwm_duty = pwm_duty;
}
//<2F><>ֱ
void v_pwm_duty_change(unsigned int pwm_duty)
{
v_pwm_duty = pwm_duty;
}
/*!
\brief hall״̬<D7B4><CCAC>ȡ
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.19
*/
unsigned char h_hall_senser_value_get()
{
unsigned char hall_value;
H_Hall_state.Hall_H1_state = gpio_input_bit_get(GPIOE, GPIO_PIN_10);
H_Hall_state.Hall_H2_state = gpio_input_bit_get(GPIOE, GPIO_PIN_11);
H_Hall_state.Hall_H3_state = gpio_input_bit_get(GPIOE, GPIO_PIN_12);
hall_value = H_Hall_state.Hall_H1_state
|(H_Hall_state.Hall_H2_state << 1)
|(H_Hall_state.Hall_H3_state << 2);
return hall_value;
}
unsigned char v_hall_senser_value_get()
{
unsigned char hall_value;
V_Hall_state.Hall_H1_state = gpio_input_bit_get(GPIOE, GPIO_PIN_13);
V_Hall_state.Hall_H2_state = gpio_input_bit_get(GPIOE, GPIO_PIN_14);
V_Hall_state.Hall_H3_state = gpio_input_bit_get(GPIOE, GPIO_PIN_15);
hall_value = V_Hall_state.Hall_H1_state
|(V_Hall_state.Hall_H2_state << 1)
|(V_Hall_state.Hall_H3_state << 2);
return hall_value;
}
/*!
\brief none U<><55><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><56><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void h_uh_vl()
{
H_EN1_OFF;//U
H_EN2_ON;//V
H_EN3_OFF;//W
TIMER_CH0CV(TIMER2) = h_pwm_duty;//U199;//
TIMER_CH1CV(TIMER2) = 0;//V
TIMER_CH2CV(TIMER2) = 0;//W
}
/*!
\brief none W<><57><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><56><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void h_wh_vl()
{
H_EN1_OFF;//U
H_EN2_ON;//V
H_EN3_OFF;//W
TIMER_CH0CV(TIMER2) = 0;//U
TIMER_CH1CV(TIMER2) = 0;//V
TIMER_CH2CV(TIMER2) = h_pwm_duty;//W199;//
}
/*!
\brief none W<><57><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><55><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void h_wh_ul()
{
H_EN1_ON;//U
H_EN2_OFF;//V
H_EN3_OFF;//W
TIMER_CH0CV(TIMER2) = 0;//U
TIMER_CH1CV(TIMER2) = 0;//V
TIMER_CH2CV(TIMER2) = h_pwm_duty;//W199;//
}
/*!
\brief none V<><56><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><55><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void h_vh_ul()
{
H_EN1_ON;//U
H_EN2_OFF;//V
H_EN3_OFF;//W
TIMER_CH0CV(TIMER2) = 0;//U
TIMER_CH1CV(TIMER2) = h_pwm_duty;//V199;//
TIMER_CH2CV(TIMER2) = 0;//W
}
/*!
\brief none V<><56><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void h_vh_wl()
{
H_EN1_OFF;//U
H_EN2_OFF;//V
H_EN3_ON;//W
TIMER_CH0CV(TIMER2) = 0;//U
TIMER_CH1CV(TIMER2) = h_pwm_duty;//V199;//
TIMER_CH2CV(TIMER2) = 0;//W
}
/*!
\brief none U<><55><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void h_uh_wl()
{
H_EN1_OFF;//U
H_EN2_OFF;//V
H_EN3_ON;//W
TIMER_CH0CV(TIMER2) = h_pwm_duty;//U199;//
TIMER_CH1CV(TIMER2) = 0;//V
TIMER_CH2CV(TIMER2) = 0;//W
}
/*!
\brief none <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣬶<EFBFBD><F2A3ACB6><EFBFBD>120<32><30>hall<6C><6C><EFBFBD><EFBFBD>ת˳<D7AA><CBB3>Ϊ546231<33><31><EFBFBD><EFBFBD>ת˳<D7AA><CBB3>Ϊ<EFBFBD><CEAA>7-<2D><>ת˳<D7AA><CBB3>,,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD>1<EFBFBD><31>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
pctr h_six_step_commu[6] =
{
&h_uh_wl, &h_vh_ul, &h_vh_wl, &h_wh_vl, &h_uh_vl, &h_wh_ul
};
/*!
\brief none U<><55><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><56><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void v_uh_vl()
{
V_EN1_OFF;//U
V_EN2_ON;//V
V_EN3_OFF;//W
TIMER_CH0CV(TIMER3) = v_pwm_duty;//U199;//
TIMER_CH1CV(TIMER3) = 0;//V
TIMER_CH2CV(TIMER3) = 0;//W
}
/*!
\brief none W<><57><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD><56><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void v_wh_vl()
{
V_EN1_OFF;//U
V_EN2_ON;//V
V_EN3_OFF;//W
TIMER_CH0CV(TIMER3) = 0;//U
TIMER_CH1CV(TIMER3) = 0;//V
TIMER_CH2CV(TIMER3) = v_pwm_duty;//W199;//
}
/*!
\brief none W<><57><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><55><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void v_wh_ul()
{
V_EN1_ON;//U
V_EN2_OFF;//V
V_EN3_OFF;//W
TIMER_CH0CV(TIMER3) = 0;//U
TIMER_CH1CV(TIMER3) = 0;//V
TIMER_CH2CV(TIMER3) = v_pwm_duty;//W199;//
}
/*!
\brief none V<><56><EFBFBD><EFBFBD><EFBFBD>U<EFBFBD><55><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void v_vh_ul()
{
V_EN1_ON;//U
V_EN2_OFF;//V
V_EN3_OFF;//W
TIMER_CH0CV(TIMER3) = 0;//U
TIMER_CH1CV(TIMER3) = v_pwm_duty;//V199;//
TIMER_CH2CV(TIMER3) = 0;//W
}
/*!
\brief none V<><56><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void v_vh_wl()
{
V_EN1_OFF;//U
V_EN2_OFF;//V
V_EN3_ON;//W
TIMER_CH0CV(TIMER3) = 0;//U
TIMER_CH1CV(TIMER3) = v_pwm_duty;//V199;//
TIMER_CH2CV(TIMER3) = 0;//W
}
/*!
\brief none U<><55><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void v_uh_wl()
{
V_EN1_OFF;//U
V_EN2_OFF;//V
V_EN3_ON;//W
TIMER_CH0CV(TIMER3) = v_pwm_duty;//U199;//
TIMER_CH1CV(TIMER3) = 0;//V
TIMER_CH2CV(TIMER3) = 0;//W
}
/*!
\brief none <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򣬶<EFBFBD><F2A3ACB6><EFBFBD>120<32><30>hall<6C><6C><EFBFBD><EFBFBD>ת˳<D7AA><CBB3>Ϊ546231<33><31><EFBFBD><EFBFBD>ת˳<D7AA><CBB3>Ϊ<EFBFBD><CEAA>7-<2D><>ת˳<D7AA><CBB3>,,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ټ<EFBFBD>1<EFBFBD><31>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
pctr v_six_step_commu[6] =
{
&v_uh_wl, &v_vh_ul, &v_vh_wl, &v_wh_vl, &v_uh_vl, &v_wh_ul
};
void uvw()
{
V_EN1_OFF;//U
V_EN2_OFF;//V
V_EN3_OFF;//W
}
/*!
\brief none ˮƽֱ<C6BD><D6B1><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void h_bldc_six_step()
{
// H_ADC2_Phase_current();
if(g_ptz.hori_start_stop_set == PTZ_HORI_START)
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
H_Hall_state.Hall_value = h_hall_senser_value_get();
if((H_Hall_state.Hall_value <= 6)&&(H_Hall_state.Hall_value >= 1))
{
// if(g_ptz.hori_direction_set == PTZ_HORI_DIR_RIGHT)
// {//<2F><><EFBFBD><EFBFBD><EFBFBD>ת- 1
// h_six_step_commu[(7-H_Hall_state.Hall_value) -1]();
// }else{//<2F><><EFBFBD><EFBFBD><EFBFBD>ת
// h_six_step_commu[H_Hall_state.Hall_value -1]();
// }
//ֱ<><D6B1><EFBFBD><EFBFBD>̨ת<CCA8><D7AA>
if(g_ptz.hori_direction_set == PTZ_HORI_DIR_RIGHT)
{//<2F><><EFBFBD><EFBFBD><EFBFBD>ת- 1
h_six_step_commu[H_Hall_state.Hall_value -1]();
}else{//<2F><><EFBFBD><EFBFBD><EFBFBD>ת
h_six_step_commu[(7-H_Hall_state.Hall_value) -1]();
}
}
}
}
/*!
\brief none <20><>ֱֱ<D6B1><D6B1><EFBFBD><EFBFBD>ˢ<EFBFBD><CBA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void v_bldc_six_step()
{
// V_ADC0_Phase_current();
if((g_ptz.vert_start_stop_set == PTZ_VERT_START) && (g_ptz.vert_pid.mode == PID_ADJUST_SPEED))
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
V_Hall_state.Hall_value = v_hall_senser_value_get();
if((V_Hall_state.Hall_value <= 6)&&(V_Hall_state.Hall_value >= 1))
{
if(g_ptz.vert_direction_set == PTZ_VERT_DIR_UP)
{//<2F><><EFBFBD><EFBFBD><EFBFBD>ת- 1
v_six_step_commu[V_Hall_state.Hall_value -1]();
}else{//<2F><><EFBFBD><EFBFBD><EFBFBD>ת
v_six_step_commu[(7-V_Hall_state.Hall_value) -1]();
}
// if(g_ptz.vert_pid.PidUT_float < 0)
// {//<2F><><EFBFBD><EFBFBD>˼·<CBBC><C2B7>PID<49><44><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
// if(g_ptz.vert_direction_set == PTZ_VERT_DIR_UP)
// {//<2F><><EFBFBD><EFBFBD><EFBFBD>ת- 1
// v_six_step_commu[(7-V_Hall_state.Hall_value) -1]();
// }else{//<2F><><EFBFBD><EFBFBD><EFBFBD>ת
// v_six_step_commu[V_Hall_state.Hall_value -1]();
// }
// }
}
}
}
/*!
\brief none <20><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>٣<EFBFBD><D9A3><EFBFBD><EFBFBD><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.12.05
*/
void vert_dir_speed_start(unsigned int verf)
{
V_EN1_OFF;//U
V_EN2_ON;//V
V_EN3_ON;//W
TIMER_CH0CV(TIMER3) = verf;//U199;//
TIMER_CH1CV(TIMER3) = 0;//V
TIMER_CH2CV(TIMER3) = 0;//W
}
void vert_dir_speed_stop(void)
{
V_EN1_OFF;//U
V_EN2_OFF;//V
V_EN3_OFF;//W
}
void hori_dir_speed_start(unsigned int verf)
{
H_EN1_OFF;//U
H_EN2_ON;//V
H_EN3_ON;//W
TIMER_CH0CV(TIMER2) = verf;//U199;//
TIMER_CH1CV(TIMER2) = 0;//V
TIMER_CH2CV(TIMER2) = 0;//W
}
void hori_dir_speed_stop(void)
{
H_EN1_OFF;//U
H_EN2_OFF;//V
H_EN3_OFF;//W
}
/*!
\brief none <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void h_start_motor()
{
//<2F><>ʱ<EFBFBD><CAB1>ʹ<EFBFBD><CAB9>
// timer_enable(TIMER2);
h_pwm_duty_change(0);
TIMER_CH0CV(TIMER2) = 0 ;//
TIMER_CH1CV(TIMER2) = 0 ;//
TIMER_CH2CV(TIMER2) = 0 ;//
H_EN1_OFF;//U
H_EN2_OFF;//V
H_EN3_OFF;//W
// timer_interrupt_enable(TIMER2,TIMER_INT_UP);//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9>
}
void v_start_motor()
{
//<2F><>ʱ<EFBFBD><CAB1>ʹ<EFBFBD><CAB9>
// timer_enable(TIMER3);
v_pwm_duty_change(0);
TIMER_CH0CV(TIMER3) = 0 ;//
TIMER_CH1CV(TIMER3) = 0 ;//
TIMER_CH2CV(TIMER3) = 0 ;//
V_EN1_OFF;//U
V_EN2_OFF;//V
V_EN3_OFF;//W
// timer_interrupt_enable(TIMER3,TIMER_INT_UP);//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9>
}
/*!
\brief none <20><><EFBFBD>ֹͣ
\param[in] none
\param[out] none
\retval none
\note LH @2022.07.21
*/
void h_stop_motor()
{
h_pwm_duty_change(0);
// //<2F><><EFBFBD><EFBFBD>͵<EFBFBD>ƽ
TIMER_CH0CV(TIMER2) = 0;
TIMER_CH1CV(TIMER2) = 0;
TIMER_CH2CV(TIMER2) = 0;
H_EN1_OFF;//U
H_EN2_OFF;//V
H_EN3_OFF;//W
// //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>ر<EFBFBD>
// timer_disable(TIMER2);
// timer_interrupt_disable(TIMER2,TIMER_INT_UP);//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9>
}
void v_stop_motor()
{
v_pwm_duty_change(0);
// //<2F><><EFBFBD><EFBFBD>͵<EFBFBD>ƽ
TIMER_CH0CV(TIMER3) = 0;
TIMER_CH1CV(TIMER3) = 0;
TIMER_CH2CV(TIMER3) = 0;
V_EN1_OFF;//U
V_EN2_OFF;//V
V_EN3_OFF;//W
// //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>ر<EFBFBD>
// timer_disable(TIMER3);
// timer_interrupt_disable(TIMER3,TIMER_INT_UP);//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><CAB9>
}
/*!
\brief hall<6C><6C><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><CABC>
\param[in] none
\param[out] none
\retval none
\note LH @2022.10.11
*/
static void hall_io_init(void)
{
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// rcu_periph_clock_enable(RCU_GPIOE);
//
// //ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD>PE10-H1,PE11-H2,PE12-H3<48><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱPE13-H1,PE14-H2,PE15-H3
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ģʽ
// gpio_mode_set(GPIOE, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_10);
// gpio_mode_set(GPIOE, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
// gpio_mode_set(GPIOE, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_12);
//
// gpio_mode_set(GPIOE, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_13);
// gpio_mode_set(GPIOE, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_14);
// gpio_mode_set(GPIOE, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_15);
H_Hall_state.Hall_H1_state = 0;
H_Hall_state.Hall_H2_state = 0;
H_Hall_state.Hall_H3_state = 0;
H_Hall_state.Hall_value = 0;
V_Hall_state.Hall_H1_state = 0;
V_Hall_state.Hall_H2_state = 0;
V_Hall_state.Hall_H3_state = 0;
V_Hall_state.Hall_value = 0;
}
/*!
\brief none <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><CABC>
\param[in] none
\param[out] none
\retval none
\note LH @2022.10.11
*/
void bridge_io_init(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_GPIOC);
rcu_periph_clock_enable(RCU_GPIOD);
rcu_periph_clock_enable(RCU_GPIOE);
//H_EN1--PC9//H_EN2--PA8//H_EN3--PA11
gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_9);
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_8);
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8| GPIO_PIN_11);
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
//V_EN1--PD10//V_EN2--PD11//V_EN3--PD15
gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_10);
gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
gpio_mode_set(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_15);
gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10| GPIO_PIN_11| GPIO_PIN_15);
//GD<47>İ<EFBFBD><C4B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸ġ<DEB8><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķϵ縴λ<E7B8B4><CEBB>
gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_0);//ˮƽ<CBAE><C6BD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_1);//<2F><>ֱ<EFBFBD><D6B1>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0| GPIO_PIN_1);
H_EN1_OFF;
H_EN2_OFF;
H_EN3_OFF;
V_EN1_OFF;
V_EN2_OFF;
V_EN3_OFF;
hall_io_init();
H_BRIDGE_POWER_ON;
// V_BRIDGE_POWER_ON;
}
#endif