電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 41|回復(fù): 0
收起左側(cè)

RT-Thread OLED驅(qū)動(dòng)流程(RTT-Studio平臺(tái)))

[復(fù)制鏈接]

193

主題

193

帖子

1532

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
1532
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-11-16 23:55:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近RT-Thread舉辦了一個(gè)RTT全連接大賽,也是借著這次機(jī)會(huì),申請(qǐng)了一塊RTT的STM32H750為主控芯片的RTT核心板,做工還是很漂亮的,老規(guī)矩,話不多說,上干貨!

        新建工程就不多說了,有問題的話,加我好友,小飛哥手把手教,哈哈,工程建立后
1、double click 方框中的配置選項(xiàng),進(jìn)入工具箱界面,點(diǎn)擊ADD 按鈕,在彈出的RT-Thread軟件包界面搜索框輸入u8g2,點(diǎn)擊添加,軟件包已添加進(jìn)來









2、依然double clicku8g2軟件包圖標(biāo),或者右擊鼠標(biāo),進(jìn)入配置見面,由于我的屏幕是IIC接口的,這里選擇的是軟件模擬IIC,版本選擇方框里面的,也是默認(rèn)的選項(xiàng)。


3、完成后,點(diǎn)擊保存,等待一會(huì),軟件包就添加進(jìn)工程了,接下來當(dāng)然是build工程啦,RT-Studio保持了一貫作風(fēng)。CTRL+B,或者項(xiàng)目下面的構(gòu)建項(xiàng)目選項(xiàng),編譯完成,也是非常不習(xí)慣的無errors,無warnings,嘿嘿。





4、迫不及待的想要下載固件了,下他,完成后,控制臺(tái)輸出ART-PI的BOOT界面,很大的LOGO,怕別人看不到,哈哈,輸入help后,會(huì)出現(xiàn)一些常用指令,可以看到,我們的顯示屏驅(qū)動(dòng)軟件包已經(jīng)添加進(jìn)來啦


5、接下來當(dāng)然是根據(jù)需要修改我們連接的引腳啦,我用的是PH11-SCL,PH12-SDA引腳,引腳的選擇隨意啦,但是要注意IIC需要有上拉電阻,一定要注意,至于為什么有上拉電阻,網(wǎng)上應(yīng)該有很多說明了呀,大家就百度百度咯


        這里要注意在drv_GPIO.c文件里面,或者別處(頭文件)定義RT_USING_PIN,否則會(huì)報(bào)錯(cuò)的哦,一定要注意。。


修改IIC接口PIN引腳為P11,PH12


6、至此,準(zhǔn)備工作就做完啦,接下來,就進(jìn)入最終的顯示階段啦,先來修改寫一寫簡單的問候語,哈哈,歡迎伙伴們加入Embeded 小飛哥的大party,第一處可以定義我們要寫的字體的size,有很多哦,這里選擇的是10*20的size,修改完成后,編譯-下載一條龍咯


7、老規(guī)矩,help,會(huì)告訴你想要的一切,在下面的msh/>后面輸入,我們的顯示屏接口,如紅框里面的,太長啦,復(fù)制粘貼就可以啦


運(yùn)行之后,我們期待的顯示內(nèi)容就出來啦,千呼萬喚始出來,猶抱琵琶半遮面啊,哈哈哈哦,下面是視頻。

8、我想自己定義一個(gè)文件,不想和軟件包的內(nèi)容放一起,自己看起來舒服,好,那接下來我們編寫自己的OLED顯示線程,說白了很簡單,自己定義一個(gè)文件,就可以了,我們放在application文件夾中,新建文件OLED_Display.cpp文件,寫入下面內(nèi)容就可以啦,就可以做做自己的顯示處理邏輯了




#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);



9、我這里還是剛才的顯示內(nèi)容,然后循環(huán)顯示,添加之后,編譯,下載,就看到了我們新添加的接口函數(shù)名稱了,輸入它,運(yùn)行它,干!上視頻

    就寫到這里啦,啰啰嗦嗦一大堆,哈哈。
歡迎大家關(guān)注 Embeded小飛哥  ,我是小飛哥,讓我快點(diǎn)遇到優(yōu)秀的你,然后一起變得更加優(yōu)秀,加油!

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表