国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【教程】CW32L012移植SGL圖形庫

CW32生態社區 ? 來源:CW32生態社區 ? 2025-12-31 16:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Q1.SGL是什么?

SGL是一個輕量級的UI圖形庫,符合現代化審美設計,其設計思想來源于LVGL圖形庫,具有抗鋸齒,圓角,邊框等關鍵UI設置項,同時具有圖層概念,不同控件有不同的層次,可設置透明度,控件同樣有父子關系,子控件可繼承部分父控件屬性。代碼采用面向對象的思想,文件結構清晰,非常適合應用于性能以及內存有限的單片機,控件有:圓角矩形、標簽、開關、進度條、圓環、列表等。

SGL倉庫地址:https://github.com/sgl-org/sgl

鏡像倉庫地址:https://gitee.com/sgl-org/sgl

Q2.有了LVGL圖形庫,SGL存在的意義是什么?

LVGL對內存和性能的占用仍然太大。當然,毫無疑問,LVGL是目前嵌入式領域使用率比較高的一個UI庫(據官方搜索小米也在用),功能多,代碼風格好,雖然也算輕量級UI庫,但輕量級的程度仍然不夠。對于內存小的單片機來說,運行LVGL壓力非常大,那么我內存小,又想用類似LVGL的圖形庫有嗎?有的兄弟,有的,就是我們介紹的主題SGL圖形庫。

Q3.SGL圖形庫到底解決了什么痛點?

目前LVGL圖形庫是好用,但是對單片機要求特別高,如果使用無UI框架的方式,性能以及內存占用確實小,但做出來的效果又特別差勁,做出來的產品夠用,但缺乏競爭力。

(1)flash占用大:LVGL可以對功能進行裁剪,但由于其設計框架的原因,裁剪過后的代碼對內存占用也十分大,SGL是高度可裁剪,裁剪過后的功能,一定不會被編譯(直接或間接)。

(2)ram占用大:對于LVGL來說,每個控件對RAM的占用都是很大的,LVGL是為了功能的豐富,但SGL的定位是為了更加輕量級,因此,對于RAM的使用,作者嚴格地控制每一個字節的占用,盡可能保證功能的前提下做到最小占用。

(3)代碼框架差:當不使用任何框架時,散裝的代碼,某寶賣家配套的代碼,某SDN下載的測試代碼,這類代碼不考慮程序可讀性,可維護性,功能可擴展性,用這種代碼測試是可以,用于實際項目開發是災難性的。SGL是完全沒有這些問題的,源代碼文件目錄分類清晰,函數API風格統一,同樣有配置文件,初始化簡單,配套資料文檔齊全。

Q4.為什么選擇CW32L012跑SGL?

(1)主頻高,96Mhz。

(2)SPI時鐘可達48M。SPI時鐘高,非常適合SPI屏的驅動,在同檔位MCU中算比較優秀的。

(3)ram和flash大小合適(8K+64K)。SGL對于ram的要求是4K以上,flash是20k以上。

(4)性價比高。同樣外設資源、封裝、引腳數情況下,CW32L012算比較便宜的。

5.CW32L012移植SGL步驟

這里會教大家一遍流程,不會也沒關系,有已經移植好的示例工程,示例工程名為“cw32l012_sgl_gui_demo”,這里可以大概了解一下有哪些步驟,需要關注哪些地方。

通過網盤分享的文件:cw32l012_sgl_gui_demo.rar鏈接: https://pan.baidu.com/s/1RGcQ9_l8iK40jNl335mX0g?pwd=CW32 提取碼: CW32

b83999a7d853923f2a5e78e3350457af.jpg

▲CW32L012多功能開發板(已開源)

(1)從官網下載文件,https://github.com/sgl-org/sgl

文件夾內有很多類型的文件,我們只需要使用“source”文件夾

10633a30f604c35be3036c89b330cd14.png

(2)準備好已經調通屏幕顯示的工程

需要至少有以下兩個函數: 屏幕初始化,矩形填充函數

418d71115ec809e9ff7ca7f36d6819a0.png

(3)添加sgl源碼

根據sgl對應的文件結構,在編譯器中同樣創建對應的文件目錄并添加.c文件,.h文件包含即可

wKgZPGlLikaAd-nlAAA2JjKcHmE144.jpg

▲(keil中的工程目錄結構)

wKgZO2lLikaAE6hMAAAdlGEp03Y938.jpg

▲Sgl 中的source 目錄結構

2213b91a8f67914103f525298b94dc84.png

▲(頭文件包含)

Tips: 實際只需要將source里的所有.c文件全部添加,這里分類是為了有良好的文件結構。包含頭文件需要包含source目錄和include目錄。

(4)修改conf文件

配置文件名為“sgl_config.h”,一般只需要修改屏幕顏色深度,內存分配大小,其他的配置項可以參考下圖,不明白的可以保持默認。

4fffa777d9d92a10c4e766b8561260eb.png

(5)初始化SGL

初始化是使用該庫的關鍵,重點關注:屏幕分辨率,屏幕緩沖區大小,刷屏函數,debug串口輸出函數等

wKgZO2lTYLyADEugAAA2UsTJ9X0781.jpg

4d572faa2ce5ed47c355ec8602915ee0.png

詳細講解:例如范例的配置,屏幕分辨率為320x240(寬320,高240),顯示緩沖區“panel_buffer”為單行緩沖區(緩沖區大小都是屏幕寬度的倍數,最小1行即可,更大的緩沖區,渲染與刷新的速度會更加快,但考慮輕量級,單行緩沖區足夠用),然后是刷屏函數,其實就是調用我們之前要求寫的矩形區域填充函數,另外就是日志輸出函數,該函數如果前期沒有寫好日志輸出,不強制要求實現,“uart_put_string”可以為空函數,最后調用“sgl_init”即可完成初始化。

(6)SGL運行起來的必要調用

①初始化

②動畫心跳

③SGL核心任務函數

wKgZPGlTYL2ADFQyAABcbmH4KIQ136.jpg

如上圖,“user_sgl_init”實際就為SGL的初始化,它位于屏幕初始化之后,然后周期性調用任務函數“sgl_task_handle”。

557bbf4729e58305b536cf5fe592f5c6.png

如上圖,“sgl_anim_tick_inc”就是動畫的心跳,需要在一個標準的定時器中斷中調用,如systick,此處的systick配置的是1ms,動畫tick函數的入參自然就是1。

看到了這里,恭喜你,已經完成了SGL的移植啦!后面就是添加自己需要的控件和功能進行測試了。

(7).編寫測試代碼

初始化完成以后,即可添加一些控件來看看效果了,注意,創建控件的代碼一定是寫在初始化之后(初始化完了才能創建控件)。

5c1ab89604c1e3b8101603acd6f4d223.png

創建了一個圓角矩形,位置為0,0,大小為100x100,主題顏色為藍色,圓角大小為20,透明度為127(滿透明度為255),邊框寬度為4,邊框顏色為紅色。

wKgZO2lTYL6ABZ8MAACKDAxufhA006.jpg

另外,我們再添加一個動畫,動畫的作用對象為創建的圓角矩形“rect2”,動畫延時500ms,動畫整個周期1500ms,動畫化重復性設置-1代表一直重復,設置動畫起始值0,動畫結束值100,動畫路徑為一個函數“sgl_anim_path1”,動畫算法采用“SGL_ANIM_PATH_LINEAR”,線性動畫。

動畫本質:動畫實現的本質就是,起始設定值到結束設定值,在一段時間內的數值變化。如果設定值作用于坐標,其動畫就變成控件的移動。

該demo的內存占用情況

wKgZPGlLikqATmARAAAy1Hz2ELA876.jpg

(8).最終效果

下圖gif就是我們創建的一個圓角矩形加上動畫的效果,循環x軸方向移動。

wKgZPGlU5A-ADdfEAHfr8Ax-Kyo552.jpg

效果2:下圖的gif是另外一個復雜的測試demo,測試不同控件疊加渲染的能力,圓角矩形透明度設置的50%,可以透過圓角矩形看到底下的鍵盤。進度條和圓角矩形是同一個動畫時基,都是1500ms,同步做動畫。

wKgZO2lLikuAXQ4DAABItcan6vc126.jpg

(9).內存占用情況分析

這一部分來分析cw32l012移植sgl的內存占用情況

wKgZO2lU5HGAO0-hAADouqSobV4853.png

如上圖,這是一份keil輸出的map文件的截圖(AC6編譯,優化等級O1),圖中包含了各部分部分的代碼占用情況,cw32開頭是官方的庫文件,相比其他廠家的庫來說,flash占用非常小。SGL開頭是圖形庫,占用和你使用的控件有關,本demo只用了不到6k字節的flash空間(當然控件用的多了會占用比較多,但也不會超過32k,用LVGL是絕對不可能的事情)。

7.結語

好啦,看到這里就已經結束了,恭喜你又了解了一個GUI庫,SGL是專門面向輕量級MCU開發的,它是一個長期的項目,會持續優化及更新。同時我們認為,好的代碼一樣是藝術品,開發這樣的代碼就是創造藝術品,使用這樣的代碼就是欣賞藝術品,人生不應得過且過,要有更高的追求。下面是一些題外話,有興趣的讀者可以繼續看下去。

8.題外話

Q:這個效果也不行啊?為什么我感覺很卡?

目前的效果大家可能覺得很卡,其實主要是分配的資源問題,demo中緩沖區只用一行,320x2 = 640字節,要很流暢的話至少要10行的緩沖區,另外刷屏底層接口沒有用DMA,也是慢的原因,再者,SGL核心任務調度每隔30ms調度一次,這也是不流暢的原因。

Q:為什么不把各項配置調到最好?

例如30ms調度周期降低到5ms,豈不是流暢的很?是的,的確,但是作為輕量級MCU,不應該這么做,因為你的性能有限不可能80%的性能都分配給圖形庫,要流暢緩沖區也可以加大,例如10行的緩沖區,光圖形庫RAM占用率可能就超過80%,其他的任務還跑不跑了?這里介紹的SGL庫是有實際項目應用價值的,絕對不能是只能跑個demo的,停留在實驗室的,博眼球的庫,這樣的庫是沒有意義的。

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

    關注

    1

    文章

    414

    瀏覽量

    29388
  • 圖形庫
    +關注

    關注

    0

    文章

    21

    瀏覽量

    9216
  • CW32
    +關注

    關注

    1

    文章

    299

    瀏覽量

    1843
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    STM32移植U8g2圖形的方法 實現OLED圖形顯示

    本篇介紹了如何將U8g2圖形移植到STM32中。
    的頭像 發表于 06-07 08:29 ?1.4w次閱讀
    STM32<b class='flag-5'>移植</b>U8g2<b class='flag-5'>圖形</b><b class='flag-5'>庫</b>的方法 實現OLED<b class='flag-5'>圖形</b>顯示

    移植RT-Thread nano到CW32L083

    移植RT-Thread Nano到CW32L083開發板上,并成功運行。
    的頭像 發表于 07-03 09:04 ?2.4w次閱讀
    <b class='flag-5'>移植</b>RT-Thread nano到<b class='flag-5'>CW32L</b>083

    【開源】WeGUI高效多色圖形

    類似, 支持移植到各個平臺, 支持OLED, 同時拓展支持了彩色屏。 本WeGUI已適配了武漢芯源CW32L012C8T6,DMA驅動后續會做增加。 WeGui內置高效SPI的TFT驅動, 不僅支持
    的頭像 發表于 12-29 13:12 ?3827次閱讀
    【開源】WeGUI高效多色<b class='flag-5'>圖形</b><b class='flag-5'>庫</b>

    FOC控制中如何利用芯片內部的運放設計電流采樣電路?

    最近開發電機控制的項目,我開始使用最新的CW32L012做主控,CW32L012作為混合信號MCU,相比于傳統MCU控制,集成度較高,性能當然也更好,加之又是48Pin的芯片,因此我開始做的關于CW32L012主控的電機驅動項目
    的頭像 發表于 01-05 16:50 ?2677次閱讀
    FOC控制中如何利用芯片內部的運放設計電流采樣電路?

    堅持繼續布局32位MCU,進一步完善產品陣容,96Mhz主頻CW32L012新品發布!

    基于CW32L01x系列低功耗微控制器家族的全新成員:CW32L012系列產品。 CW32L012基于ARM? Cortex-M0+內核,主頻高達96MHz,同時集成了CORDIC硬件單元、擴展算術運算單元
    發表于 07-16 16:32

    **CW32L012****開發評估板的第一個程序**

    CW32L012****開發評估板的第一個程序 最近以15.99在CW32生態社區入手了這塊CW32L012開發評估板,我迫不及待的燒錄進電燈程序,看看這塊板子是否是正常的,能否滿足我后面的學習
    發表于 11-22 00:09

    CW32L012小型機器人控制評估板活動 四足機器人+智能小車 開箱評測

    :套件主控板在出廠時應該是已經下載過程序了的,也可以不用下載直接開玩體驗。 1) 如果你之前沒有安裝CW32L012的DFP器件包,則要先官網下載CW32L012的SDK固件,具體安裝參考上面鏈接里面
    發表于 11-24 23:44

    #CW32L012 #低功耗MCU #武漢芯源半導體 #CW32 低功耗CW32L012單片機電機適用

    單片機
    武漢芯源半導體有限公司
    發布于 :2025年11月25日 14:52:07

    一文詳解TI的grlib圖形移植到Atmel SAM4套件

    TI的grlib圖形移植到了Atmel SAM4的套件中。圖形其實都是都是由底層的畫點,畫線等這些基本函數組成。大家以前上數學都有學過點
    的頭像 發表于 06-18 12:59 ?5255次閱讀
    一文詳解TI的grlib<b class='flag-5'>圖形</b><b class='flag-5'>庫</b><b class='flag-5'>移植</b>到Atmel SAM4套件

    STemwin圖形移植與運用

    前言:STemwin圖形界面比較吃內存的,一般跑圖形界面都需要配一塊SRAM,M3系列官方推薦頻率是72MHZ(當前也是可以超頻的),界面不是非常復雜,刷新要求不是特別高的情況下,
    的頭像 發表于 02-28 14:09 ?1.2w次閱讀
    STemwin<b class='flag-5'>圖形</b><b class='flag-5'>庫</b><b class='flag-5'>移植</b>與運用

    堅持繼續布局32位MCU,進一步完善產品陣容,96Mhz主頻CW32L012新品發布!

    CW32L012基于ARM? Cortex-M0+內核,主頻高達96MHz,同時集成了CORDIC硬件單元、擴展算術運算單元(EAU),可以提供部分數學函數、算術運算的硬件加速,特別適用于電機控制、電源、計量、信號處理等應用。
    的頭像 發表于 07-16 16:34 ?1339次閱讀
    堅持繼續布局32位MCU,進一步完善產品陣容,96Mhz主頻<b class='flag-5'>CW32L012</b>新品發布!

    使用芯源CW32的CW32L012開發評估板做了spi屏幕驅動

    CW32生態社區以極高的性價比入手了這塊CW32L012開發評估板,開發板以底板、核心板、1.77寸TFT顯示屏構成,所有的IO口都引出了排針,這點好評,使用杜邦線可以非常方便的連接其他模塊。引腳
    的頭像 發表于 11-21 11:34 ?608次閱讀
    使用芯源<b class='flag-5'>CW</b>32的<b class='flag-5'>CW32L012</b>開發評估板做了spi屏幕驅動

    CW32L012小機器人的電機控制

    線的大功率調速,電機的控制性能直接決定了系統的響應速度、運行精度、能耗效率與穩定性。這里分享CW32L012小機器人的正反轉、調速的電機控制 電機的正反轉 從配套的開發板資料介紹中可以知道,這是電機的驅動芯片RZ7899 從立創商城下載該芯片的數據
    的頭像 發表于 11-21 13:18 ?2384次閱讀
    <b class='flag-5'>CW32L012</b>小機器人的電機控制

    CW32L012與STM32F103的三角運算性能對比

    沒有硬件浮點運算單元。 但在運算三角函數時,CW32L012支持CORDIC算法。 二、 三角運算性能具體分析 1:標準浮點運算(如 math.h 的 sinf, cosf) 這是最常用但也是最慢的方式。 STM32F103C8 :
    的頭像 發表于 12-29 15:32 ?2305次閱讀
    <b class='flag-5'>CW32L012</b>與STM32F103的三角運算性能對比

    CW32L012與STM32G431的CORDIC三角函數運算性能對比

    本文對比均為作者實測,結果僅供參考,可附代碼供有意者評估~ STM32G431是STM32家族中較新的產品。CW32L012也是武漢芯源半導體最新推出的混合信號MCU,讓我們深入分析基于各自芯片
    的頭像 發表于 12-29 15:55 ?2476次閱讀
    <b class='flag-5'>CW32L012</b>與STM32G431的CORDIC三角函數運算性能對比