STM32移植u8g2驱动7针OLED(软件SPI)

本文介绍了如何在STM32F407ZET6单片机上移植u8g2库以驱动7针、128x64分辨率、SSD1306驱动芯片的OLED显示屏。主要步骤包括资源下载、库文件拷贝、头文件添加、源代码精简、SPI管脚初始化以及编写相关函数。最后,通过测试验证了移植的成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32移植u8g2

一、资源下载及硬件资源

1.u8g2显示库在github上即可下载,u8g2下载地址,u8g2文档
2.硬件资源:(1)stm32f407zet6;(2)采用7针OLED,软件模拟4线spi,大小为128*64,驱动芯片为ssd1306,字节大小为1024

二、移植步骤

  1. 在工程文件里建立u8g2文件夹,用于存放u8g2的源码在这里插入图片描述

  2. 将u8g2源码中csrc文件夹的有关文件拷贝至工程文件u8g2及USER中
    u8g2文件夹详细文件

    将csrc中u8g2.h及u8x8.h拷贝至USER文件夹

  3. 添加头文件,在oled.h中添加头文件

#include "u8g2.h"
#include "u8x8.h"
  1. 精简u8g2_d_memory.c和u8g2_d_setup.c,精简后如下图
    u8g2_d_setup.c
#include "u8g2.h"

/* ssd1306 f */
void u8g2_Setup_ssd1306_128x64_noname_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb)
{
   
  uint8_t tile_buf_height;
  uint8_t *buf;
  u8g2_SetupDisplay(u8g2, u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, byte_cb, gpio_and_delay_cb);
  buf = u8g2_m_16_8_f(&tile_buf_height);
  u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_vertical_top_lsb, rotation);
}

u8g2_d_memory.c

#include "u8g2.h"

uint8_t *u8g2_m_16_8_f(uint8_t *page_cnt)
{
   
  #ifdef U8G2_USE_DYNAMIC_ALLOC
  *page_cnt = 8;
  return 0;
  #else
  static uint8_t buf[1024];
  *page_cnt = 8;
  return buf;
  #endif
}

由于我这里用的OLED驱动芯片是SSD1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值