游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

LittlevGL在STM32上的移植使用

  lvgl简介
  LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素、漂亮的视觉效果和低内存占用。
  特点:强大的构建模组按钮、图表、列表、滑块、图像等先进的图形动画、反锯齿、半透明、平滑滚动多样的输入设备触摸板、鼠标、键盘、编码器等多显示器支持支持同时使用多个TFT或单色显示器多语言支持UTF8格式文字编码完全自定义图形元素硬件无关可用于任意微控制器或显示器可裁剪用于小内存(80KBFLASH,12KBRAM)操作操作系统、外部存储以及GPU支持但非必须单帧缓存即可实现先进的图形效果C语言编写以最大化兼容(C兼容)模拟器无需嵌入式硬件就可以在电脑上开始GUI设计教程、示例、主题从而快速GUI设计文档在线及离线免费开源基于MIT协议
  运行的硬件要求:
  lvgl资料
  LVGL的资料很丰富,下面列出一些常用的资料链接:1、lvgl英文官网:
  https:lvgl。io2、lvgl中文网:
  https:littlevgl。cn(还在建设中)3、lvgl源码:
  https:github。comlvgllvgl4、lvgl基于Visualsudio的PC模拟器:
  https:github。comlvgllvsimvisualstudio5、正点原子lvgl教程资料:
  http:www。openedv。comdocsbookvideoszdyzshipin4freelittleVGL。html6、基于荔枝派Nano开发板的lvgl教程:
  http:nano。lichee。proapplicationlittlevgl。html7、基于野牛开发板的lvgl6。0例程:
  https:gitee。commzy2364LittlevGLDemo8、lvgl在线体验例程(可在浏览器体验):
  https:lvgl。iodemos9、lvgl官网教程:
  https:docs。lvgl。iolatestenhtmlindex。html10、lvgl官方DEMO:
  https:github。comlvgllvexampleslvgl移植到STM32
  1、下载源码
  源码链接中下载一份源码,lvgl已经更新迭代了很多个版本,这里我们选择目前最新的7。10。1版本来移植:
  注意:不同版本之间可能有很大的不同,所以看本篇教程移植的的小伙伴尽量使用与本文相同的版本。
  下载得到:
  2、准备stm32工程
  下面我基于普中的stm32f103开发板来移植,首先准备一个lcd显示的例程,并更名为lvgltest:
  3、新建GUI文件夹
  在工程目录下新建一个GUI文件夹,GUI文件夹下新建两个子文件夹:
  把刚才下载的lvgl7。10。1里的所有内容复制到lvgl文件夹中,lvglapp文件夹暂时留空。
  4、移植文件更名
  下面,我们把GUIlvglexamplesporting下的文件进行一个更名操作(其实不更名也可以,为了文件名看起来规范一些我们进行一个更名):
  这是移植相关的几个文件,其中:lvportdisp:显示相关。
  lvportindev:输入相关。
  lvportfs:文件系统相关。
  5、配置文件更名
  把GUIlvgl下的lvconftemplate。h文件复制到GUI文件夹下并更名为lvconf。h:
  6、keil工程配置
  (1)导入文件
  打开keil工程,在工程下新建三个组,并导入文件:
  导入完成后得到:
  这里的lvglporting中我们暂时只导入lvportdisp。c文件,这是显示相关的移植文件。本篇笔记先把显示打通,其它两个文件后续有机会再弄。
  (2)包含头文件路径
  下面包含头文件路径:
  (3)修改堆栈大小
  因为官方说明文档中推荐我们堆、栈大小设置为8k:
  所以这里我们就按推荐进行设置:
  (4)设置C99模式
  lvgl需要编译器支持C99或更新的标准:
  C99模式可进行如下设置:
  (5)使能lvconf。h的条件编译
  进行上面的设置后我们首先进行编译,会报很多个错误:
  这是因为需要lvconf。h里的一些东西,打开lvconf。h里的条件编译即可:
  再次编译,编译通过:
  (6)lvgl配置
  我们可以对lvgl进行一些定制配置,这些配置内容在lvconf。h文件中,下面进行一些关键配置:显示器宽度:defineLVHORRESMAX(240)显示器高度:defineLVVERRESMAX(480)色彩深度:defineLVCOLORDEPTH16DPI:defineLVDPI100提供给lvgl的空间:defineLVMEMSIZE(32U1024U)
  其中调整LVDPI可以调整各控件间的紧凑,可根据实际情况进行更改;LVMEMSIZE为lvgl可用空间,资源允许的情况下可以稍微设大些,这个设置过小的话,在跑一些稍微复杂的demo时界面就会刷不出来。
  这里只是列出了几个常用的配置,lvconf。h还有很多的配置,可根据实际情况进行配置。
  (7)填充、修改lvportdisp。c
  lvportdisp。c里面的内容主要有:
  我们需要重点关注lvportdispinit显示接口初始化函数与dispflush屏幕刷新两个函数。
  其中,lvportdispinit函数里主要要选择一种写缓存的方式及设置显示分辨。我们选择第一种写缓存的方式,修改后的函数如:微信公众号:嵌入式大杂烩voidlvportdispinit(void){Initializeyourdisplaydispinit();CreateabufferfordrawingLVGLrequiresabufferwhereitinternallydrawsthewidgets。Laterthisbufferwillpassedyourdisplaydriversflushcbtocopyitscontenttoyourdisplay。Thebufferhastobegreaterthan1displayrowTherearethreebufferingconfigurations:1。CreateONEbufferwithsomerows:LVGLwilldrawthedisplayscontenthereandwritesittoyourdisplay2。CreateTWObufferwithsomerows:LVGLwilldrawthedisplayscontenttoabufferandwritesityourdisplay。YoushoulduseDMAtowritethebufferscontenttothedisplay。ItwillenableLVGLtodrawthenextpartofthescreentotheotherbufferwhilethedataisbeingsentformthefirstbuffer。Itmakesrenderingandflushingparallel。3。CreateTWOscreensizedbuffer:Similarto2)butthebufferhavetobescreensized。WhenLVGLisreadyitwillgivethewholeframetodisplay。Thiswayyouonlyneedtochangetheframebuffersaddressinsteadofcopyingthepixels。Examplefor1)staticlvdispbuftdrawbufdsc1;staticlvcolortdrawbuf1〔LVHORRESMAX10〕;Abufferfor10rowslvdispbufinit(drawbufdsc1,drawbuf1,NULL,LVHORRESMAX10);InitializethedisplaybufferExamplefor2)staticlvdispbuftdrawbufdsc2;staticlvcolortdrawbuf21〔LVHORRESMAX10〕;Abufferfor10rowsstaticlvcolortdrawbuf21〔LVHORRESMAX10〕;Anotherbufferfor10rowslvdispbufinit(drawbufdsc2,drawbuf21,drawbuf21,LVHORRESMAX10);InitializethedisplaybufferExamplefor3)staticlvdispbuftdrawbufdsc3;staticlvcolortdrawbuf31〔LVHORRESMAXLVVERRESMAX〕;Ascreensizedbufferstaticlvcolortdrawbuf31〔LVHORRESMAXLVVERRESMAX〕;Anotherscreensizedbufferlvdispbufinit(drawbufdsc3,drawbuf31,drawbuf32,LVHORRESMAXLVVERRESMAX);InitializethedisplaybufferRegisterthedisplayinLVGLlvdispdrvtdispdrv;Descriptorofadisplaydriverlvdispdrvinit(dispdrv);BasicinitializationSetupthefunctionstoaccesstoyourdisplaySettheresolutionofthedisplaydispdrv。horres240;dispdrv。verres400;Usedtocopythebufferscontenttothedisplaydispdrv。flushcbdispflush;Setadisplaybufferdispdrv。bufferdrawbufdsc1;ifLVUSEGPUOptionallyaddfunctionstoaccesstheGPU。(Onlyinbufferedmode,LVVDBSIZE!0)Blendtwocolorarrayusingopacitydispdrv。gpublendcbgpublend;Fillamemoryarraywithacolordispdrv。gpufillcbgpufill;endifFinallyregisterthedriverlvdispdrvregister(dispdrv);}
  dispflush需要调用底层lcd操作接口,这里修改为:
  这里我们调用一个写像素点的函数,也可以直接调用一个显示的填充方形函数。
  最后,需要在头文件中声明lvportdispinit函数:
  (8)配置一个定时器为lvgl提供心跳
  lvgl需要一个心跳节拍,可以使用系统滴答定时器,也可以使用其它定时器。我们这里的配置如下:TIM4Init(999,71);1ms进入一次中断,为lvgl提供心跳微信公众号:嵌入式大杂烩voidTIM4IRQHandler(void){if(TIMGetITStatus(TIM4,TIMITUpdate)){lvtickinc(1);}TIMClearITPendingBit(TIM4,TIMITUpdate);}
  (9)测试官方demo
  下面开始进行测试,至此我们的GUIlvglapp文件夹里还没有任何内容,我们下载官方提供的demo来进行测试,同样地,下载官方demo:
  官方给我们提供了很多demo:
  复制lvexamples7。10。1整个文件夹至GUIlvglapp文件夹下并更名为lvexamples:
  把GUIlvglapplvexamples下的lvexconftemplate。h复制到GUI文件夹下并更名为lvexconf。h,这是demo的配置文件:
  想跑哪个demo就配置相关宏。
  下面我们跑一个lvdemowidgets的demo进行演示:
  主函数:
  运行测试:
  至此,lvgl显示移植成功。要想演示其它综合demo或控件例子也同上面一样导入源文件、包含头文件、打开demo宏开关等步骤进行演示。
  本工程可私信回复关键词:LittlevGL移植,进行获取。猜你喜欢:
  长文花了两天时间整理了STM32中的一些C语言知识点
  STM32如何收发float类型数据?
  STM32串口IAP分享
  嵌入式必备之Git的使用
  1024G嵌入式资源大放送!包括但不限于CC、单片机、Linux等。私信回复1024,即可免费获取!

好价大碗,诚意满满中兴Axon30Ultra一、前言2021年的上半年依旧热闹,各大手机品牌商也是纷纷发布了各家的旗舰手机。如果留心观察,不难发现各家旗舰这两年的发展和堆料,主要都来自于手机屏幕和相机组性能。……放弃苹果买这3款,只因性能太强,价格还低,买错实在可惜众所周知,如果选一款手机来代表高端序列,毫无疑问,是iPhone手机,凭借着过硬的实力,硬生生只靠高端旗舰机就能在日趋激烈的竞争环境下取得前三的成绩,但是吧,iPhone手机也……工信部部长苗圩要在年底之前,实现所有用户自由携号转网2019年3月5日,2019年全国两会第二场部长通道于十三届全国人大二次会议开幕会结束后正式开启。工信部部长苗圩。东方IC图3月5日上午9时,第十三届全国人民代表大会第二……黑客是怎么攻击网站的,管理员必知网站属于web应用,要攻击网站,可以先通过大量的信息收集工作来筛选出有用的信息,并在这些信息的基础上思考网站是否存在漏洞,利用这些漏洞来进行渗透工作。如盲注、SQL注入、LFI……天玑9000芯片到底是不是华为的麒麟芯片改名的?我看有些人是魔怔了,居然会有天玑9000是华为麒麟芯片改名的想法,当然有些人估计是觉得天玑9000如果到时候表现好,那就是华为出手的缘故,然后又可以沸腾一番,可是这是不可能的,……币圈内战拉响比特币大战狗狗币,谁会笑到最后?在狗狗币、Shib币、乌龟币等各种动物币日日霸占着各大媒体头条和热搜榜,吸走了大量的关注度和资金之后,老币圈人们愤怒了。从2009年比特币正式诞生起,一些最早关注数字货币……5G到底会带来什么改变?在今年4月19日举行的国务院政策例行吹风会上,工信部副部长刘烈宏表示,目前中国已建成全球最大规模的5G移动网络,5G套餐用户已超2。6亿。但是,我们好像感受不到5G存在的……14710台!ARM服务器走进中国移动大网基于ARM平台的服务器,到底行不行?中国移动给出了明确、有力的回答!近日,中国移动发布集中网络云资源池三期工程计算型服务器采购招标公告。该项目采购计算型服务器43564台……国家的功臣和罪人华为,依靠超前的市场感知,依靠对技术的钻研和创新,依靠一切都是为了祖国不被西方卡脖子,为了民族更加强大的信念;先后在服务器、5G通信技术、芯片设计、鸿蒙操作系统及软件生态等获得……匈牙利将建欧洲首个5G智慧铁路港新华社布达佩斯10月5日电(记者袁亮)中国华为匈牙利子公司日前与匈牙利东西联运物流公司及英国电信运营商沃达丰匈牙利公司签署了建设东西门场站的合作协议。该项目将建设欧洲首个使用5……整个中国都在等你回家,没有任何力量能阻挡你回归的步伐9月25日26日这两天,有一件值得纪念的重要事件,整个中国都在欢迎一位中国公民孟晚舟回家。从25日一大早,整个网络空间都是孟晚舟即将回到祖国的消息,各大媒体都在跟踪关注全……微信正式推出关怀模式!微信近日发出新版本,正式推出了关怀模式。相比正常模式,微信关怀模式文字更大更清晰,色彩更强更好认,按钮更大更易用,有助于提升老年人、视障群体等人群使用微信的便利性。微信关……
谭维维献声新世界主题曲孙红雷万茜结局疑曝光由徐兵编剧并执导,王威、张胜富联合导演,孙红雷、张鲁一、尹昉、万茜、李纯、胡静、赵峥、秦汉、张瑶、张晔子领衔主演的开年大剧《新世界》,今日发布主题曲《陌生人也亲近》及其MV。该……卖房子的人首曝同家人版花絮照孙俪海清再度同台引期待星关系7月2日讯六六、九枚玉编剧,安建执导,王柔媗担任制片人,孙俪、罗晋领衔主演,海清、张萌、郭涛、胡可友情出演,王自健、田雷、杨皓宇、张晓谦、孙佳雨、王艺哲等主演的现实主义都……卖房子的人曝家期而至版定妆海报孙俪职场装引期待星关系5月9日讯由耀客传媒、企鹅影视出品,六六、九枚玉编剧,安建执导,王柔媗担任制片人,孙俪、罗晋领衔主演,张萌、郭涛等主演的现实主义都市话题剧《卖房子的人》正在火热拍摄中。今……芯片制造TOP10出炉中芯国际排第一,两家存储企业入选编者按:在二十一世纪新十年开启之际,搜狐科技正式推出《中国创新公司100》系列榜单及报道,围绕5G、AI,以及芯片、制造、零售、出行、社交、企业服务等领域内的技术创新和商业模式……张皓然瞄准演技再获赞战略部署能力备受师父陈赫称赞由五百、别克执导,黄轩、陈赫、杨采钰、李溪芮、张皓然主演的高密度狙击动作剧《瞄准》正在浙江卫视、东方卫视,腾讯、爱奇艺、优酷、芒果TV多平台同期热播当中。最近,随着张皓然所饰演……警惕分布式改造用力过猛,集中式架构仍然代表领先生产力这几年,全球数据呈现指数级上升,大数据应用也已深度融入千行百业。但由于我国信息技术起步晚,以IBM、Oracle、EMC为核心的IOE架构长期在中国市场占据垄断地位,特别是金融……周一围焕脸开播悬念迭起受期待日前,由周一围、袁姗姗、曹曦文、迟嘉主演的悬疑剧《焕脸》正式开播。该剧围绕男主潘启文被人阴谋换脸,从此踏上新的惊险征程的故事。据悉,周一围饰演的潘启文本是一名拥有幸福家庭……不负时光收官接招小大人卢思宇的灵魂拷问星关系11月4日讯11月初,由安悦溪、邢昭林、赵煊、卢思宇等联袂主演的电视剧《不负时光》已经完美收官。剧中,演员卢思宇小朋友扮演古灵精怪的小大人包小包,语出惊人惊喜不断;在李校……2888元买个情怀!Palm小屏新机搭载骁龙435,买的人还说到Palm(奔迈)这个手机品牌,可能除了极少数发烧友外,在国内绝大多数手机用户都从没听过。在过去手机普遍采用塞班系统时代,奔迈就属于极度冷门的非主流手机,可以说是比黑莓还要更……王博文新剧热爱北京卫视圆满收官李才落泪认亲星关系12月20日讯因为热爱,所以炙热。12月19日晚,由周亚平制作,宋方金编剧,王小列执导,杨玏、啜妮、王博文、张晨光、梁冠华、刘敏涛、牛莉、柯蓝、黄圣依等主演的37集都市快……阿里巴巴是在封杀什么?解雇10名员工外泄性侵指控内网文章根据知情人士透露,这10名员工被阿里巴巴解雇,只是因为他们公开了女同事对一名前经理的性侵指控,10名员工是如何知道这样隐秘的事情呢?我们大家不知道,在阿里巴巴里面,有一个……孟子义将夜诠释学霸最高境界坚韧决绝修道成痴星关系11月7日讯由王裕仁担任总制片人,杨阳执导,陈飞宇、宋伊人、孟子义等青年演员联袂主演的古装品质大剧《将夜》已在腾讯视频正式上线,首播当日网播量高达1。9亿。该剧讲述……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网