#include "lcd_qspi.h"\r
#include "lcd_mipi.h"\r
#include "lcd_bus.h"\r
+#include "button_porting.h"\r
\r
static const lcd_bus_api g_display_api_qspi = {\r
.bus_init = lcd_qspi_init,\r
}\r
}\r
\r
+static button_press_state_t g_pwrkey_press_state = RELEASED;\r
+startup_reason_t startup_reason = 3;\r
+bool pwrkey_interrupt = 0;\r
+\r
+static bool pwrkey_interrupt_check(void)\r
+{\r
+ button_peripheral_api *button_api = button_port_get_api();\r
+ // if not vbus or pwren interrupt return\r
+ if (button_api->button_check_interrupt(PIN_NONE) == false) {\r
+ button_api->button_clear_interrupt(PIN_NONE);\r
+ return false;\r
+ }\r
+ // deal with vbus interrupt\r
+ if (button_api->button_check_vbus_interrupt()) {\r
+ // button_api->button_deal_vbus_event();\r
+ button_api->button_clear_interrupt(PIN_NONE);\r
+ return false;\r
+ }\r
+\r
+ return true;\r
+\r
+}\r
+\r
+void check_pwrkey_3s(void)\r
+{\r
+ //3秒按键开机\r
+ button_peripheral_api *button_api=button_port_get_api();\r
+ bool button_pressed = false;\r
+ int pressed_count = 0;\r
+ // button_api->button_register_callback(PIN_NONE, (osal_irq_handler)button_irq_callback);\r
+ uapi_ulp_wkup_type_record();\r
+ startup_reason = uapi_get_startup_reason();\r
+ pwrkey_interrupt = pwrkey_interrupt_check();\r
+ PRINT("bootup reasion %d (0-systick 1-pwrkey 2-vbus 3-other), pwrkey_interrupt %d"NEWLINE,startup_reason,pwrkey_interrupt);\r
+ if(startup_reason == 1) g_pwrkey_press_state = PRESSED;\r
+ else g_pwrkey_press_state = RELEASED;\r
+\r
+ if (g_pwrkey_press_state == PRESSED)\r
+ {\r
+ while(g_pwrkey_press_state == PRESSED){//按键启动才检测3秒\r
+ g_pwrkey_press_state = button_api->button_get_state(PIN_NONE);\r
+ PRINT("bootup timeout %d g_pwrkey_press_state %d"NEWLINE,pressed_count,g_pwrkey_press_state);\r
+ pressed_count ++ ;\r
+ if (pressed_count>=15)\r
+ {\r
+ break;\r
+ }\r
+ uapi_tcxo_delay_ms(200);\r
+ }\r
+ \r
+ if(pressed_count <15 )\r
+ {\r
+ PRINT("not pressed 3 seconds , poweroff!"NEWLINE);\r
+ uapi_poweroff_device();\r
+ }\r
+ PRINT("bootup continue pressed %d pressed count %d"NEWLINE,g_pwrkey_press_state==PRESSED?1:0,pressed_count);\r
+\r
+ }\r
+ // button_api->button_unregister_callback(PIN_NONE);\r
+}\r
void board_init(uint32_t flash_id, uint32_t flash_unique_id)\r
{\r
/* flash init */\r
\r
pio_func_init();\r
gpio_func_init();\r
-\r
+ check_pwrkey_3s();\r
#ifdef QSPI_DISPLAY\r
PRINT("qspi**************\r\n");\r
lcd_bus_register_api(&g_display_api_qspi, BUS_DISPLAY_QSPI);\r