#include "gpio.h"
|
#include "gd32e23x_exti.h"
|
#include "gd32e23x_syscfg.h"
|
|
extern void GPIO_Init(void)
|
{
|
rcu_periph_clock_enable(RCU_GPIOA);
|
rcu_periph_clock_enable(RCU_GPIOB);
|
rcu_periph_clock_enable(RCU_GPIOF);
|
|
//初始化配置霍尔输入引脚
|
gpio_mode_set(HALL_SENSOR_A_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, HALL_SENSOR_A_PIN);
|
gpio_mode_set(HALL_SENSOR_B_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, HALL_SENSOR_B_PIN);
|
gpio_mode_set(HALL_SENSOR_C_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, HALL_SENSOR_C_PIN);
|
/* enable the CFGCMP clock */
|
rcu_periph_clock_enable(RCU_CFGCMP);
|
nvic_irq_enable(EXTI4_15_IRQn, 0U);
|
/* connect EXTI line to GPIO pin */
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOB, EXTI_SOURCE_PIN4);
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOB, EXTI_SOURCE_PIN5);
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN15);
|
|
exti_init(EXTI_4 | EXTI_5 | EXTI_15, EXTI_INTERRUPT, EXTI_TRIG_RISING); //配置外部上升沿中断
|
exti_interrupt_flag_clear(EXTI_4 | EXTI_5 | EXTI_15);
|
|
//初始化PWM引脚
|
gpio_mode_set(PWM_HIN1_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, PWM_HIN1_PIN);
|
gpio_af_set(PWM_HIN1_PORT, GPIO_AF_2, PWM_HIN1_PIN);
|
gpio_output_options_set(PWM_HIN1_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, PWM_HIN1_PIN);
|
|
gpio_mode_set(PWM_HIN2_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, PWM_HIN2_PIN);
|
gpio_af_set(PWM_HIN2_PORT, GPIO_AF_2, PWM_HIN2_PIN);
|
gpio_output_options_set(PWM_HIN2_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, PWM_HIN2_PIN);
|
|
gpio_mode_set(PWM_HIN3_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, PWM_HIN3_PIN);
|
gpio_af_set(PWM_HIN3_PORT, GPIO_AF_2, PWM_HIN3_PIN);
|
gpio_output_options_set(PWM_HIN3_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, PWM_HIN3_PIN);
|
|
// gpio_mode_set(PWM_LIN1_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, PWM_LIN1_PIN);
|
// gpio_af_set(PWM_LIN1_PORT, GPIO_AF_2, PWM_LIN1_PIN);
|
// gpio_output_options_set(PWM_LIN1_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, PWM_LIN1_PIN);
|
|
// gpio_mode_set(PWM_LIN2_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, PWM_LIN2_PIN);
|
// gpio_af_set(PWM_LIN2_PORT, GPIO_AF_2, PWM_LIN2_PIN);
|
// gpio_output_options_set(PWM_LIN2_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, PWM_LIN2_PIN);
|
|
// gpio_mode_set(PWM_LIN3_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, PWM_LIN3_PIN);
|
// gpio_af_set(PWM_LIN3_PORT, GPIO_AF_2, PWM_LIN3_PIN);
|
// gpio_output_options_set(PWM_LIN3_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, PWM_LIN3_PIN);
|
gpio_mode_set(PWM_LIN1_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, PWM_LIN1_PIN); //LIN1
|
gpio_bit_write(PWM_LIN1_PORT, PWM_LIN1_PIN, RESET);
|
gpio_mode_set(PWM_LIN2_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, PWM_LIN2_PIN); //LIN2
|
gpio_bit_write(PWM_LIN2_PORT, PWM_LIN2_PIN, RESET);
|
gpio_mode_set(PWM_LIN3_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, PWM_LIN3_PIN); //LIN3
|
gpio_bit_write(PWM_LIN3_PORT, PWM_LIN3_PIN, RESET);
|
|
//初始化配置SDH2136
|
gpio_mode_set(SDH2136_EN_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, SDH2136_EN_PIN); //EN
|
gpio_mode_set(SDH2136_FAULT_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, SDH2136_FAULT_PIN); //fault
|
}
|
/*************************************************************************
|
* 硬件接口函数定义
|
* ***********************************************************************/
|
extern void Set_LedOn(void)
|
{
|
gpio_bit_write(LED_PORT, LED_PIN, RESET);
|
}
|
extern void Set_LedOff(void)
|
{
|
gpio_bit_write(LED_PORT, LED_PIN, SET);
|
}
|
extern void Set_SDH2136_Enable(void)
|
{
|
gpio_bit_write(SDH2136_EN_PORT, SDH2136_EN_PIN, SET);
|
}
|
extern void Set_SDH2136_Disable(void)
|
{
|
gpio_bit_write(SDH2136_EN_PORT, SDH2136_EN_PIN, RESET);
|
}
|
extern uint8_t Get_SDH2136FaultState(void)
|
{
|
return (uint8_t)(gpio_input_bit_get(SDH2136_FAULT_PORT, SDH2136_FAULT_PIN));
|
}
|
extern uint8_t Get_SwitchInputState(void)
|
{
|
return (uint8_t)(gpio_input_bit_get(SW_IN_PORT, SW_IN_PIN));
|
}
|
extern uint8_t Get_HallSensorA_State(void)
|
{
|
return (uint8_t)(gpio_input_bit_get(HALL_SENSOR_A_PORT, HALL_SENSOR_A_PIN));
|
}
|
extern uint8_t Get_HallSensorB_State(void)
|
{
|
return (uint8_t)(gpio_input_bit_get(HALL_SENSOR_B_PORT, HALL_SENSOR_B_PIN));
|
}
|
extern uint8_t Get_HallSensorC_State(void)
|
{
|
return (uint8_t)(gpio_input_bit_get(HALL_SENSOR_C_PORT, HALL_SENSOR_C_PIN));
|
}
|