关于LVGL低功耗,唤醒后崩溃了



  • void app_enter_sleep_handler(void)
    {
    if(g_group!=NULL)
    {
    lv_group_remove_all_objs(g_group);
    }
    if(prj_parent_cont!=NULL)
    {
    lv_obj_clean(prj_parent_cont);

    }
    lv_obj_add_flag(prj_parent_cont,LV_OBJ_FLAG_HIDDEN);
    

    // ui_clear_all();
    // at_send_rsp((char *)"<mAp>");
    // laser_state = 0;
    pmu_ioldosw_ctrl(false);
    os_timer_stop(&lv_schedule_timer);
    stop_encoder_timer();
    timer_stop(Timer0);
    NVIC_DisableIRQ(TIMER0_IRQn);
    wakeup_gpio_cfg();//config wakeup io handler
    //sys_sleep_gpio();
    }
    void app_exit_sleep_handler(void)
    {
    system_sleep_disable();
    printf("1");
    clear_sleep_record_time();
    pmu_port_wakeup_func_clear(GPIO_PORT_D,(1<<GPIO_BIT_0));
    // pmu_port_wakeup_func_clear(GPIO_PORT_D,(1<<GPIO_BIT_3));
    printf("2");
    pmu_ioldosw_ctrl(true);
    __SYSTEM_GPIO_CLK_ENABLE();
    system_regs->mdm_qspi_cfg.qspi_ref_128m_en = 1; // configure qspi reference clock to 128MHz
    system_regs->mdm_qspi_cfg.qspi_ref_clk_sel = 1; // qspi is used for internal flash, set its reference clock to 96MHz
    system_set_internal_flash_clock_div(0);
    // configure PSRAM pin and init PSRAM
    system_set_port_mux(GPIO_PORT_C, GPIO_BIT_0, PORTC0_FUNC_QSPI0_IO3);
    system_set_port_mux(GPIO_PORT_C, GPIO_BIT_1, PORTC1_FUNC_QSPI0_SCLK0);
    system_set_port_mux(GPIO_PORT_C, GPIO_BIT_2, PORTC2_FUNC_QSPI0_CSN0);
    system_set_port_mux(GPIO_PORT_C, GPIO_BIT_3, PORTC3_FUNC_QSPI0_IO1);
    system_set_port_mux(GPIO_PORT_C, GPIO_BIT_4, PORTC4_FUNC_QSPI0_IO2);
    system_set_port_mux(GPIO_PORT_C, GPIO_BIT_5, PORTC5_FUNC_QSPI0_IO0);
    psram_init();

    printf("3");
    sensor_iic_init();
    

    // at_load_info_from_flash();
    get_gain();
    // User task initialization, for buttons.
    // user_task_init();
    uart0_init(115200);
    uart1_init(9600);
    led_init();
    curr_img_id=0;
    funflag = QINGJIAO_F;
    ledflag = 3;

    // gui_main();
    display_init();
    printf("4");

    printf("5");
    printf("5a1 coords.x1=%d\n", prj_parent_cont->coords.x1);
    prj_prev_cont = lv_obj_create(prj_parent_cont);
    printf("6");
    knob_home_page_entry(prj_prev_cont);
    printf("7");
    lv_obj_clear_flag(prj_parent_cont,LV_OBJ_FLAG_HIDDEN);
    printf("app_exit_sleep_handler %d\r\n",os_get_free_heap_size());
    input_encoder_init();
    __SYSTEM_TIMER_CLK_ENABLE();
    timer_init(Timer0, system_get_clock_config()*500*LV_TICK_COUNT, TIMER_DIV_NONE);
    timer_start(Timer0);
    NVIC_SetPriority(TIMER0_IRQn, 5);
    NVIC_EnableIRQ(TIMER0_IRQn);
    os_timer_start(&lv_schedule_timer, 10, true);
    

    }
    唤醒时再prj_prev_cont = lv_obj_create(prj_parent_cont);这里奔溃了。
    0_1794203805294_455f9dc6-332c-4b05-9fa4-27cda513d66d-image.png
    这是什么原因,该怎么解决?