日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內(nèi)不再提示

【教程】CW32L012移植SGL圖形庫

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

掃碼添加小助手

加入工程師交流群

Q1.SGL是什么?

SGL是一個輕量級的UI圖形庫,符合現(xiàn)代化審美設(shè)計,其設(shè)計思想來源于LVGL圖形庫,具有抗鋸齒,圓角,邊框等關(guān)鍵UI設(shè)置項,同時具有圖層概念,不同控件有不同的層次,可設(shè)置透明度,控件同樣有父子關(guān)系,子控件可繼承部分父控件屬性。代碼采用面向?qū)ο蟮乃枷?,文件結(jié)構(gòu)清晰,非常適合應用于性能以及內(nèi)存有限的單片機,控件有:圓角矩形、標簽、開關(guān)、進度條、圓環(huán)、列表等。

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

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

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

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

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

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

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

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

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

Q4.為什么選擇CW32L012跑SGL?

(1)主頻高,96Mhz。

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

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

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

5.CW32L012移植SGL步驟

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

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

b83999a7d853923f2a5e78e3350457af.jpg

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

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

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

10633a30f604c35be3036c89b330cd14.png

(2)準備好已經(jīng)調(diào)通屏幕顯示的工程

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

418d71115ec809e9ff7ca7f36d6819a0.png

(3)添加sgl源碼

根據(jù)sgl對應的文件結(jié)構(gòu),在編譯器中同樣創(chuàng)建對應的文件目錄并添加.c文件,.h文件包含即可

wKgZPGlLikaAd-nlAAA2JjKcHmE144.jpg

▲(keil中的工程目錄結(jié)構(gòu))

wKgZO2lLikaAE6hMAAAdlGEp03Y938.jpg

▲Sgl 中的source 目錄結(jié)構(gòu)

2213b91a8f67914103f525298b94dc84.png

▲(頭文件包含)

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

(4)修改conf文件

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

4fffa777d9d92a10c4e766b8561260eb.png

(5)初始化SGL

初始化是使用該庫的關(guān)鍵,重點關(guān)注:屏幕分辨率,屏幕緩沖區(qū)大小,刷屏函數(shù),debug串口輸出函數(shù)等

wKgZO2lTYLyADEugAAA2UsTJ9X0781.jpg

4d572faa2ce5ed47c355ec8602915ee0.png

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

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

①初始化

②動畫心跳

③SGL核心任務(wù)函數(shù)

wKgZPGlTYL2ADFQyAABcbmH4KIQ136.jpg

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

557bbf4729e58305b536cf5fe592f5c6.png

如上圖,“sgl_anim_tick_inc”就是動畫的心跳,需要在一個標準的定時器中斷中調(diào)用,如systick,此處的systick配置的是1ms,動畫tick函數(shù)的入?yún)⒆匀痪褪?。

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

(7).編寫測試代碼

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

5c1ab89604c1e3b8101603acd6f4d223.png

創(chuàng)建了一個圓角矩形,位置為0,0,大小為100x100,主題顏色為藍色,圓角大小為20,透明度為127(滿透明度為255),邊框?qū)挾葹?,邊框顏色為紅色。

wKgZO2lTYL6ABZ8MAACKDAxufhA006.jpg

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

動畫本質(zhì):動畫實現(xiàn)的本質(zhì)就是,起始設(shè)定值到結(jié)束設(shè)定值,在一段時間內(nèi)的數(shù)值變化。如果設(shè)定值作用于坐標,其動畫就變成控件的移動。

該demo的內(nèi)存占用情況

wKgZPGlLikqATmARAAAy1Hz2ELA876.jpg

(8).最終效果

下圖gif就是我們創(chuàng)建的一個圓角矩形加上動畫的效果,循環(huán)x軸方向移動。

wKgZPGlU5A-ADdfEAHfr8Ax-Kyo552.jpg

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

wKgZO2lLikuAXQ4DAABItcan6vc126.jpg

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

這一部分來分析cw32l012移植sgl的內(nèi)存占用情況

wKgZO2lU5HGAO0-hAADouqSobV4853.png

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

7.結(jié)語

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

8.題外話

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

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

Q:為什么不把各項配置調(diào)到最好?

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

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

    關(guān)注

    1

    文章

    417

    瀏覽量

    29541
  • 圖形庫
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    9241
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    326

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    STM32移植U8g2圖形的方法 實現(xiàn)OLED圖形顯示

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

    移植RT-Thread nano到CW32L083

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

    【開源】WeGUI高效多色圖形

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

    FOC控制中如何利用芯片內(nèi)部的運放設(shè)計電流采樣電路?

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

    堅持繼續(xù)布局32位MCU,進一步完善產(chǎn)品陣容,96Mhz主頻CW32L012新品發(fā)布!

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

    **CW32L012****開發(fā)評估板的第一個程序**

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

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

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

    STemwin圖形移植與運用

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

    堅持繼續(xù)布局32位MCU,進一步完善產(chǎn)品陣容,96Mhz主頻CW32L012新品發(fā)布!

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

    使用芯源CW32的CW32L012開發(fā)評估板做了spi屏幕驅(qū)動

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

    CW32L012小機器人的電機控制

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

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

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

    CW32L012與STM32G431的CORDIC三角函數(shù)運算性能對比

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

    CW32L012電壓電流表設(shè)計思路

    CW32L012C8T6 定位為 電機控制、電源管理、智能儀表、工業(yè)傳感器 等領(lǐng)域的高性價比解決方案,尤其適合需要 高精度模擬信號處理 + 復雜數(shù)字控制 的混合信號系統(tǒng), ARM
    的頭像 發(fā)表于 03-31 21:32 ?652次閱讀

    CW32L012的FOC電機驅(qū)動的運放電路設(shè)計解析

    CW32L012由于有兩個內(nèi)置運放,所以在設(shè)計FOC電機驅(qū)動時,可以考慮使用內(nèi)置運放做單/雙電阻的電流采樣。 以下圖B相為例,運放及外圍電路構(gòu)成同相放大電路,由于相電流存在正負方向,所以需要增加偏置
    的頭像 發(fā)表于 04-28 15:00 ?469次閱讀
    <b class='flag-5'>CW32L012</b>的FOC電機驅(qū)動的運放電路設(shè)計解析
    合川市| 吴川市| 保山市| 都匀市| 兰溪市| 瑞昌市| 卓资县| 威宁| 开化县| 河池市| 丹江口市| 大安市| 莱芜市| 治多县| 临海市| 潮州市| 轮台县| 灵寿县| 屏东市| 航空| 盖州市| 平舆县| 明星| 闽侯县| 洛隆县| 盐津县| 阆中市| 简阳市| 杭州市| 资中县| 闵行区| 德庆县| 高尔夫| 武平县| 锦屏县| 略阳县| 廉江市| 漠河县| 贡山| 安康市| 祁东县|