范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

GuiLite移植到STM32F4开发板上

  大家好,最近在做Github找到一个有趣的开源Gui框架: GuiLite ,按照说明移植了GuiLite到STM32F4OLED屏幕上,分析一下自己的移植经验。
  01
  GuiLite介绍   GuiLite是一个开源的Gui框架,只依赖于一个单一的头文件库(GuiLite.h),不需要很复杂的文件管理,代码量平易近人。   GuiLite由4千行C++代码编写,单片机上也能流畅运行 ,其最低的硬件运行要求如下:   CPU主频ROM大小RAM大小 24 MHZ29KB9KB   同时GuiLite具有很强的跨平台特性:支持的操作系统:iOS/macOS/WatchOS,Android,Linux(ARM/x86-64),Windows(包含VR),RTOS… 甚至无操作系统的单片机 支持的开发语言:C/C++, Swift, Java, Javascript, C#, Golang… 支持的第3方库:Qt, MFC, Winforms, CoCoa…   除此之外,GuiLite 提供一系列辅助开发工具: 完美的"云" + "物联网"解决方案:让你轻松驾驭全球IoT业务 支持多语言,采用 UTF-8 编码;支持视频播放 资源制作工具为你定制自己的字体/图片资源 所见即所得的GUI布局工具 编译活跃度统计,及实时分析 支持3D & Web 支持Docker,一条命令启动。   02
  GuiLite移植 2.1 硬件准备   2.2 驱动准备   这里我使用STM32CubeMX 对开发板进行外设配置,开启STM32的硬件IIC,这里我用CubeMX开启后如下:   配置完成生成代码,同时将分配的堆空间增大:   代码生成后,我们复制正点原子的OLED驱动工程代码到Hardware硬件目录下(自己创建一个该目录)   在MDK里面添加文件,然后我们进行修改,注释掉头文件里面关于端口的定义,同时添加三个类型宏定义   嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!   无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。   点击这里找小助理0元领取: 嵌入式物联网学习资料(头条)   然后我们进入oled.c文件,将void OLED_WR_Byte(u8 dat,u8 cmd) 和 void OLED_Init(void) 函数分别替换为下面的内容:   OLED_WR_Byte:void OLED_WR_Byte(u8 dat,u8 cmd) { if(cmd) HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x40,I2C_MEMADD_SIZE_8BIT,&dat,1,0x100); else HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x00,I2C_MEMADD_SIZE_8BIT,&dat,1,0x100); }   OLED_Init://初始化SSD1306 void OLED_Init(void) { OLED_WR_Byte(0xAE,OLED_CMD); //关闭显示 OLED_WR_Byte(0xD5,OLED_CMD); //设置时钟分频因子,震荡频率 OLED_WR_Byte(80,OLED_CMD); //[3:0],分频因子;[7:4],震荡频率 OLED_WR_Byte(0xA8,OLED_CMD); //设置驱动路数 OLED_WR_Byte(0X3F,OLED_CMD); //默认0X3F(1/64) OLED_WR_Byte(0xD3,OLED_CMD); //设置显示偏移 OLED_WR_Byte(0X00,OLED_CMD); //默认为0 OLED_WR_Byte(0x40,OLED_CMD); //设置显示开始行 [5:0],行数. OLED_WR_Byte(0x8D,OLED_CMD); //电荷泵设置 OLED_WR_Byte(0x14,OLED_CMD); //bit2,开启/关闭 OLED_WR_Byte(0x20,OLED_CMD); //设置内存地址模式 OLED_WR_Byte(0x02,OLED_CMD); //[1:0],00,列地址模式;01,行地址模式;10,页地址模式;默认10; OLED_WR_Byte(0xA1,OLED_CMD); //段重定义设置,bit0:0,0->0;1,0->127; OLED_WR_Byte(0xC0,OLED_CMD); //设置COM扫描方向;bit3:0,普通模式;1,重定义模式 COM[N-1]->COM0;N:驱动路数 OLED_WR_Byte(0xDA,OLED_CMD); //设置COM硬件引脚配置 OLED_WR_Byte(0x12,OLED_CMD); //[5:4]配置 OLED_WR_Byte(0x81,OLED_CMD); //对比度设置 OLED_WR_Byte(0xEF,OLED_CMD); //1~255;默认0X7F (亮度设置,越大越亮) OLED_WR_Byte(0xD9,OLED_CMD); //设置预充电周期 OLED_WR_Byte(0xf1,OLED_CMD); //[3:0],PHASE 1;[7:4],PHASE 2; OLED_WR_Byte(0xDB,OLED_CMD); //设置VCOMH 电压倍率 OLED_WR_Byte(0x30,OLED_CMD); //[6:4] 000,0.65*vcc;001,0.77*vcc;011,0.83*vcc; OLED_WR_Byte(0xA4,OLED_CMD); //全局显示开启;bit0:1,开启;0,关闭;(白屏/黑屏) OLED_WR_Byte(0xA6,OLED_CMD); //设置显示方式;bit0:1,反相显示;0,正常显示 OLED_WR_Byte(0xAF,OLED_CMD); //开启显示 OLED_Clear(); }   然后在main.c文件如下位置添加oled测试代码(记得添加头文件和头文件路径)   下载程序,观看现象   此 OLED 驱动的准备已经完成,下一步就是移植 GuiLite2.3 例程移植   首先,我们上GuiLite的例程展示官网:GuiLiteDemo,选择Hello例程,将其中的 UI_Code文件夹复制到 Hardware 下:   在 MDK 工程里面导入UICode下的GuiLite.h和UIcode.cpp文件   我们在 main.c 文件开头添加 GuiLite 接口代码,接口代码如下://画点函数接口 void gfx_draw_pixel(int x, int y, unsigned int rgb) { OLED_DrawPoint(x,y,rgb); } //画面函数(未使用) void gfx_draw_fill(int x, int y,int w, int q, unsigned int rgb) { } //创建一个函数指针结构体 struct EXTERNAL_GFX_OP { void (*draw_pixel)(int x, int y, unsigned int rgb); void (*fill_rect)(int x0, int y0, int x1, int y1, unsigned int rgb); } my_gfx_op; extern void startHelloCircle(void* phy_fb, int width, int height, int color_bytes, struct EXTERNAL_GFX_OP* gfx_op); //设定延时函数接口 void delay_ms(int milli_seconds) { HAL_Delay(milli_seconds); }   之后在main函数中添加如下代码//传递函数指针 my_gfx_op.draw_pixel = gfx_draw_pixel; my_gfx_op.fill_rect = NULL;//gfx_fill_rect; //启动画圆 startHelloCircle(NULL, 128, 64, 1, &my_gfx_op);   然后我们修改UIcode.cpp文件中的代码,添加OLED头文件,以及在UI执行函数界面处添加OLED刷新函数   之后在UIcode的第8行修改3D圆的参数,因为OLED大小128x64 ,所以我的配置如下:   配置完成后,我们关闭Use MicroLIB选项,编译代码   编译成功,下载代码   03
  Gui移植结果   下载完成后程序复位,可以在OLED上看到Demo的示例动画。   一些其他的演示效果   <<< 左右滑动见更多 >>>   <<< 左右滑动见更多 >>>   原文链接:https://mp.weixin.qq.com/s/vAc_rSIe9cPNcWLYj-xCyg、   转载自:嵌入式大杂烩   原文链接:GuiLite移植到STM32F4开发板上   本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

被湖人交易后,越打越好!进攻效率NBA第一,2年3000万真值啊丹佛掘金,可谓是本赛季被低估最多的顶级强队了。每每讨论夺冠热门,球迷总是先想起凯尔特人雄鹿,却选择性遗忘了掘金的战绩。37胜17负高居西部榜首,其中主场豪取25胜4负,球队进攻效率土耳其千年古堡毁于地震来源环球时报环球时报特约记者任寒飞日前土耳其和叙利亚遭遇强烈地震,引发巨大灾难。土耳其知名的历史文化遗迹和热门旅游景点加济安泰普古堡在地震中严重损毁。这座古堡位于加济安泰普省加济安我逃离了大地震!骑行离开土耳其的中国驴友刚刚经历的美好,转眼成了废墟原标题我逃离了大地震!几天前骑行离开土耳其的中国驴友告诉橙柿互动刚刚经历的美好,转眼成了废墟最新消息6日凌晨,发生在土耳其南部靠近叙边境地区的强烈地震,已致两国超过4000人死亡近土耳其叙利亚强震,进入紧急状态我们在这个年纪,已经看透一生土耳其,这个多少次上了旅游热搜的美丽神圣的地方,在2月6日因强震毁于一旦。震前震后根据目前官方公布消息,土耳其副总统奥克塔伊证实,土耳其地震遇难人数升至3419人。再加上叙利亚政府用生命在演戏的张颂文一场戏就能看出他有多热爱元宵节当晚,张颂文还是穿着那件对他有着特殊意义的黄色皮夹克,在横店街头混在人群中欣赏璀璨的烟花。这件黄色外套他已经足足穿了七年之久,每逢一些重要场合张颂文都会穿上它。其实这是件有故刚刚经历的美好,转眼成了废墟几天前骑行离开土耳其的中国驴友我逃离了大地震,但那片土地和人民没有逃脱,愿他们安好最新消息6日凌晨,发生在土耳其南部靠近叙边境地区的强烈地震,已致两国超过4000人死亡近两万人受伤。一人一车一帐篷,独行欧亚大陆,行程五万公里对于抖音UP主王明阳(骑行伊拉克)来说痛心!土耳其地震致女排14人被埋,男排5人遇难,球迷哀悼众所周知,最近土耳其方面发生了7。8级的大地震,这场大地震毫无疑问影响非常严重,除了让很多的楼房倒塌以及造成严重的经济损失之外,目前土耳其方面的遇难人数已经高达了一万人以上。而且这两次7。8级地震!留洋土耳其的中国女足姑娘李佳悦怎么样了?人类在大自然灾难来临时显得很弱小,所以当灾难来临时,民众第一要务就是要保护自己的安全,短时间经历两次7。8级地震,遭受一次就是毁灭性打击,短时间经历两次,破坏程度一点不逊色2008土耳其暂停全部体育赛事C罗球衣被拍卖用于赈灾中新网2月8日电因地震原因,土耳其青年和体育部部长日前宣布,暂停土耳其国内全部体育赛事,直至另行通知。鉴于此,国际中学生体育联合会于当地时间6日发布官方声明,由于土耳其发生地震,原失乐园为追求肉体的欢快而放弃生命,这样的人生真值得吗?相信大家都幻想过与心爱的人一起携手进入婚姻殿堂,从此过上三餐四季的生活,看遍世间繁华。当残酷的现实和理想爱情发生冲突时,大家会选择哪一个呢?是坚守自己的爱情,还是选择被现实所支配?董卿的气质感无敌了!路边摊吃个饭都如此精致优雅,美成风景线头条创作挑战赛美人在骨不在皮,一个女人的美丽不仅仅来自于她华丽的外表,她读过的书走过的路,自律且自信的生活态度,会成就她与众不同的气质。即使她在人群中站立,什么也不做,她所散发的气
沙滩和海浪天海一线相汇于东方,霞光让它们换上了艳丽的晚妆。泡澡的礁石横七竖八,半坐半躺,懒洋洋。踏进浅水的双脚,感觉到一阵阵清凉。大海总让人们充满了好奇和幻想。你记不记得安徒生的小人鱼?那个方与圆(六十四)抄书打卡第285天,2022。12。11别把冷遇当回事人的事业不论大小,总有一些光环笼罩。当光环褪去,只有归于平淡,过着平凡平静的生活,孤寂和落寞在所难免。人生有起伏,事业会有曲折耳边评测两万三买块砖?海贝音乐HiByRS8旗舰播放器听感评测01THEONE我根据多年的经验,总结出一个很奇怪的现象大多数发烧友的习惯是不断往复地尝试各类不同的耳机,而终其HiFi生涯地寻找理想中的一个播放器。所以,从磁带机光盘机,到硬盘机小米1313Pro发布3999元与4999元起12月11日晚,小米正式发布了小米13小米13ProMIUI14,以及小米迷你主机。小米13的价格和小米12S接近,小米13Pro比小米12SPro贵300400元。小米13小米1桌面凌乱如何解现如今各种桌面整理案例,正在刺痛热爱整洁或有强迫症人群的神经,譬如本人。当我们桌面整理的干干净净,是否会因为不合理的桌面插板或者插座设计的不合理,而为整洁的桌面带来一丝不爽。你是否生命无常感恩活着大家好!我60后悟道。思人生,悟情感,知微见约,大道至简进入人生下半场,不时有亲朋好友离我而去。有的是寿终正寝的,有的是英年早逝,还有的是生无可恋,还有在疫情和意外中丧失生命的人。别再吐槽刘亦菲的衣品很差,感觉是衣服配不上她,就是披麻袋都美女星刘亦菲有时穿衣品味确实不如其他很多的女星,当然在多数情况下她穿的服装都是非常漂亮,只有在极少的情况下她穿衣品味确实不够好,甚至曾经被众多网友吐槽她穿衣品味太差了。幸好她是女神级宇宙中最神奇的长度21厘米光子以您能想象到的每个波长出现。但是一个特殊的量子跃迁可以使光精确到21厘米,这是很神奇的。这张星系Messier81的地图是根据超大阵列获取的数据构建的,以21厘米的辐射绘制出这80万人评论,1793万点赞!C罗发文破纪录,最后一战比梅西更轰动北京时间12月12日,葡萄牙已经告别了世界杯,C罗发布长文,总结自己的第5次世界杯之旅。而这次的C罗长文,再次尽显了他的惊人影响力,他的Instagram已经成为了实时点赞人数最多摩洛哥vs葡萄牙前瞻C罗对黑马或继续替补,G拉莫斯再次闪光?世界杯淘汰赛14决赛摩洛哥VS葡萄牙比赛时间北京时间2022年12月10日2300看点在点球大战击败西班牙后,摩洛哥本届世界杯依然保持不败,已然成为了赛事最大黑马。葡萄牙在上场比赛MVP回归?胡明轩高效一战关键三分杀死比赛正负值15队内最高12月10日,CBA常规赛继续进行,广东队VS广州队。比赛开始后两队都全力争胜,广东队攻防稍弱,他们首节落后2分,半场落后9分。下半场双方仍力拼,因此一直鏖战到加时赛,广东队后来更