0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Hi3861移植LVGL教程

嵌入式Share 来源:嵌入式Share 2023-05-18 09:23 次阅读

一、前言

给 Hi3861 适配了硬件 spi ,master 模式下最高 spi 速率可以达到 40M,用来驱动 oled 屏幕。适配过程遇到了一个芯片bug,困扰了很久,clk 管脚驱动能力差,需要外接一个上拉电阻才能正常运行。适配完成移植 lvgl 8,分享适配的过程。

47bba072-f519-11ed-90ce-dac502259ad0.png

二、LVGL移植

上lvgl开源仓搞代码,https://github.com/lvgl/lvgl

2.1 适配 Porting 层

关键点在于将 oled 的画点函数和 lvgl 代码 disp_flush 关联起来。参考如下我的移植,此处 draw point 将画点数据放到一个软件 buff 里面不会刷新硬件,硬件的刷新我单独创建一个线程干这活,所以使用 for 循环遍历,简单!

47d5fce2-f519-11ed-90ce-dac502259ad0.png

因为只有一个显示,没有适配输入以及文件系统,这两个 port 的适配之后再做。

2.2 头文件适配

因为是 oled,只有单色,所以颜色我选了最低8 位色,同时将 lvgl 字体调整为 8 位。

除此之外就是调整 lv_conf.h 里面的屏幕宽度了,其他的可以再后续修改。

47f074dc-f519-11ed-90ce-dac502259ad0.png

2.3 liteos 线程适配

首先适配 lvgl tick 心跳,创建一个软件定时器,1ms 自加 1:

480d1bd2-f519-11ed-90ce-dac502259ad0.png

再创建一个软件定时器周期性的调用 lvgl 的 周期处理函数:

48270e02-f519-11ed-90ce-dac502259ad0.png

前面说的我的 oled 的 spi 硬件刷新在单独的线程里面执行,中断回调的方式,每次刷新256字节,刷新器件,刷新线程会被挂起,释放 cpu 资源,线程设计如下:

483d8574-f519-11ed-90ce-dac502259ad0.png

三、简单的 Demo

写一个简单的 buttom demo:

static void lvgl_ui_init(void)
{
static lv_style_t style;
lv_style_init(&style);
lv_style_set_radius(&style, 2);
lv_style_set_outline_width(&style, 2);
lv_style_set_outline_color(&style, lv_palette_main(LV_PALETTE_BLUE));
lv_style_set_outline_pad(&style, 0);
lv_obj_t *bkg_obj = lv_obj_create(lv_scr_act()); /*创建 obj*/
lv_obj_set_style_bg_color(bkg_obj , lv_color_hex(0x0),0);
lv_obj_set_pos(bkg_obj ,0, 0);
lv_obj_set_size(bkg_obj, 128, 64);
lv_obj_t *btn = lv_btn_create(lv_scr_act()); /*Add a button to the current screen*/
lv_obj_set_style_bg_color(btn , lv_color_hex(0x0),0);
lv_obj_set_size(btn, 70, 24); /*Set its size*/
lv_obj_add_style(btn, &style, 0);
lv_obj_center(btn);
lv_obj_t * label = lv_label_create(btn); /*Add a label to the button*/
lv_label_set_text(label, "Button"); /*Set the labels text*/
}

四、下载运行

可以看到 oled 显示创建好的按键。

485f1ad6-f519-11ed-90ce-dac502259ad0.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    455

    文章

    50711

    浏览量

    423074
  • 上拉电阻
    +关注

    关注

    5

    文章

    359

    浏览量

    30605
  • 移植
    +关注

    关注

    1

    文章

    379

    浏览量

    28124
  • Hi3861
    +关注

    关注

    1

    文章

    59

    浏览量

    6489
  • LVGL
    +关注

    关注

    1

    文章

    83

    浏览量

    2956

原文标题:四、下载运行

文章出处:【微信号:嵌入式Share,微信公众号:嵌入式Share】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    中文编程鸿蒙Hi3861开发基础案例之-04八段数码管

    中文编程鸿蒙Hi3861开发控制八段数码管
    的头像 发表于 05-11 11:47 2873次阅读
    中文编程鸿蒙<b class='flag-5'>Hi3861</b>开发基础案例之-04八段数码管

    小熊派Hi3861获取mpu6050数据在oled屏幕中显示

    小熊派Hi3861获取mpu6050数据在oled屏幕中显示
    的头像 发表于 08-14 14:39 2343次阅读
    小熊派<b class='flag-5'>Hi3861</b>获取mpu6050数据在oled屏幕中显示

    鸿蒙OpenHarmony【轻量系统 烧录】 (基于Hi3861开发板)

    针对Hi3861开发板,除了DevEco Device Tool
    的头像 发表于 05-10 16:59 1122次阅读
    鸿蒙OpenHarmony【轻量系统 烧录】 (基于<b class='flag-5'>Hi3861</b>开发板)

    hi3861如何在移植的main.c中初始化kernel和系统

    代烧友提问:hi3861的vendor代码中找不到如何从flashboot的main.c文件启动内核以及系统的函数和过程。无法从hi3861代码中得到移植启示。其中boot_kernel函数中使用了
    发表于 11-19 12:03

    鸿蒙OpenHarmony-HI3861L移植教程

    HI3861有两款单片机一个是HI3861,一个是HI3861L,HI3861L是HI3861的低功耗版本
    发表于 08-30 19:50

    HarmonyOS Hi3861开发套件-编程速查

    针对Hi3861开发套件整理的编程速查框图,有需要的小伙伴可以自行下载查看。
    发表于 10-19 16:54 86次下载
    HarmonyOS <b class='flag-5'>Hi3861</b>开发套件-编程速查

    HarmonyOS Hi3861 WiFi操作 热点链接

    之前我们使用Hi3861的时候,是使用AT指令连接到WiFi热点的。但是很多时候,我们需要实现开机后自动连接到某个热点,光靠AT指令不行。Hi3861为我们提供了WiFi操作的相关API,方便我们编写代码,实现热点连接。
    发表于 10-21 16:44 69次下载
    HarmonyOS <b class='flag-5'>Hi3861</b> WiFi操作 热点链接

    基于鸿蒙系统+Hi3861的WiFi小车详解

    我们得有一套WiFi小车套件,其实也是Hi3861加上电机、循迹模块、超声波等模块。
    的头像 发表于 11-01 09:41 7687次阅读

    Hi3861其他驱动的开发示例

    摘要:本文简单介绍Hi3861其他驱动的开发示例、包括PWM、SPI、SDIO等。
    的头像 发表于 03-02 18:04 3490次阅读
    <b class='flag-5'>Hi3861</b>其他驱动的开发示例

    基于鸿蒙系统+Hi3861的WiFi小车开发

    本文简单介绍鸿蒙系统 + Hi3861 的WiFi小车开发,适用于开发润和Hi3861开发板的小伙伴们。
    的头像 发表于 03-03 09:31 5683次阅读
    基于鸿蒙系统+<b class='flag-5'>Hi3861</b>的WiFi小车开发

    Hi3861编译烧录更快捷

    Windows环境开发Hi3861,显著提升编译、烧录效率,同时还带来了更多实用的功能及模板,为广大开发者朋友带来更加高效、便捷的开发体验。接下来,让我们来看看吧! 纯Windows环境开发Hi3861,编译烧录
    的头像 发表于 02-11 13:25 927次阅读

    中文编程鸿蒙Hi3861开发基础案例之-01创建新工程

    中文编程鸿蒙Hi3861开发创建新工程
    的头像 发表于 05-11 09:53 2734次阅读
    中文编程鸿蒙<b class='flag-5'>Hi3861</b>开发基础案例之-01创建新工程

    中文编程鸿蒙Hi3861开发基础案例之-02LED灯控制

    中文编程鸿蒙Hi3861开发控制LED灯
    的头像 发表于 05-11 09:54 2914次阅读
    中文编程鸿蒙<b class='flag-5'>Hi3861</b>开发基础案例之-02LED灯控制

    中文编程鸿蒙Hi3861开发基础案例之-03交通红绿灯

    中文编程鸿蒙Hi3861开发模拟交通红绿灯亮与灭控制
    的头像 发表于 05-11 11:27 2150次阅读
    中文编程鸿蒙<b class='flag-5'>Hi3861</b>开发基础案例之-03交通红绿灯

    中文编程鸿蒙Hi3861开发基础案例之-05按键检测

    中文编程鸿蒙Hi3861开发对按键进行输入检测
    的头像 发表于 05-11 12:04 2962次阅读
    中文编程鸿蒙<b class='flag-5'>Hi3861</b>开发基础案例之-05按键检测