|
|
@@ -8,9 +8,9 @@ void gpio_init(void){
|
|
|
|
|
|
#if (CONFIG_BOARD_TYPE==SHARK_BOARD_SP700)
|
|
|
//hall 2 detect
|
|
|
- gpio_mode_input(GPIOC, GPIO_PUPD_NONE, GPIO_PIN_13);
|
|
|
+ gpio_mode_input(GPIOC, GPIO_PUPD_PULLUP, GPIO_PIN_13);
|
|
|
//hall 1 detect
|
|
|
- gpio_mode_input(GPIOC, GPIO_PUPD_NONE, GPIO_PIN_15);
|
|
|
+ gpio_mode_input(GPIOC, GPIO_PUPD_PULLUP, GPIO_PIN_15);
|
|
|
|
|
|
//IR uart0 enable
|
|
|
gpio_mode_output(GPIOC, GPIO_PUPD_NONE, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_14);
|
|
|
@@ -68,17 +68,35 @@ void gpio_init(void){
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+static int _exti4_15_irq_enable = 0;
|
|
|
+
|
|
|
+static void enable_exti4_15_irq(int enable){
|
|
|
+ __disable_irq();
|
|
|
+ if (enable) {
|
|
|
+ if (_exti4_15_irq_enable++ == 0){
|
|
|
+ nvic_irq_enable(EXTI4_15_IRQn, 4U, 0U);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ if (_exti4_15_irq_enable-- == 1){
|
|
|
+ nvic_irq_disable(EXTI4_15_IRQn);
|
|
|
+ }
|
|
|
+ if (_exti4_15_irq_enable < 0){
|
|
|
+ _exti4_15_irq_enable = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ __enable_irq();
|
|
|
+}
|
|
|
+
|
|
|
void charger_detect_irq_enable(int enable){
|
|
|
if (enable){
|
|
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOB, EXTI_SOURCE_PIN10);
|
|
|
exti_init(EXTI_10, EXTI_INTERRUPT, EXTI_TRIG_BOTH);
|
|
|
- nvic_irq_enable(EXTI4_15_IRQn, 4U, 0U);
|
|
|
- exti_interrupt_flag_clear(EXTI_10);
|
|
|
- exti_interrupt_enable(EXTI_10);
|
|
|
+ exti_flag_clear(EXTI_10);
|
|
|
+ enable_exti4_15_irq(1);
|
|
|
}else {
|
|
|
- //nvic_irq_disable(EXTI4_15_IRQn);
|
|
|
+ enable_exti4_15_irq(0);
|
|
|
exti_interrupt_disable(EXTI_10);
|
|
|
- exti_interrupt_flag_clear(EXTI_10);
|
|
|
+ exti_flag_clear(EXTI_10);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -86,27 +104,25 @@ void ml5238_irq_enable(int enable){
|
|
|
if (enable){
|
|
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOA, EXTI_SOURCE_PIN12);
|
|
|
exti_init(EXTI_12, EXTI_INTERRUPT, EXTI_TRIG_FALLING);
|
|
|
- nvic_irq_enable(EXTI4_15_IRQn, 4U, 0U);
|
|
|
- exti_interrupt_flag_clear(EXTI_12);
|
|
|
- exti_interrupt_enable(EXTI_12);
|
|
|
+ exti_flag_clear(EXTI_12);
|
|
|
+ enable_exti4_15_irq(1);
|
|
|
}else {
|
|
|
- //nvic_irq_disable(EXTI4_15_IRQn);
|
|
|
+ enable_exti4_15_irq(0);
|
|
|
exti_interrupt_disable(EXTI_12);
|
|
|
- exti_interrupt_flag_clear(EXTI_12);
|
|
|
+ exti_flag_clear(EXTI_12);
|
|
|
}
|
|
|
}
|
|
|
#if (CONFIG_BOARD_TYPE==SHARK_BOARD_SP700)
|
|
|
void hall_1_detect_irq_enable(int enable){
|
|
|
if (enable){
|
|
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOC, EXTI_SOURCE_PIN15);
|
|
|
- exti_init(EXTI_15, EXTI_INTERRUPT, EXTI_TRIG_BOTH);
|
|
|
- nvic_irq_enable(EXTI4_15_IRQn, 4U, 0U);
|
|
|
- exti_interrupt_flag_clear(EXTI_15);
|
|
|
- exti_interrupt_enable(EXTI_15);
|
|
|
+ exti_flag_clear(EXTI_15);
|
|
|
+ exti_init(EXTI_15, EXTI_INTERRUPT, EXTI_TRIG_FALLING);
|
|
|
+ enable_exti4_15_irq(1);
|
|
|
}else {
|
|
|
- //nvic_irq_disable(EXTI4_15_IRQn);
|
|
|
+ enable_exti4_15_irq(0);
|
|
|
exti_interrupt_disable(EXTI_15);
|
|
|
- exti_interrupt_flag_clear(EXTI_15);
|
|
|
+ exti_flag_clear(EXTI_15);
|
|
|
}
|
|
|
}
|
|
|
#else
|
|
|
@@ -116,14 +132,13 @@ void hall_1_detect_irq_enable(int enable){
|
|
|
void hall_2_detect_irq_enable(int enable){
|
|
|
if (enable){
|
|
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOC, EXTI_SOURCE_PIN13);
|
|
|
- exti_init(EXTI_13, EXTI_INTERRUPT, EXTI_TRIG_BOTH);
|
|
|
- nvic_irq_enable(EXTI4_15_IRQn, 4U, 0U);
|
|
|
- exti_interrupt_flag_clear(EXTI_13);
|
|
|
- exti_interrupt_enable(EXTI_13);
|
|
|
+ exti_flag_clear(EXTI_13);
|
|
|
+ exti_init(EXTI_13, EXTI_INTERRUPT, EXTI_TRIG_FALLING);
|
|
|
+ enable_exti4_15_irq(1);
|
|
|
}else {
|
|
|
- //nvic_irq_disable(EXTI4_15_IRQn);
|
|
|
+ enable_exti4_15_irq(0);
|
|
|
exti_interrupt_disable(EXTI_13);
|
|
|
- exti_interrupt_flag_clear(EXTI_13);
|
|
|
+ exti_flag_clear(EXTI_13);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -131,14 +146,13 @@ void hall_2_detect_irq_enable(int enable){
|
|
|
void small_current_short_irq_enable(int enable){
|
|
|
if (enable){
|
|
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOB, EXTI_SOURCE_PIN11);
|
|
|
- exti_init(EXTI_11, EXTI_INTERRUPT, EXTI_TRIG_FALLING);
|
|
|
- nvic_irq_enable(EXTI4_15_IRQn, 4U, 0U);
|
|
|
- exti_interrupt_flag_clear(EXTI_11);
|
|
|
- exti_interrupt_enable(EXTI_11);
|
|
|
+ exti_flag_clear(EXTI_11);
|
|
|
+ exti_init(EXTI_11, EXTI_INTERRUPT, EXTI_TRIG_FALLING);
|
|
|
+ enable_exti4_15_irq(1);
|
|
|
}else {
|
|
|
- //nvic_irq_disable(EXTI4_15_IRQn);
|
|
|
+ enable_exti4_15_irq(0);
|
|
|
exti_interrupt_disable(EXTI_11);
|
|
|
- exti_interrupt_flag_clear(EXTI_11);
|
|
|
+ exti_flag_clear(EXTI_11);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -146,13 +160,12 @@ void dcdc_pwr_detect_irq_enable(int enable){
|
|
|
if (enable){
|
|
|
syscfg_exti_line_config(EXTI_SOURCE_GPIOF, EXTI_SOURCE_PIN7);
|
|
|
exti_init(EXTI_7, EXTI_INTERRUPT, EXTI_TRIG_BOTH);
|
|
|
- nvic_irq_enable(EXTI4_15_IRQn, 4U, 0U);
|
|
|
- exti_interrupt_flag_clear(EXTI_7);
|
|
|
- exti_interrupt_enable(EXTI_7);
|
|
|
+ exti_flag_clear(EXTI_7);
|
|
|
+ enable_exti4_15_irq(1);
|
|
|
}else {
|
|
|
- //nvic_irq_disable(EXTI4_15_IRQn);
|
|
|
+ enable_exti4_15_irq(0);
|
|
|
exti_interrupt_disable(EXTI_7);
|
|
|
- exti_interrupt_flag_clear(EXTI_7);
|
|
|
+ exti_flag_clear(EXTI_7);
|
|
|
}
|
|
|
}
|
|
|
|