电子产业一站式赋能平台

PCB联盟网

搜索
查看: 62|回复: 0
收起左侧

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

[复制链接]

210

主题

210

帖子

1678

积分

三级会员

Rank: 3Rank: 3

积分
1678
发表于 2020-11-16 23:55:00 | 显示全部楼层 |阅读模式
最近RT-Thread举办了一个RTT全连接大赛,也是借着这次机会,申请了一块RTT的STM32H750为主控芯片的RTT核心板,做工还是很漂亮的,老规矩,话不多说,上干货!

l1i15xrg1p06405165019.jpg

l1i15xrg1p06405165019.jpg

        新建工程就不多说了,有问题的话,加我好友,小飞哥手把手教,哈哈,工程建立后
1、double click 方框中的配置选项,进入工具箱界面,点击ADD 按钮,在弹出的RT-Thread软件包界面搜索框输入u8g2,点击添加,软件包已添加进来

mzofayjelig6405165119.png

mzofayjelig6405165119.png


iux3h3bvpss6405165219.png

iux3h3bvpss6405165219.png


vb5u5x5da5l6405165319.png

vb5u5x5da5l6405165319.png


xdgksrmf2yw6405165420.png

xdgksrmf2yw6405165420.png


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

gtr3bj1u5db6405165520.png

gtr3bj1u5db6405165520.png

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

4ndcvwmw3t36405165620.png

4ndcvwmw3t36405165620.png



eauqoumf2y56405165720.png

eauqoumf2y56405165720.png

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

sj5uxdqinnp6405165820.png

sj5uxdqinnp6405165820.png

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

2no54f0qjhb6405165920.png

2no54f0qjhb6405165920.png

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

g40sz5t3vne6405166020.png

g40sz5t3vne6405166020.png

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

yiew2cmyxcw6405166120.png

yiew2cmyxcw6405166120.png

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

hdnxkpz5ref6405166220.png

hdnxkpz5ref6405166220.png

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

yynyziys0506405166320.png

yynyziys0506405166320.png

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

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

h33nwkf45rq6405166420.png

h33nwkf45rq6405166420.png



#include
#include
#include
#include [U]
#include
#include "drv_common.h"
#include
extern "C"
{
//#include
}
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);


blco4sfr4ou6405166520.png

blco4sfr4ou6405166520.png

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

    就写到这里啦,啰啰嗦嗦一大堆,哈哈。
欢迎大家关注 Embeded小飞哥  ,我是小飞哥,让我快点遇到优秀的你,然后一起变得更加优秀,加油!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表