41集 ESP32 LVGL屏幕显示AI对话代码流程分析

41集 ESP32 LVGL屏幕显示AI对话代码流程分析

我们用的工程师ai_chat
有啥技术问题可以进Q群 174742054(开发者联盟),进群讨论。

app_main

–》spi_bus_initialize(LCD_HOST, &buscfg 初始化SPI
–》esp_lcd_new_panel_io_spi 把io_handle和io_config挂载到SPI接口上,io_config这里面挂了个.user_ctx = &disp_drv,,
------》example_notify_lvgl_flush_ready 这里注册了个回调函数
–》esp_lcd_new_panel_st7789把io_handle panel_config panel_handle关联到Panel上。
–》 ESP_ERROR_CHECK(esp_lcd_panel_reset(panel_handle));
ESP_ERROR_CHECK(esp_lcd_panel_init(panel_handle));
ESP_ERROR_CHECK(esp_lcd_panel_swap_xy(panel_handle, true));
ESP_ERROR_CHECK(esp_lcd_panel_mirror(panel_handle, true, false));
ESP_ERROR_CHECK(esp_lcd_panel_invert_color(panel_handle, true));
ESP_ERROR_CHECK(esp_lcd_panel_disp_on_off(panel_handle, true));
这一步是初始化panel,并且显示
–》tp_io_config = ESP_LCD_TOUCH_IO_I2C_FT5x06_CONFIG();触摸屏
–》esp_lcd_touch_new_i2c_ft5x06 把tp_io_handle, &tp_cfg, &tp都和IIC相关联
------》esp_lcd_touch_ft5x06->read_data = esp_lcd_touch_ft5x06_read_data;
esp_lcd_touch_ft5x06->get_xy = esp_lcd_touch_ft5x06_get_xy;
esp_lcd_touch_ft5x06->del = esp_lcd_touch_ft5x06_del;
这里面注册了几个回调函数
------》GPIO_MODE_INPUT PIN0 作为TP的中断, 之后gpio_config
------》esp_lcd_touch_register_interrupt_callback 这里应该是没有注册终端回调
------》gpio_config,touch_ft5x06_reset
------》touch_ft5x06_init 通过IIC初始化芯片

–》lv_init,初始化LVGL,lv_disp_draw_buf_init初始化buf
–》lv_disp_drv_init(&disp_drv);
之后注册了回调,buffer和panel
disp_drv.flush_cb = example_lvgl_flush_cb;
disp_drv.draw_buf = &disp_buf;
disp_drv.user_data = panel_handle;
–》lv_disp_drv_register(&disp_drv);
------》disp_def 全局变量初始化了,
–》esp_timer_create tick是2ms
–》esp_timer_start_periodic
–》lv_indev_drv_init 初始化LVGL的input device TP,example_lvgl_touch_cb注册回调。
–》lv_indev_drv_register(&indev_drv); 注册这个输入设备到LVGL上
–》lcd_brightness_init 之后初始化背光
–》lv_gui_start();
------》*gif_start = lv_gif_create(lv_scr_act()); 显示GIF图片
------》lv_gif_set_src(gif_start, &img_bilibili120); 设置具体图片
------》lv_obj_align 设置图片对齐
------》lv_label_create (lv_scr_act()) 创建label,挂载点是上面的src
------》lv_obj_align
------》lv_obj_set_style_text_font
------》lv_label_set_text “正在连接wifi…”

–》xTaskCreate(main_page_task, 创建主页
------》lv_obj_clean(lv_scr_act());清空开机页
------》lv_main_page 显示主页
------》lv_obj_set_style_bg_color 背景颜色
------》lv_style_init 初始化style
------》lv_style_set_radius
------》lv_style_set_bg_opa 设置opacity透明度
------》lv_style_set_bg_color
------》lv_style_set_border_width
------》lv_style_set_pad_all
------》lv_style_set_width
------》lv_style_set_height
------》lv_obj_create 创建目标挂载在活动屏幕上
------》lv_obj_add_style把设置的style挂在object上
------》lv_label_create
------》lv_obj_set_width,lv_label_set_long_mode,lv_obj_align,lv_label_set_text
------》lv_label_create,lv_obj_set_style_text_font,lv_label_set_text

-----》lv_timer_create 创建了个timer,周期100ms回调value_update_cb
----------》在value_update_cb中,调用lv_label_set_text_fmt 设置ask_text或者minimax_content在两个label中,完成对话显示。
----------》这里面的ask_flag,answer_flag在ai_chat_task中,当收到数据的时候置1 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柔贝特三哥

你的鼓励是我坚持创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值