首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >RT-Thread OLED驱动流程(RTT-Studio平台))

RT-Thread OLED驱动流程(RTT-Studio平台))

作者头像
用户8913398
发布2021-08-16 16:01:43
发布2021-08-16 16:01:43
2.4K0
举报

最近RT-Thread举办了一个RTT全连接大赛,也是借着这次机会,申请了一块RTT的STM32H750为主控芯片的RTT核心板,做工还是很漂亮的,老规矩,话不多说,上干货!

新建工程就不多说了,有问题的话,加我好友,小飞哥手把手教,哈哈,工程建立后

1、double click 方框中的配置选项,进入工具箱界面,点击ADD 按钮,在弹出的RT-Thread软件包界面搜索框输入u8g2,点击添加,软件包已添加进来

2、依然double clicku8g2软件包图标,或者右击鼠标,进入配置见面,由于我的屏幕是IIC接口的,这里选择的是软件模拟IIC,版本选择方框里面的,也是默认的选项。

3、完成后,点击保存,等待一会,软件包就添加进工程了,接下来当然是build工程啦,RT-Studio保持了一贯作风。CTRL+B,或者项目下面的构建项目选项,编译完成,也是非常不习惯的无errors,无warnings,嘿嘿。

4、迫不及待的想要下载固件了,下他,完成后,控制台输出ART-PI的BOOT界面,很大的LOGO,怕别人看不到,哈哈,输入help后,会出现一些常用指令,可以看到,我们的显示屏驱动软件包已经添加进来啦

5、接下来当然是根据需要修改我们连接的引脚啦,我用的是PH11-SCL,PH12-SDA引脚,引脚的选择随意啦,但是要注意IIC需要有上拉电阻,一定要注意,至于为什么有上拉电阻,网上应该有很多说明了呀,大家就百度百度咯

这里要注意在drv_GPIO.c文件里面,或者别处(头文件)定义RT_USING_PIN,否则会报错的哦,一定要注意!!!

修改IIC接口PIN引脚为P11,PH12

6、至此,准备工作就做完啦,接下来,就进入最终的显示阶段啦,先来修改写一写简单的问候语,哈哈,欢迎伙伴们加入Embeded 小飞哥的大party,第一处可以定义我们要写的字体的size,有很多哦,这里选择的是10*20的size,修改完成后,编译-下载一条龙咯

7、老规矩,help,会告诉你想要的一切,在下面的msh/>后面输入,我们的显示屏接口,如红框里面的,太长啦,复制粘贴就可以啦

运行之后,我们期待的显示内容就出来啦,千呼万唤始出来,犹抱琵琶半遮面啊,哈哈哈哦,下面是视频。

8、我想自己定义一个文件,不想和软件包的内容放一起,自己看起来舒服,好,那接下来我们编写自己的OLED显示线程,说白了很简单,自己定义一个文件,就可以了,我们放在application文件夹中,新建文件OLED_Display.cpp文件,写入下面内容就可以啦,就可以做做自己的显示处理逻辑了

#include <rthw.h> #include <rtthread.h> #include <rtdevice.h> #include <U8g2lib.h> #include <stdio.h> #include "drv_common.h" #include <drv_soft_i2c.h> extern "C" { //#include <sht3x.h> } extern "C" { } #define OLED_I2C_PIN_SCL GET_PIN(H, 11) // 22 // PH11 #define OLED_I2C_PIN_SDA GET_PIN(H, 12) // 23 // PH12 static U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,\ /* clock=*/ OLED_I2C_PIN_SCL,\ /* data=*/ OLED_I2C_PIN_SDA,\ /* reset=*/ U8X8_PIN_NONE); void oled_display() { u8g2.begin(); u8g2.clearBuffer(); u8g2.setFont(u8g2_font_logisoso32_tf); u8g2.setCursor(48+3, 42); u8g2.print("Hi~"); // requires enableUTF8Print() u8g2.setFont(u8g2_font_6x13_tr); // choose a suitable font u8g2.drawStr(30, 60, "Embeded FlyGe"); // write something to the internal memory u8g2.sendBuffer(); rt_thread_mdelay(2000); while(1) { u8g2.setFont(u8g2_font_10x20_tr); // choose a suitable font u8g2.drawStr(15, 40, "Hello Guys"); // write something to the internal memory //u8g2.drawStr(30, 18, "Embeded FlyBrother"); // write something to the internal memory u8g2.sendBuffer(); // transfer internal memory to the display rt_thread_mdelay(1000); u8g2.clearBuffer(); u8g2.drawStr(15, 40, "Welcome to"); // write something to the internal memory //u8g2.drawStr(30, 18, "Embeded FlyBrother"); // write something to the internal memory u8g2.sendBuffer(); rt_thread_mdelay(1000); u8g2.clearBuffer(); u8g2.drawStr(0, 30, "Join Embeded"); // write something to the internal memory //u8g2.drawStr(30, 18, "Embeded FlyBrother"); // write something to the internal memory u8g2.sendBuffer(); u8g2.drawStr(0, 50, " Party!!!"); u8g2.sendBuffer(); rt_thread_mdelay(1000); u8g2.clearBuffer(); } } MSH_CMD_EXPORT(oled_display, oled start);

9、我这里还是刚才的显示内容,然后循环显示,添加之后,编译,下载,就看到了我们新添加的接口函数名称了,输入它,运行它,干!!上视频

就写到这里啦,啰啰嗦嗦一大堆,哈哈。

欢迎大家关注 Embeded小飞哥 ,我是小飞哥,让我快点遇到优秀的你,然后一起变得更加优秀,加油!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小飞哥玩嵌入式 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档