|
@@ -3,20 +3,20 @@
|
|
|
#include "gd32e230x_conf.h"
|
|
#include "gd32e230x_conf.h"
|
|
|
#include "main.h"
|
|
#include "main.h"
|
|
|
|
|
|
|
|
-#define INPUT_PIN_1 GPIO_PIN_7
|
|
|
|
|
-#define INPUT_PIN_2 GPIO_PIN_8
|
|
|
|
|
|
|
+#define INPUT_PIN_1 GPIO_PIN_0
|
|
|
|
|
+#define INPUT_PIN_2 GPIO_PIN_1
|
|
|
|
|
|
|
|
-#define SWTICH_PIN GPIO_PIN_5
|
|
|
|
|
|
|
+#define SWTICH_PIN GPIO_PIN_9
|
|
|
|
|
|
|
|
-#define EXIT_INPUT_PIN_1 EXTI_SOURCE_PIN7
|
|
|
|
|
-#define EXIT_INPUT_PIN_2 EXTI_SOURCE_PIN8
|
|
|
|
|
|
|
+#define EXIT_INPUT_PIN_1 EXTI_SOURCE_PIN0
|
|
|
|
|
+#define EXIT_INPUT_PIN_2 EXTI_SOURCE_PIN1
|
|
|
|
|
|
|
|
-#define SWITCH_INPUT_PIN EXTI_SOURCE_PIN5
|
|
|
|
|
|
|
+#define SWITCH_INPUT_PIN EXTI_SOURCE_PIN9
|
|
|
|
|
|
|
|
-#define INPUT_EXIT_1 EXTI_7
|
|
|
|
|
-#define INPUT_EXIT_2 EXTI_8
|
|
|
|
|
|
|
+#define INPUT_EXIT_1 EXTI_0
|
|
|
|
|
+#define INPUT_EXIT_2 EXTI_1
|
|
|
|
|
|
|
|
-#define SWITCH_EXTI EXTI_5
|
|
|
|
|
|
|
+#define SWITCH_EXTI EXTI_9
|
|
|
|
|
|
|
|
|
|
|
|
|
static void read_input_level(uint8_t channel);
|
|
static void read_input_level(uint8_t channel);
|
|
@@ -25,25 +25,26 @@ static void read_switch_level();
|
|
|
|
|
|
|
|
void sts_exti_init(void)
|
|
void sts_exti_init(void)
|
|
|
{
|
|
{
|
|
|
|
|
+ rcu_periph_clock_enable(RCU_GPIOA);
|
|
|
rcu_periph_clock_enable(RCU_GPIOB);
|
|
rcu_periph_clock_enable(RCU_GPIOB);
|
|
|
rcu_periph_clock_enable(RCU_CFGCMP);
|
|
rcu_periph_clock_enable(RCU_CFGCMP);
|
|
|
//rcu_periph_clock_enable(RCU_AF);
|
|
//rcu_periph_clock_enable(RCU_AF);
|
|
|
|
|
|
|
|
- gpio_mode_set(GPIOB,GPIO_MODE_INPUT,GPIO_PUPD_NONE,INPUT_PIN_1);
|
|
|
|
|
- gpio_mode_set(GPIOB,GPIO_MODE_INPUT,GPIO_PUPD_NONE,INPUT_PIN_2);
|
|
|
|
|
|
|
+ gpio_mode_set(GPIOA,GPIO_MODE_INPUT,GPIO_PUPD_NONE,INPUT_PIN_1);
|
|
|
|
|
+ gpio_mode_set(GPIOA,GPIO_MODE_INPUT,GPIO_PUPD_NONE,INPUT_PIN_2);
|
|
|
gpio_mode_set(GPIOB,GPIO_MODE_INPUT,GPIO_PUPD_NONE,SWTICH_PIN);
|
|
gpio_mode_set(GPIOB,GPIO_MODE_INPUT,GPIO_PUPD_NONE,SWTICH_PIN);
|
|
|
-
|
|
|
|
|
|
|
+// nvic_irq_enable(EXTI0_1_IRQn,0);
|
|
|
nvic_irq_enable(EXTI4_15_IRQn,0);
|
|
nvic_irq_enable(EXTI4_15_IRQn,0);
|
|
|
- syscfg_exti_line_config(EXTI_SOURCE_GPIOB,EXIT_INPUT_PIN_1);
|
|
|
|
|
- syscfg_exti_line_config(EXTI_SOURCE_GPIOB,EXIT_INPUT_PIN_2);
|
|
|
|
|
|
|
+// syscfg_exti_line_config(EXTI_SOURCE_GPIOA,EXIT_INPUT_PIN_1);
|
|
|
|
|
+// syscfg_exti_line_config(EXTI_SOURCE_GPIOA,EXIT_INPUT_PIN_2);
|
|
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOB,SWITCH_INPUT_PIN);
|
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOB,SWITCH_INPUT_PIN);
|
|
|
-
|
|
|
|
|
- exti_init(INPUT_EXIT_1,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
|
|
|
|
|
- exti_init(INPUT_EXIT_2,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
|
|
|
|
|
|
|
+//
|
|
|
|
|
+// exti_init(INPUT_EXIT_1,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
|
|
|
|
|
+// exti_init(INPUT_EXIT_2,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
|
|
|
exti_init(SWITCH_EXTI,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
|
|
exti_init(SWITCH_EXTI,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
|
|
|
-
|
|
|
|
|
- exti_interrupt_flag_clear(INPUT_EXIT_1);
|
|
|
|
|
- exti_interrupt_flag_clear(INPUT_EXIT_2);
|
|
|
|
|
|
|
+//
|
|
|
|
|
+// exti_interrupt_flag_clear(INPUT_EXIT_1);
|
|
|
|
|
+// exti_interrupt_flag_clear(INPUT_EXIT_2);
|
|
|
exti_interrupt_flag_clear(SWITCH_EXTI);
|
|
exti_interrupt_flag_clear(SWITCH_EXTI);
|
|
|
|
|
|
|
|
sts_data_t * data = get_sts();
|
|
sts_data_t * data = get_sts();
|
|
@@ -55,11 +56,21 @@ void sts_exti_init(void)
|
|
|
|
|
|
|
|
uint8_t get_exti_in_1(void)
|
|
uint8_t get_exti_in_1(void)
|
|
|
{
|
|
{
|
|
|
- return gpio_input_bit_get(GPIOB,INPUT_PIN_1);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if(gpio_input_bit_get(GPIOA,INPUT_PIN_1))
|
|
|
|
|
+ {
|
|
|
|
|
+ return 1;
|
|
|
|
|
+ }else
|
|
|
|
|
+ return 0;
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
uint8_t get_exti_in_2(void)
|
|
uint8_t get_exti_in_2(void)
|
|
|
{
|
|
{
|
|
|
- return gpio_input_bit_get(GPIOB,INPUT_PIN_2);
|
|
|
|
|
|
|
+ if(gpio_input_bit_get(GPIOA,INPUT_PIN_2))
|
|
|
|
|
+ {
|
|
|
|
|
+ return 1;
|
|
|
|
|
+ }else
|
|
|
|
|
+ return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -86,7 +97,11 @@ static void read_input_level(uint8_t channel)
|
|
|
|
|
|
|
|
uint8_t get_exti_switch(void)
|
|
uint8_t get_exti_switch(void)
|
|
|
{
|
|
{
|
|
|
- return gpio_input_bit_get(GPIOB,SWTICH_PIN);
|
|
|
|
|
|
|
+ if(gpio_input_bit_get(GPIOB,SWTICH_PIN))
|
|
|
|
|
+ {
|
|
|
|
|
+ return 1;
|
|
|
|
|
+ }else
|
|
|
|
|
+ return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
static void read_switch_level()
|
|
static void read_switch_level()
|
|
@@ -95,40 +110,47 @@ static void read_switch_level()
|
|
|
data->switch_status = get_exti_switch();
|
|
data->switch_status = get_exti_switch();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-void EXTI4_15_IRQHandler(void)
|
|
|
|
|
|
|
+void EXTI0_1_IRQHandler(void)
|
|
|
{
|
|
{
|
|
|
sts_data_t * data = get_sts();
|
|
sts_data_t * data = get_sts();
|
|
|
if(RESET != exti_interrupt_flag_get(INPUT_EXIT_1))
|
|
if(RESET != exti_interrupt_flag_get(INPUT_EXIT_1))
|
|
|
{
|
|
{
|
|
|
|
|
+ exti_interrupt_flag_clear(INPUT_EXIT_1);
|
|
|
if(get_exti_in_1() == SET) //rising
|
|
if(get_exti_in_1() == SET) //rising
|
|
|
- {
|
|
|
|
|
- data->m_data.input_status.input_status[INPUT_CHANNEL_1] = 1;
|
|
|
|
|
- }else //falling
|
|
|
|
|
{
|
|
{
|
|
|
data->m_data.input_status.input_status[INPUT_CHANNEL_1] = 0;
|
|
data->m_data.input_status.input_status[INPUT_CHANNEL_1] = 0;
|
|
|
if(data->m_data.input_status.input_status[INPUT_CHANNEL_2])
|
|
if(data->m_data.input_status.input_status[INPUT_CHANNEL_2])
|
|
|
{
|
|
{
|
|
|
data->choise_input(INPUT_CHANNEL_2);
|
|
data->choise_input(INPUT_CHANNEL_2);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ }else //falling
|
|
|
|
|
+ {
|
|
|
|
|
+ data->m_data.input_status.input_status[INPUT_CHANNEL_1] = 1;
|
|
|
}
|
|
}
|
|
|
- exti_interrupt_flag_clear(INPUT_EXIT_1);
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
if(RESET != exti_interrupt_flag_get(INPUT_EXIT_2))
|
|
if(RESET != exti_interrupt_flag_get(INPUT_EXIT_2))
|
|
|
{
|
|
{
|
|
|
if(get_exti_in_2() == SET) //rising
|
|
if(get_exti_in_2() == SET) //rising
|
|
|
- {
|
|
|
|
|
- data->m_data.input_status.input_status[INPUT_CHANNEL_2] = 1;
|
|
|
|
|
- }else //falling
|
|
|
|
|
{
|
|
{
|
|
|
data->m_data.input_status.input_status[INPUT_CHANNEL_2] = 0;
|
|
data->m_data.input_status.input_status[INPUT_CHANNEL_2] = 0;
|
|
|
if(data->m_data.input_status.input_status[INPUT_CHANNEL_1])
|
|
if(data->m_data.input_status.input_status[INPUT_CHANNEL_1])
|
|
|
{
|
|
{
|
|
|
data->choise_input(INPUT_CHANNEL_1);
|
|
data->choise_input(INPUT_CHANNEL_1);
|
|
|
}
|
|
}
|
|
|
|
|
+ }else //falling
|
|
|
|
|
+ {
|
|
|
|
|
+
|
|
|
|
|
+ data->m_data.input_status.input_status[INPUT_CHANNEL_2] = 1;
|
|
|
}
|
|
}
|
|
|
exti_interrupt_flag_clear(INPUT_EXIT_2);
|
|
exti_interrupt_flag_clear(INPUT_EXIT_2);
|
|
|
}
|
|
}
|
|
|
|
|
+}
|
|
|
|
|
+void EXTI4_15_IRQHandler(void)
|
|
|
|
|
+{
|
|
|
|
|
+ sts_data_t * data = get_sts();
|
|
|
|
|
+
|
|
|
if(RESET != exti_interrupt_flag_get(SWITCH_EXTI))
|
|
if(RESET != exti_interrupt_flag_get(SWITCH_EXTI))
|
|
|
{
|
|
{
|
|
|
if(get_exti_switch() == SET) //rising
|
|
if(get_exti_switch() == SET) //rising
|