【国民技术N32G457评测】RT-Thread 驱动SSD1306
[复制链接]
RT_Thread的软件包中心方便的给用户提供了常用的驱动,今天我们使用软包中心来驱动SSD1306的OLED屏。
1、新建项目,选用基于开发板:
打开RT-Thread Settings:
选择添加软件包:
打开界面,查找ssd1306,添加软件包:
在软件包上选择详细配置:
钩选sample
钩选ENABLE I2C
返回界面
启用C++ libc
关闭配置,并且保存。
修改SCL SDA 为Pin 92 93
修改drv_gpio.c 的配置为100pin
修改main.c为:
/*
* 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);
}
}
然后编译下载:
成功点亮LED
通这几步就可以成功驱动SSD1306,这里主要就是要修改SCL SDA的引脚有点小麻烦,因为软件包给的是23,24,查找drv_gpio.c中,没有23这个引脚,通过查阅数据手册为92(PB6) 93(PB7)。经过半天的折腾,终于点亮屏了!希望给大家引引路。
|