0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取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 的畫點函數(shù)和 lvgl 代碼 disp_flush 關聯(lián)起來。參考如下我的移植,此處 draw point 將畫點數(shù)據(jù)放到一個軟件 buff 里面不會刷新硬件,硬件的刷新我單獨創(chuàng)建一個線程干這活,所以使用 for 循環(huán)遍歷,簡單!

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

因為只有一個顯示,沒有適配輸入以及文件系統(tǒng),這兩個 port 的適配之后再做。

2.2 頭文件適配

因為是 oled,只有單色,所以顏色我選了最低8 位色,同時將 lvgl 字體調整為 8 位。

除此之外就是調整 lv_conf.h 里面的屏幕寬度了,其他的可以再后續(xù)修改。

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

2.3 liteos 線程適配

首先適配 lvgl tick 心跳,創(chuàng)建一個軟件定時器,1ms 自加 1:

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

再創(chuàng)建一個軟件定時器周期性的調用 lvgl 的 周期處理函數(shù):

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

前面說的我的 oled 的 spi 硬件刷新在單獨的線程里面執(zhí)行,中斷回調的方式,每次刷新256字節(jié),刷新器件,刷新線程會被掛起,釋放 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()); /*創(chuàng)建 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 顯示創(chuàng)建好的按鍵。

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    450

    文章

    49622

    瀏覽量

    417089
  • 上拉電阻
    +關注

    關注

    5

    文章

    355

    瀏覽量

    30438
  • 移植
    +關注

    關注

    1

    文章

    375

    瀏覽量

    28008
  • Hi3861
    +關注

    關注

    1

    文章

    59

    瀏覽量

    6368
  • LVGL
    +關注

    關注

    0

    文章

    79

    瀏覽量

    2734

原文標題:四、下載運行

文章出處:【微信號:嵌入式Share,微信公眾號:嵌入式Share】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    中文編程鴻蒙Hi3861開發(fā)基礎案例之-04八段數(shù)碼管

    中文編程鴻蒙Hi3861開發(fā)控制八段數(shù)碼管
    的頭像 發(fā)表于 05-11 11:47 ?2640次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發(fā)基礎案例之-04八段數(shù)碼管

    小熊派Hi3861獲取mpu6050數(shù)據(jù)在oled屏幕中顯示

    小熊派Hi3861獲取mpu6050數(shù)據(jù)在oled屏幕中顯示
    的頭像 發(fā)表于 08-14 14:39 ?1974次閱讀
    小熊派<b class='flag-5'>Hi3861</b>獲取mpu6050數(shù)據(jù)在oled屏幕中顯示

    鴻蒙OpenHarmony【輕量系統(tǒng) 燒錄】 (基于Hi3861開發(fā)板)

    針對Hi3861開發(fā)板,除了DevEco Device Tool
    的頭像 發(fā)表于 05-10 16:59 ?855次閱讀
    鴻蒙OpenHarmony【輕量系統(tǒng) 燒錄】 (基于<b class='flag-5'>Hi3861</b>開發(fā)板)

    hi3861如何在移植的main.c中初始化kernel和系統(tǒng)

    代燒友提問:hi3861的vendor代碼中找不到如何從flashboot的main.c文件啟動內核以及系統(tǒng)的函數(shù)和過程。無法從hi3861代碼中得到移植啟示。其中boot_kernel函數(shù)中使用了
    發(fā)表于 11-19 12:03

    鴻蒙OpenHarmony-HI3861L移植教程

    HI3861有兩款單片機一個是HI3861,一個是HI3861L,HI3861L是HI3861的低功耗版本
    發(fā)表于 08-30 19:50

    HarmonyOS Hi3861開發(fā)套件-編程速查

    針對Hi3861開發(fā)套件整理的編程速查框圖,有需要的小伙伴可以自行下載查看。
    發(fā)表于 10-19 16:54 ?86次下載
    HarmonyOS <b class='flag-5'>Hi3861</b>開發(fā)套件-編程速查

    HarmonyOS Hi3861 WiFi操作 熱點鏈接

    之前我們使用Hi3861的時候,是使用AT指令連接到WiFi熱點的。但是很多時候,我們需要實現(xiàn)開機后自動連接到某個熱點,光靠AT指令不行。Hi3861為我們提供了WiFi操作的相關API,方便我們編寫代碼,實現(xiàn)熱點連接。
    發(fā)表于 10-21 16:44 ?68次下載
    HarmonyOS <b class='flag-5'>Hi3861</b> WiFi操作 熱點鏈接

    基于鴻蒙系統(tǒng)+Hi3861的WiFi小車詳解

    我們得有一套WiFi小車套件,其實也是Hi3861加上電機、循跡模塊、超聲波等模塊。
    的頭像 發(fā)表于 11-01 09:41 ?7423次閱讀

    Hi3861其他驅動的開發(fā)示例

    摘要:本文簡單介紹Hi3861其他驅動的開發(fā)示例、包括PWM、SPI、SDIO等。
    的頭像 發(fā)表于 03-02 18:04 ?3312次閱讀
    <b class='flag-5'>Hi3861</b>其他驅動的開發(fā)示例

    基于鴻蒙系統(tǒng)+Hi3861的WiFi小車開發(fā)

    本文簡單介紹鴻蒙系統(tǒng) + Hi3861 的WiFi小車開發(fā),適用于開發(fā)潤和Hi3861開發(fā)板的小伙伴們。
    的頭像 發(fā)表于 03-03 09:31 ?5358次閱讀
    基于鴻蒙系統(tǒng)+<b class='flag-5'>Hi3861</b>的WiFi小車開發(fā)

    Hi3861編譯燒錄更快捷

    Windows環(huán)境開發(fā)Hi3861,顯著提升編譯、燒錄效率,同時還帶來了更多實用的功能及模板,為廣大開發(fā)者朋友帶來更加高效、便捷的開發(fā)體驗。接下來,讓我們來看看吧! 純Windows環(huán)境開發(fā)Hi3861,編譯燒錄
    的頭像 發(fā)表于 02-11 13:25 ?802次閱讀

    中文編程鴻蒙Hi3861開發(fā)基礎案例之-01創(chuàng)建新工程

    中文編程鴻蒙Hi3861開發(fā)創(chuàng)建新工程
    的頭像 發(fā)表于 05-11 09:53 ?2428次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發(fā)基礎案例之-01創(chuàng)建新工程

    中文編程鴻蒙Hi3861開發(fā)基礎案例之-02LED燈控制

    中文編程鴻蒙Hi3861開發(fā)控制LED燈
    的頭像 發(fā)表于 05-11 09:54 ?2574次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發(fā)基礎案例之-02LED燈控制

    中文編程鴻蒙Hi3861開發(fā)基礎案例之-03交通紅綠燈

    中文編程鴻蒙Hi3861開發(fā)模擬交通紅綠燈亮與滅控制
    的頭像 發(fā)表于 05-11 11:27 ?1820次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發(fā)基礎案例之-03交通紅綠燈

    中文編程鴻蒙Hi3861開發(fā)基礎案例之-05按鍵檢測

    中文編程鴻蒙Hi3861開發(fā)對按鍵進行輸入檢測
    的頭像 發(fā)表于 05-11 12:04 ?2773次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發(fā)基礎案例之-05按鍵檢測