GuiLite移植到STM32F4开发板上
大家好,最近在做Github找到一个有趣的开源Gui框架:GuiLite,按照说明移植了GuiLite到STM32F4OLED屏幕上,分析一下自己的移植经验。
01hrGuiLite介绍
GuiLite是一个开源的Gui框架,只依赖于一个单一的头文件库(GuiLite。h),不需要很复杂的文件管理,代码量平易近人。
GuiLite由4千行C代码编写,单片机上也能流畅运行,其最低的硬件运行要求如下:
CPU主频ROM大小RAM大小24MHZ29KB9KB
同时GuiLite具有很强的跨平台特性:支持的操作系统:iOSmacOSWatchOS,Android,Linux(ARMx8664),Windows(包含VR),RTOS甚至无操作系统的单片机支持的开发语言:CC,Swift,Java,Javascript,C,Golang支持的第3方库:Qt,MFC,Winforms,CoCoa
除此之外,GuiLite提供一系列辅助开发工具:完美的云物联网解决方案:让你轻松驾驭全球IoT业务支持多语言,采用UTF8编码;支持视频播放资源制作工具为你定制自己的字体图片资源所见即所得的GUI布局工具编译活跃度统计,及实时分析支持3DWeb支持Docker,一条命令启动。
02hrGuiLite移植2。1硬件准备
2。2驱动准备
这里我使用STM32CubeMX对开发板进行外设配置,开启STM32的硬件IIC,这里我用CubeMX开启后如下:
配置完成生成代码,同时将分配的堆空间增大:
代码生成后,我们复制正点原子的OLED驱动工程代码到Hardware硬件目录下(自己创建一个该目录)
在MDK里面添加文件,然后我们进行修改,注释掉头文件里面关于端口的定义,同时添加三个类型宏定义
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
点击这里找小助理0元领取:嵌入式物联网学习资料(头条)
然后我们进入oled。c文件,将voidOLEDWRByte(u8dat,u8cmd)和voidOLEDInit(void)函数分别替换为下面的内容:
OLEDWRByte:voidOLEDWRByte(u8dat,u8cmd){if(cmd)HALI2CMemWrite(hi2c1,0x78,0x40,I2CMEMADDSIZE8BIT,dat,1,0x100);elseHALI2CMemWrite(hi2c1,0x78,0x00,I2CMEMADDSIZE8BIT,dat,1,0x100);}
OLEDInit:初始化SSD1306voidOLEDInit(void){OLEDWRByte(0xAE,OLEDCMD);关闭显示OLEDWRByte(0xD5,OLEDCMD);设置时钟分频因子,震荡频率OLEDWRByte(80,OLEDCMD);〔3:0〕,分频因子;〔7:4〕,震荡频率OLEDWRByte(0xA8,OLEDCMD);设置驱动路数OLEDWRByte(0X3F,OLEDCMD);默认0X3F(164)OLEDWRByte(0xD3,OLEDCMD);设置显示偏移OLEDWRByte(0X00,OLEDCMD);默认为0OLEDWRByte(0x40,OLEDCMD);设置显示开始行〔5:0〕,行数。OLEDWRByte(0x8D,OLEDCMD);电荷泵设置OLEDWRByte(0x14,OLEDCMD);bit2,开启关闭OLEDWRByte(0x20,OLEDCMD);设置内存地址模式OLEDWRByte(0x02,OLEDCMD);〔1:0〕,00,列地址模式;01,行地址模式;10,页地址模式;默认10;OLEDWRByte(0xA1,OLEDCMD);段重定义设置,bit0:0,00;1,0127;OLEDWRByte(0xC0,OLEDCMD);设置COM扫描方向;bit3:0,普通模式;1,重定义模式COM〔N1〕COM0;N:驱动路数OLEDWRByte(0xDA,OLEDCMD);设置COM硬件引脚配置OLEDWRByte(0x12,OLEDCMD);〔5:4〕配置OLEDWRByte(0x81,OLEDCMD);对比度设置OLEDWRByte(0xEF,OLEDCMD);1255;默认0X7F(亮度设置,越大越亮)OLEDWRByte(0xD9,OLEDCMD);设置预充电周期OLEDWRByte(0xf1,OLEDCMD);〔3:0〕,PHASE1;〔7:4〕,PHASE2;OLEDWRByte(0xDB,OLEDCMD);设置VCOMH电压倍率OLEDWRByte(0x30,OLEDCMD);〔6:4〕000,0。65vcc;001,0。77vcc;011,0。83vcc;OLEDWRByte(0xA4,OLEDCMD);全局显示开启;bit0:1,开启;0,关闭;(白屏黑屏)OLEDWRByte(0xA6,OLEDCMD);设置显示方式;bit0:1,反相显示;0,正常显示OLEDWRByte(0xAF,OLEDCMD);开启显示OLEDClear();}
然后在main。c文件如下位置添加oled测试代码(记得添加头文件和头文件路径)
下载程序,观看现象
此OLED驱动的准备已经完成,下一步就是移植GuiLite2。3例程移植
首先,我们上GuiLite的例程展示官网:GuiLiteDemo,选择Hello例程,将其中的UICode文件夹复制到Hardware下:
在MDK工程里面导入UICode下的GuiLite。h和UIcode。cpp文件
我们在main。c文件开头添加GuiLite接口代码,接口代码如下:画点函数接口voidgfxdrawpixel(intx,inty,unsignedintrgb){OLEDDrawPoint(x,y,rgb);}画面函数(未使用)voidgfxdrawfill(intx,inty,intw,intq,unsignedintrgb){}创建一个函数指针结构体structEXTERNALGFXOP{void(drawpixel)(intx,inty,unsignedintrgb);void(fillrect)(intx0,inty0,intx1,inty1,unsignedintrgb);}mygfxop;externvoidstartHelloCircle(voidphyfb,intwidth,intheight,intcolorbytes,structEXTERNALGFXOPgfxop);设定延时函数接口voiddelayms(intmilliseconds){HALDelay(milliseconds);}
之后在main函数中添加如下代码传递函数指针mygfxop。drawpixelgfxdrawpixel;mygfxop。fillrectNULL;gfxfillrect;启动画圆startHelloCircle(NULL,128,64,1,mygfxop);
然后我们修改UIcode。cpp文件中的代码,添加OLED头文件,以及在UI执行函数界面处添加OLED刷新函数
之后在UIcode的第8行修改3D圆的参数,因为OLED大小128x64,所以我的配置如下:
配置完成后,我们关闭UseMicroLIB选项,编译代码
编译成功,下载代码
03hrGui移植结果
下载完成后程序复位,可以在OLED上看到Demo的示例动画。
一些其他的演示效果
左右滑动见更多
左右滑动见更多
原文链接:https:mp。weixin。qq。comsvAcrSIe9cPNcWLYjxCyg、
转载自:嵌入式大杂烩
原文链接:GuiLite移植到STM32F4开发板上
本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。
大家觉得中国男足7号和女足7号相比,谁的足球水平更高个人认为,王霜比武7高太多了,从某些方面来说,没有可比性。王霜有多少次力挽狂澜,武7有多少次过家门不入。女足在澳参赛没有带王霜,人家在武汉坚持自训,昨天多少次能看见武7。昨晚是整个
广东人这么懂足球,为什么执教俱乐部的人不多呢?广东籍的足球教练应该是有不少的,现在我们就来看看都有谁吧!一区楚良区(u)楚良,1968年8月26日出生于广东省云浮市罗定市,中国足球运动员,曾先后效力于广东宏远,上海申花,云南红
从丹麦到T台约瑟芬斯克里弗约瑟芬斯克里弗(JosephineSkriver)职业模特和演员身高178厘米体重55公斤生日1993年4月14日国籍丹麦约瑟芬是一位丹麦超模,出生于1993年4月14日。她于20
眼整形后会不会影响近视手术的进行?部分有过眼整形经历的近视患者常常在想,做过了眼整形手术,还能不能进行近视矫正手术呢?如果可以,那么手术的先后选择有没有什么需要注意的呢?重庆华厦眼科医院屈光中心主任蔡锡安表示,近视
顶级美女徐璐的大胆穿搭超短裙配小肚兜,时髦又大胆张铭恩和徐璐分手,几个月的恋情竟像极了为恋爱综艺而生,让人唏嘘不已!从女儿们的恋爱这档综艺的呈现来看,徐璐曾很喜欢张铭恩,因而才在综艺节目当中告诉张铭恩她想在三十岁结婚。没有想到徐
美国女模特凭借性感身材和出色表现赢得时尚圈赞誉美国女模特艾米丽(Emily)以其性感的身材和出色的表现,成为时尚圈的瞩目焦点。她在国际时装秀上的亮相,为她带来了广泛的赞誉和认可。艾米丽的身材曲线优美,身材高挑,完美展现了时装的
新概念和佳音英语哪个适合孩子?肯定是新概念现在的问题不是哪一种教材更适合孩子的问题,而是比这个更重要得多的问题。首先是,孩子应该在什么时候开始英语学习。不管怎样,小学一年级开始太早了,小学五六年级,甚至初中一二
三岁男孩不服管教,打也不行骂也不行,讲道理根本不听,怎么办?3岁都管不了?那到13岁怎么办?不是管不了,是不敢管吧?他闹的时候,关房间里,待2小时,看结果怎样?惯子如杀子,溺爱只会害了孩子。三岁都管不了只能说明你无能!打也不行?还是揍的轻了
孩子进入青春期,如何和孩子良好的沟通?青春期孩子,正处于叛逆期,这一时期的孩子自制能力差,固执不听说,贪耍学习不上进,常和家长对着干。要和孩子有所沟通,就要理解孩子的心思。一般要从关心孩子生活学习等方面入手,以交朋友的
2022陕西丝路春晚青出于蓝胜在哪里?这届晚会以全新的沉浸式完美的展现了文化的美妙。向全世界发出了新年好,到计时已开始,只有几个小时了,准备好目不暇接,先倒好水,吃完饭,一刻也不离开了。httpsm。toutiao。c
iOS16。4正式版发布了没有意外,今天3月28号凌晨苹果公司发布了ios16。4正式版。本更新包括以下增强功能和错误修复表情符号键盘中新增21个表情符号,其中包括动物手势和物体添加到主屏幕上的网页App现