使用FR8008GP-U LVGLDemo 创建控件反复重启



  • 使用FR8008GP-U LVGLDemo创建控件反复重启
    工程:fr8000u_sdk\examples\evm\gui_demo_8_1_BLE
    修改部分:将蓝牙,PSRAM部分和触摸都去掉了,初始化LVGL和LCD7789驱动都没问题,只要我创建LVGL控件,芯片就会复位

    屏蔽掉创建按键就不会复位了,是不是栈和堆溢出,如果是在哪设置呢

    static void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
    {
    st7789v_disp_flush(area->x1,area->x2,area->y1,area->y2,color_p->full);
    lv_disp_flush_ready(disp);
    }

    void gui_main(void)
    {
    //touchpad_init(NULL);
    display_init();

    lv_init();
    	static lv_disp_draw_buf_t draw_buf_dsc_1;;
    	static lv_color_t buf_1[LV_BUFFER_SIZE];
    

    // static uint16_t buf[LV_BUFFER_SIZE];
    // lv_disp_buf_init(&disp_buf, buf, NULL, LV_BUFFER_SIZE); /Initialize the display buffer/
    // lv_disp_draw_buf_init(&disp_buf, (void )0x22000000, (void )0x22050000/(0x22000000+LV_HOR_RES_MAX * LV_VER_RES_MAX * sizeof(lv_color_t))/, LV_HOR_RES_MAX * LV_VER_RES_MAX); /Initialize the display buffer/
    lv_disp_draw_buf_init(&draw_buf_dsc_1,buf_1,NULL,LV_BUFFER_SIZE);

    /* Implement and register a function which can copy the rendered image to an area of your display */
    static lv_disp_drv_t disp_drv;               /*Descriptor of a display driver*/
    lv_disp_drv_init(&disp_drv);          /*Basic initialization*/
    disp_drv.flush_cb = my_disp_flush;    /*Set your driver function*/
    disp_drv.draw_buf = &draw_buf_dsc_1;        /*Assign the buffer to the display*/
    disp_drv.hor_res = LV_HOR_RES_MAX;
    disp_drv.ver_res = LV_VER_RES_MAX;
    disp_drv.full_refresh = 0;
    lv_disp_drv_register(&disp_drv);      /*Finally register the driver*/
    
    /* Implement and register a function which can read an input device. E.g. for a touch pad */
    

    // static lv_indev_drv_t indev_drv; /Descriptor of a input device driver/
    // lv_indev_drv_init(&indev_drv); /Basic initialization/
    // indev_drv.type = LV_INDEV_TYPE_POINTER; /Touch pad is a pointer-like device/
    // indev_drv.read_cb = my_touchpad_read; /Set your driver function/
    // lv_indev_drv_register(&indev_drv); /Finally register the driver/

    __SYSTEM_TIMER_CLK_ENABLE();
    timer_init(Timer0, system_get_clock_config()*1000*LV_TICK_COUNT, TIMER_DIV_NONE);
    timer_start(Timer0);
    NVIC_SetPriority(TIMER0_IRQn, 5);
    NVIC_EnableIRQ(TIMER0_IRQn);
    
    os_timer_init(&lv_schedule_timer, lv_schedule_timer_handler, NULL);
    os_timer_start(&lv_schedule_timer, 20, true);
    

    // timer_init(Timer1, system_get_clock_config()1000100, TIMER_DIV_NONE);
    // timer_start(Timer1);
    // NVIC_SetPriority(TIMER1_IRQn, 6);
    // NVIC_EnableIRQ(TIMER1_IRQn);

    lv_obj_t *myBtn = lv_btn_create(lv_scr_act());                               // ????; ???:??????
    lv_obj_set_pos(myBtn, 10, 10);                                               // ????
    	lv_obj_set_style_bg_color(myBtn, lv_color_hex(0xFF0000), 0); // ?????
    lv_obj_set_size(myBtn, 120, 50);                                             // ????
    	lv_obj_center(myBtn);
    	//create_btn(lv_scr_act(), 20, 20, 120, 50, "btn1");
    //lv_demo_widgets();
    //lv_demo_benchmark();
    //lv_ex_calendar_1();
    //lv_demo_music();
    

    }