使用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();}