Bladeren bron

update irq&&dcdc enable when startup

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui 5 jaren geleden
bovenliggende
commit
556fdaebbf
4 gewijzigde bestanden met toevoegingen van 43 en 31 verwijderingen
  1. 3 3
      Application/bsp/bsp.c
  2. 15 4
      Application/bsp/gpio.c
  3. 1 0
      Application/bsp/gpio.h
  4. 24 24
      Application/bsp/irqs.c

+ 3 - 3
Application/bsp/bsp.c

@@ -12,7 +12,7 @@ const char iap_board_name[] __attribute__((at(0x08002800))) = "SP600";
 const char iap_fw_version[] __attribute__((at(0x08002A00))) = "1.0";
 const char iap_fw_name[] __attribute__((at(0x08002C00))) = "App";
 
-#define CONFIG_DEBUG 0
+#define CONFIG_DEBUG 1
 
 extern void system_clock_config(void);
 extern void SystemCoreClockUpdate(void);
@@ -21,11 +21,11 @@ extern void SystemCoreClockUpdate(void);
 void bsp_init(void){
 	wdog_start(4);
 	shark_rtc_init();
-	gpio_init();
-	DCDC_VOL_OPEN(1);
+	enable_mcu_power();
 	delay_us(100);
 	system_clock_config(); //after dcdc open, MCU can run on full speed
 	SystemCoreClockUpdate();
+	gpio_init();
 	shark_uart_init(SHARK_UART0);
 	shark_uart_init(SHARK_UART1);
 	AT24CXX_Init();

+ 15 - 4
Application/bsp/gpio.c

@@ -1,7 +1,6 @@
 #include "gpio.h"
 /* all pins used as gpio(input/output/irq) must be defined here */
 void gpio_init(void){
-	rcu_periph_clock_enable(RCU_GPIOA);
 	rcu_periph_clock_enable(RCU_GPIOB);
 	rcu_periph_clock_enable(RCU_GPIOC);
 	rcu_periph_clock_enable(RCU_GPIOF);
@@ -55,8 +54,6 @@ void gpio_init(void){
 	gpio_mode_output(GPIOB, GPIO_PUPD_NONE, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_2);
 	//aux 12v lock detect
 	gpio_mode_input(GPIOB, GPIO_PUPD_NONE, GPIO_PIN_11);
-	//DC-DC enable
-	gpio_mode_output(GPIOA, GPIO_PUPD_NONE, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_11);
 	//DC-DC power good indicat
 	gpio_mode_input(GPIOF, GPIO_PUPD_NONE, GPIO_PIN_7);
 	//ms5238 irq, This pin is a NMOS open drain output pin and output is ¡°L¡± level if interrupted
@@ -68,9 +65,16 @@ void gpio_init(void){
 #endif
 }
 
-static int _exti4_15_irq_enable = 0;
+void enable_mcu_power(void){
+	//DC-DC enable
+	rcu_periph_clock_enable(RCU_GPIOA);
+	gpio_mode_output(GPIOA, GPIO_PUPD_NONE, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_11);
+	gpio_bit_write(GPIOA,GPIO_PIN_11,SET);
+}
 
 static void enable_exti4_15_irq(int enable){
+#if 0	
+	static int _exti4_15_irq_enable = 0;
 	__disable_irq();
 	if (enable) {
 		if (_exti4_15_irq_enable++ == 0){
@@ -85,6 +89,13 @@ static void enable_exti4_15_irq(int enable){
 		}
 	}
 	__enable_irq();
+#else
+	if (enable){
+		nvic_irq_enable(EXTI4_15_IRQn, 4U, 0U);
+	}else {
+		nvic_irq_disable(EXTI4_15_IRQn);
+	}
+#endif
 }
 
 void charger_detect_irq_enable(int enable){

+ 1 - 0
Application/bsp/gpio.h

@@ -81,6 +81,7 @@ static __inline__ void gpio_mode_af(uint32_t gpio_periph, uint32_t pull_up_down,
 	gpio_mode_set(gpio_periph, GPIO_MODE_AF, pull_up_down, pin);
 }
 
+void enable_mcu_power(void);
 void charger_detect_irq_enable(int enable);
 void ml5238_irq_enable(int enable);
 void hall_1_detect_irq_enable(int enable);

+ 24 - 24
Application/bsp/irqs.c

@@ -100,47 +100,47 @@ void __weak hall2_detect_irq_handler(void){}
 void __weak small_current_short_irq_handler(void){}
 void __weak dcdc_pwr_detect_irq_handler(void) {}
 void EXTI4_15_IRQHandler(void){
-	if(RESET != exti_interrupt_flag_get(EXTI_4)){
-		exti_interrupt_flag_clear(EXTI_4);
+	if(RESET != exti_flag_get(EXTI_4)){
+		exti_flag_clear(EXTI_4);
 	}	
-	if(RESET != exti_interrupt_flag_get(EXTI_5)){
-		exti_interrupt_flag_clear(EXTI_5);
+	if(RESET != exti_flag_get(EXTI_5)){
+		exti_flag_clear(EXTI_5);
 	}
-	if(RESET != exti_interrupt_flag_get(EXTI_6)){
-		exti_interrupt_flag_clear(EXTI_6);
+	if(RESET != exti_flag_get(EXTI_6)){
+		exti_flag_clear(EXTI_6);
 	}	
-	if(RESET != exti_interrupt_flag_get(EXTI_7)){
-		exti_interrupt_flag_clear(EXTI_7);
+	if(RESET != exti_flag_get(EXTI_7)){
+		exti_flag_clear(EXTI_7);
 		dcdc_pwr_detect_irq_handler();
 	}
-	if(RESET != exti_interrupt_flag_get(EXTI_8)){
-		exti_interrupt_flag_clear(EXTI_8);
+	if(RESET != exti_flag_get(EXTI_8)){
+		exti_flag_clear(EXTI_8);
 	}
-	if(RESET != exti_interrupt_flag_get(EXTI_9)){
-		exti_interrupt_flag_clear(EXTI_9);
+	if(RESET != exti_flag_get(EXTI_9)){
+		exti_flag_clear(EXTI_9);
 	}		
-	if(RESET != exti_interrupt_flag_get(EXTI_10)){
-		exti_interrupt_flag_clear(EXTI_10);
+	if(RESET != exti_flag_get(EXTI_10)){
+		exti_flag_clear(EXTI_10);
 		charger_detect_irq_handler();
 	}
-	if(RESET != exti_interrupt_flag_get(EXTI_11)){
-		exti_interrupt_flag_clear(EXTI_11);
+	if(RESET != exti_flag_get(EXTI_11)){
+		exti_flag_clear(EXTI_11);
 		small_current_short_irq_handler();
 	}
 	//ms5238 irq
-	if(RESET != exti_interrupt_flag_get(EXTI_12)){
-		exti_interrupt_flag_clear(EXTI_12);
+	if(RESET != exti_flag_get(EXTI_12)){
+		exti_flag_clear(EXTI_12);
 		ml5238_irq_handler();
 	}
-	if(RESET != exti_interrupt_flag_get(EXTI_13)){
-		exti_interrupt_flag_clear(EXTI_13);
+	if(RESET != exti_flag_get(EXTI_13)){
+		exti_flag_clear(EXTI_13);
 		hall2_detect_irq_handler();
 	}
-	if(RESET != exti_interrupt_flag_get(EXTI_14)){
-		exti_interrupt_flag_clear(EXTI_14);
+	if(RESET != exti_flag_get(EXTI_14)){
+		exti_flag_clear(EXTI_14);
 	}
-	if(RESET != exti_interrupt_flag_get(EXTI_15)){
-		exti_interrupt_flag_clear(EXTI_15);
+	if(RESET != exti_flag_get(EXTI_15)){
+		exti_flag_clear(EXTI_15);
 		hall1_detect_irq_handler();
 	}