From 1a4ea70147216f586f1341d4f1981733ed2c203c Mon Sep 17 00:00:00 2001 From: tao_z <tzj0429@163.com> Date: Sat, 03 Jul 2021 21:41:30 +0800 Subject: [PATCH] 采用三个外部中断触发 --- USR/SRC/GPIO.c | 72 +++++++++++++++++++++--------------- 1 files changed, 42 insertions(+), 30 deletions(-) diff --git a/USR/SRC/GPIO.c b/USR/SRC/GPIO.c index baca2a4..c4226b4 100644 --- a/USR/SRC/GPIO.c +++ b/USR/SRC/GPIO.c @@ -1,51 +1,57 @@ #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); - + // rcu_periph_clock_enable(RCU_GPIOF); + /* enable the CFGCMP clock */ + rcu_periph_clock_enable(RCU_CFGCMP); //初始化配置霍尔输入引脚 - gpio_mode_set(HALL_SENSOR_A_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, HALL_SENSOR_A_PIN); - gpio_af_set(HALL_SENSOR_A_PORT, GPIO_AF_1, HALL_SENSOR_A_PIN); - - gpio_mode_set(HALL_SENSOR_B_PORT, GPIO_MODE_AF, GPIO_PUPD_NONE, HALL_SENSOR_B_PIN); - gpio_af_set(HALL_SENSOR_B_PORT, GPIO_AF_1, HALL_SENSOR_B_PIN); - + 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); + + /* 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_INTERRUPT, EXTI_TRIG_RISING); //配置外部上升沿中断 + exti_init(EXTI_5, EXTI_INTERRUPT, EXTI_TRIG_RISING); //配置外部上升沿中断 + exti_init(EXTI_15, EXTI_INTERRUPT, EXTI_TRIG_RISING); //配置外部上升沿中断 + nvic_irq_enable(EXTI4_15_IRQn, 0U); + 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_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_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); - - // //初始化配置LED引脚 - // gpio_mode_set(LED_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, LED_PIN); //LED - // gpio_bit_write(LED_PORT, LED_PIN, RESET); //led on - - // //初始化配置开关输入 - // gpio_mode_set(SW_IN_PORT, GPIO_MODE_INPUT, GPIO_PUPD_NONE, SW_IN_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 @@ -80,13 +86,19 @@ } extern uint8_t Get_HallSensorA_State(void) { - return (uint8_t)(gpio_input_bit_get(HALL_SENSOR_A_PORT, HALL_SENSOR_A_PIN)); + uint8_t rtn = 0; + rtn = (SET == gpio_input_bit_get(HALL_SENSOR_A_PORT, HALL_SENSOR_A_PIN)) ? 1 : 0; + return rtn; } extern uint8_t Get_HallSensorB_State(void) { - return (uint8_t)(gpio_input_bit_get(HALL_SENSOR_B_PORT, HALL_SENSOR_B_PIN)); + uint8_t rtn = 0; + rtn = (SET == gpio_input_bit_get(HALL_SENSOR_B_PORT, HALL_SENSOR_B_PIN)) ? 1 : 0; + return rtn; } extern uint8_t Get_HallSensorC_State(void) { - return (uint8_t)(gpio_input_bit_get(HALL_SENSOR_C_PORT, HALL_SENSOR_C_PIN)); + uint8_t rtn = 0; + rtn = (SET == gpio_input_bit_get(HALL_SENSOR_C_PORT, HALL_SENSOR_C_PIN)) ? 1 : 0; + return rtn; } -- Gitblit v1.8.0