基于STM32 HAL库的0.96/1.3寸OLED I2C驱动程序,支持硬件I2C和软件I2C,支持UTF-8和GB2312,软硬件I2C适配部分来自于zeruns,代码功能主体部分来自于江协科技的OLED驱动程序V2.0版本,工程代码由STM32MXCube生成。
以下为本文章代码github仓库
STM32-OLED-SSD1306-I2C-HAL
qlqqs • Updated Sep 5, 2025
本工程可用Keil5打开。
所有工程文件采用UTF-8编码。如遇乱码,请将编辑器编码设置为UTF-8。
使用说明
导入模块
OLED.c
qlqqs
OLED.h
qlqqs
OLED_Data.c
qlqqs
OLED_Data.h
qlqqs
硬件I2C
步骤一:STM32CubeMX配置I2C
启用相应I2C外设,将速度模式设为
Fast Mode。其他设置保持默认。
步骤二:将I2C的GPIO标签(User Label)分别更改为
I2C_SCL和I2C_SDA
步骤三:在OLED.h文件中
- 注释
#define OLED_USE_SW_I2C,取消注释#define OLED_USE_HW_I2C
- 修改红框内相应定义

软件I2C
步骤一:STM32CubeMX配置:选择两个引脚作为I2C的SCL和SDA信号线。将IO口的
User Label 分别设为I2C_SCL和I2C_SDA。IO模式设为开漏输出,默认输出高电平,上拉输出,速度设至最高。如下图所示。完成后,点击生成代码。
步骤二:在OLED.h文件中,注释
#define OLED_USE_HW_I2C,取消注释 #define OLED_USE_SW_I2C。如使用其他引脚作为I2C引脚且定义了不同名称,请相应修改代码中的 I2C_SCL 和 I2C_SDA。
测试代码
需要在
main.c中添加如下代码1. 导入头文件
2. 初始化OLED
3. 添加测试代码
📎 参考文章
STM32G4-OLED-SSD1306-I2C-HAL
zeruns • Updated Aug 22, 2025
- 作者:qlqq
- 链接:https://blog.qlqqs.com//article/STM32-OLED-OLED-I2C-HAL
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

![[模块教程] 第1期 0.96寸OLED显示屏_哔哩哔哩_bilibili](https://www.notion.so/image/https%3A%2F%2Fi0.hdslb.com%2Fbfs%2Farchive%2F2e1e386681b548a1a8009001a81441444d2df1b1.jpg%40100w_100h_1c.png%4057w_57h_1c.png?table=block&id=1420c0a5-5bf7-8061-a798-e6aeb66450c3&t=1420c0a5-5bf7-8061-a798-e6aeb66450c3)
![[模块教程] 第1期 0.96寸OLED显示屏_哔哩哔哩_bilibili](https://www.notion.so/image/https%3A%2F%2Fi0.hdslb.com%2Fbfs%2Farchive%2F2e1e386681b548a1a8009001a81441444d2df1b1.jpg%40100w_100h_1c.png?table=block&id=1420c0a5-5bf7-8061-a798-e6aeb66450c3&t=1420c0a5-5bf7-8061-a798-e6aeb66450c3)