news 2026/2/14 16:39:41

LVGL | 不同刷屏感受

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LVGL | 不同刷屏感受

使用三种刷屏方式来感受不同的刷屏体验,因为GD32F103的SPI速度有限,所以刷屏速度不会很快,但是可以直观对比不同速度下的刷屏。

第一种

void main_lcd_fill_0(void) { uint16_t x, y; for (y = 0; y < LCD_H; y++) { for (x = 0; x < LCD_W; x++) { drv_lcd_draw_point(x, y, 0x001F); } } }

直接使用画点函数一个点一个点画,刷屏速度是最慢。

第二种

void main_lcd_fill_1(uint16_t xsta, uint16_t ysta, uint16_t xend, uint16_t yend, uint16_t color) { uint16_t i, j; drv_lcd_address_set(xsta, ysta, xend - 1, yend - 1); LCD_CS_CLR(); for (i = ysta; i < yend; i++) { for (j = xsta; j < xend; j++) { drv_spi0_read_write(color >> 8); drv_spi0_read_write(color); } } LCD_CS_SET(); }

设置好显示区域,然后一次性通过硬件SPI发送数据,减少了每次都需要设置一次显示区域,速度比第一种快。

第三种

uint8_t arr_buff[2048] = {0}; void main_lcd_fill_2(uint16_t xsta, uint16_t ysta, uint16_t xend, uint16_t yend, uint16_t color) { for (uint16_t i = 0; i < 2048; i += 2) { arr_buff[i + 0] = color >> 8; arr_buff[i + 1] = color; } drv_lcd_address_set(xsta, ysta, xend - 1, yend - 1); LCD_CS_CLR(); for (uint8_t i = 0; i < 75; i++) { drv_spi0_dma_transmit(arr_buff, 2048); } LCD_CS_SET(); }

在第二种的基础上调用了DMA发送,速度是最快的。

主函数实现

#include "main.h" void main_lcd_fill_0(void) { uint16_t x, y; for (y = 0; y < LCD_H; y++) { for (x = 0; x < LCD_W; x++) { drv_lcd_draw_point(x, y, 0x001F); } } } void main_lcd_fill_1(uint16_t xsta, uint16_t ysta, uint16_t xend, uint16_t yend, uint16_t color) { uint16_t i, j; drv_lcd_address_set(xsta, ysta, xend - 1, yend - 1); LCD_CS_CLR(); for (i = ysta; i < yend; i++) { for (j = xsta; j < xend; j++) { drv_spi0_read_write(color >> 8); drv_spi0_read_write(color); } } LCD_CS_SET(); } uint8_t arr_buff[2048] = {0}; void main_lcd_fill_2(uint16_t xsta, uint16_t ysta, uint16_t xend, uint16_t yend, uint16_t color) { for (uint16_t i = 0; i < 2048; i += 2) { arr_buff[i + 0] = color >> 8; arr_buff[i + 1] = color; } drv_lcd_address_set(xsta, ysta, xend - 1, yend - 1); LCD_CS_CLR(); for (uint8_t i = 0; i < 75; i++) { drv_spi0_dma_transmit(arr_buff, 2048); } LCD_CS_SET(); } // 外设初始化 void main_driver_init(void) { drv_usart_init(); drv_timer_init(); drv_spi0_init(); drv_lcd_init(); // main_lcd_fill_0(); // main_lcd_fill_1(0, 0, LCD_W, LCD_H, 0x001f); main_lcd_fill_2(0, 0, LCD_W, LCD_H, 0x001f); } void main_delay_ms(uint32_t value) { for (uint32_t i = 0; i < value; i++) { // 1ms for (uint16_t j = 0; j < 15428; j++) { __NOP(); } } } // 主循环 int main(void) { nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0); main_driver_init(); printfk(LOG, "init ok\n"); while (1) { printfk(LOG, "...\n"); main_delay_ms(1000); } } void TIMER4_IRQHandler(void) { if (SET == timer_interrupt_flag_get(TIMER4, TIMER_INT_FLAG_UP)) { timer_interrupt_flag_clear(TIMER4, TIMER_INT_FLAG_UP); } } void USART0_IRQHandler(void) { if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)) { usart_interrupt_flag_clear(USART0, USART_INT_FLAG_RBNE); } if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_IDLE)) { usart_interrupt_flag_clear(USART0, USART_INT_FLAG_IDLE); } } void USART2_IRQHandler(void) { if (RESET != usart_interrupt_flag_get(USART2, USART_INT_FLAG_RBNE)) { usart_interrupt_flag_clear(USART2, USART_INT_FLAG_RBNE); } if (RESET != usart_interrupt_flag_get(USART2, USART_INT_FLAG_IDLE)) { usart_interrupt_flag_clear(USART2, USART_INT_FLAG_IDLE); } }

使用DMA方式进行刷屏是最快的,SPI方式比较适合驱动小屏幕,大屏最好换其他接口的显示屏。

最小显示屏项目模板如下,后期就在这个基础上移植LVGL。

--end--

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/8 16:26:53

力控机器人推荐,从原理到选型,解锁柔性生产新可能

在智能制造的浪潮下&#xff0c;传统工业机器人“刚性操作”的局限性日益凸显&#xff0c;无法满足精密装配、曲面打磨、医疗康复等领域对“力度把控”的精细化需求。而力控机器人凭借其精准的力觉感知与自适应柔顺控制能力&#xff0c;成为解决这类高附加值场景作业难题的核心…

作者头像 李华
网站建设 2026/2/9 7:29:22

DocMost新手教程:5分钟上手AI文档管理

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个交互式新手教程应用&#xff0c;功能包括&#xff1a;1. 分步引导用户使用DocMost核心功能&#xff1b;2. 提供实时反馈和错误提示&#xff1b;3. 包含示例文档和模板&…

作者头像 李华
网站建设 2026/2/11 23:44:50

学生评价标准与示例,AI生成评价新方式

摘要Top Pick&#xff1a;爱查分 核心价值&#xff1a;3分钟完成全班个性化评语&#xff0c;让每个学生都被真正看见 关键亮点&#xff1a; • AI智能生成&#xff0c;结合真实成绩数据自动分析学生特点 • 40多个学生的评语3分钟完成&#xff0c;告别深夜套模板 • 支持个性化…

作者头像 李华
网站建设 2026/2/6 20:06:38

电商系统中的MySQL NULL处理实战:NVL的5个典型场景

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个电商数据库查询示例&#xff0c;包含订单表和用户表。展示5种使用NVL/IFNULL/COALESCE处理NULL值的场景&#xff1a;1) 未填写收货地址时显示默认地址 2) 未评分订单显示默…

作者头像 李华
网站建设 2026/2/9 17:38:16

10 个高效降AI率工具,研究生必备推荐!

10 个高效降AI率工具&#xff0c;研究生必备推荐&#xff01; AI降重工具&#xff1a;让论文更自然&#xff0c;让学术更纯粹 在当前学术研究中&#xff0c;越来越多的研究生开始关注论文的AIGC率问题。随着AI写作技术的普及&#xff0c;许多学生在撰写论文时会借助AI工具提高效…

作者头像 李华
网站建设 2026/2/7 6:18:57

用Xcode快速原型设计:1小时打造App概念验证

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Xcode原型模板&#xff0c;包含常用UI组件和交互模式。模板应支持快速拖拽搭建界面&#xff0c;自动生成基础代码&#xff0c;一键预览效果。要求模板模块化设计&#xff0…

作者头像 李华