STM32F103ZET6使用LVGL渲染Bug记录

文章讲述了开发者在使用STM32F103ZET6开发板上的LVGL渲染库时遇到的问题,包括颜色渲染不完整(除黑色外)导致的画面撕裂,以及在设置CodeBlocks为GBK编码后中文字符无法正常显示,解决方法指向UTF-8编码设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

硬件:正点原子STM32F103ZET6最小系统开发板
渲染库:LVGL 版本未知

当使用lv_make_color()给文字和外边框赋颜色时,
渲染画面会发生撕裂,纠结了好久,起初认为是帧缓冲区不够,加大后并没有什么卵用。
后来发现 当使用除黑色以外的其他颜色时,撕裂现象不见?
我tm的傻了
在这里插入图片描述
2023年11月4日:
CodeBlocks设置了GBK后 导入中文字符在LVGL上渲染失败
需要设置UTF-8

### STM32F103ZET6 使用 TFT 显示屏与 LVGL 图形库的开发配置 #### 配置环境准备 为了使STM32F103ZET6能够成功运行带有LVGL图形界面的应用程序,首先需要完成硬件和软件两方面的准备工作。 在硬件方面,确保已经正确连接了TFT显示屏到STM32F103ZET6板子上。通常情况下,这涉及到使用并行接口如FSMC来传输图像数据给屏幕[^3]。 对于软件部分,则需安装必要的工具链和支持包,比如STM32CubeMX用于初始化项目设置以及生成启动代码;还需要下载最新版本的LVGL库,并将其集成至工程之中[^2]。 #### FSMC 接口配置 利用STM32CubeMX可以简化外设配置过程,在此期间应特别注意调整NOR Flash控制器的相关参数以适应所选显示器的要求。具体来说,针对异步突发模式下工作的设备,应当适当设定地址建立时间(ADDSET),数据建立时间(DATASET) 和地址保持时间(ADDHLD)[^4]。 ```c // 示例:通过 HAL 库函数配置 FSMC 参数 void MX_FSMC_Init(void) { FMC_NORSRAM_TimingTypeDef Timing; /* NOR/SRAM controller configuration */ hsram1.Instance = FMC_NORSRAM_DEVICE; // 设置 ADDSET, DATASET 及其他必要选项... } ``` #### 移植 LVGLSTM32 平台 接下来就是将LVGL源码加入工程项目里边去。按照官方指南操作,把`LVGL/src`目录里的各个组件复制粘贴过来即可。之后还需定义好显示缓冲区大小、颜色格式等细节问题以便于后续绘制工作正常开展。 ```c #define DISP_BUF_SIZE (320 * 240 / 10) static lv_disp_buf_t disp_buf_1; static uint8_t buf_1[DISPBUF_SIZE]; lv_disp_drv_t disp_drv; /* Display driver */ /* Initialize the display buffer and register it with LVGL */ lv_disp_buf_init(&disp_buf_1, buf_1, NULL, DISP_BUF_SIZE); lv_disp_drv_init(&disp_drv); disp_drv.flush_cb = my_display_flush; lv_disp_drv_register(&disp_drv); ``` #### 创建简单的 GUI 页面 最后一步便是编写应用程序逻辑,创建一些基本控件展示出来。这里给出一段简单例子用来说明如何构建一个包含标签(text label)的小窗口: ```c int main(void){ ... // 初始化系统时钟和其他资源... // 启动 LVGL 的任务调度机制 lv_task_handler(); // 添加一个新的页面作为根容器 lv_obj_t* scr = lv_scr_act(); // 新建一个静态文本对象放置在屏幕上 lv_obj_t* label = lv_label_create(scr, NULL); lv_label_set_text(label, "Hello World!"); lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 0); while (1){ // 进入无限循环处理事件队列 lv_task_handler(); osDelay(5); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值