【国民技术N32G457评测】RT-Thread 驱动SSD1306
<p>RT_Thread的软件包中心方便的给用户提供了常用的驱动,今天我们使用软包中心来驱动SSD1306的OLED屏。</p><p>1、新建项目,选用基于开发板:</p>
<p> 打开RT-Thread Settings:</p>
<p></p>
<p>选择添加软件包:</p>
<p></p>
<p>打开界面,查找ssd1306,添加软件包:</p>
<p> 在软件包上选择详细配置:</p>
<p> 钩选sample</p>
<p></p>
<p>钩选ENABLE I2C</p>
<p>返回界面</p>
<p>启用C++ libc</p>
<p> </p>
<p>关闭配置,并且保存。</p>
<p> 修改SCL SDA 为Pin 92 93</p>
<p> 修改drv_gpio.c 的配置为100pin</p>
<p></p>
<p>修改main.c为:</p>
<pre>
<code>/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2015-07-29 Arda.Fu first implementation
*/
#include <stdint.h>
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <string.h>
#include <stdio.h>
#include "ssd1306.h"
/* defined the LED1 pin: PB5 */
#define LED1_PIN 91
int main(void)
{
uint32_t Speed = 200;
/* set LED1 pin mode to output */
rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
rt_kprintf("start ssd1306\r\n");
ssd1306_Init();
ssd1306_Fill(Black);
ssd1306_SetCursor(2,0);
ssd1306_WriteString("HELLO NG32!", Font_11x18, White);
ssd1306_SetCursor(2,18);
ssd1306_WriteString("HAPPY NEW YEAR!", Font_7x10, White);
ssd1306_UpdateScreen();
while (1)
{
rt_pin_write(LED1_PIN, PIN_LOW);
rt_thread_mdelay(Speed);
rt_pin_write(LED1_PIN, PIN_HIGH);
rt_thread_mdelay(Speed);
}
}
</code></pre>
<p> 然后编译下载:</p>
<p>成功点亮LED</p>
<p> 通这几步就可以成功驱动SSD1306,这里主要就是要修改SCL SDA的引脚有点小麻烦,因为软件包给的是23,24,查找drv_gpio.c中,没有23这个引脚,通过查阅数据手册为92(PB6) 93(PB7)。经过半天的折腾,终于点亮屏了!希望给大家引引路。</p>
赞,用的是软I2C还是硬I2C? fxyc87 发表于 2022-1-25 13:44
赞,用的是软I2C还是硬I2C?
<p>RTThread的IIC一般都是采用软件的。</p>
fxyc87 发表于 2022-1-25 13:44
赞,用的是软I2C还是硬I2C?
<p>可以硬的,可以软的,都有例程的。U8G2的例程比较明确一些。</p>
RT-THREAD实现起来就是简单点。期待后续
页:
[1]