<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

審核編輯:湯梓紅

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

    關注

    447

    文章

    47995

    瀏覽量

    410374
  • 上拉電阻
    +關注

    關注

    5

    文章

    350

    瀏覽量

    30277
  • 移植
    +關注

    關注

    1

    文章

    367

    瀏覽量

    27873
  • Hi3861
    +關注

    關注

    1

    文章

    58

    瀏覽量

    6250
  • LVGL
    +關注

    關注

    0

    文章

    75

    瀏覽量

    2488

原文標題:四、下載運行

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

收藏 人收藏

    評論

    相關推薦

    鴻蒙OpenHarmony【輕量系統 環境搭建】 (基于Hi3861開發板)

    除上述[安裝庫和工具集]和[安裝編譯工具]外,針對Hi3861開發板還需要安裝特定的編譯工具。
    的頭像 發表于 04-26 17:47 ?804次閱讀
    鴻蒙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

    Hi3861編譯燒錄更快捷

    Windows環境開發Hi3861,顯著提升編譯、燒錄效率,同時還帶來了更多實用的功能及模板,為廣大開發者朋友帶來更加高效、便捷的開發體驗。接下來,讓我們來看看吧! 純Windows環境開發Hi3861,編譯燒錄
    發表于 02-10 10:32

    HarmonyOS Hi3861開發套件-編程速查

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

    HarmonyOS Hi3861 WiFi操作 熱點鏈接

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

    基于鴻蒙系統+Hi3861的WiFi小車詳解

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

    Hi3861其他驅動的開發示例

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

    基于鴻蒙系統+Hi3861的WiFi小車開發

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

    自制Hi3861開發板(附原理圖和電路圖)

    OpenHarmony的發展已經進入了新的階段,逐步把重點向富設備開發方向。OpenHarmony 3.x的各大特性也是針對富設備來的,但是仍然支持輕量設備,如Hi3861芯片設備。于是,我嘗試了使用自制的Hi3861開發板刷入了。
    的頭像 發表于 04-14 10:23 ?8158次閱讀
    自制<b class='flag-5'>Hi3861</b>開發板(附原理圖和電路圖)

    Hi3861編譯燒錄更快捷

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

    純Windows環境開發Hi3861,編譯燒錄更快捷

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

    中文編程鴻蒙Hi3861開發基礎案例之-01創建新工程

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

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

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

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

    中文編程鴻蒙Hi3861開發對按鍵進行輸入檢測
    的頭像 發表于 05-11 12:04 ?2576次閱讀
    中文編程鴻蒙<b class='flag-5'>Hi3861</b>開發基礎案例之-05按鍵檢測
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>