VSCode+CubeMX开发STM32笔记-使用硬件I2C接口与OLED显示
使用VSCode+CubeMx开发STM32,这里介绍使用硬件I2C接口驱动OLED屏幕;
1.建立工程
1.1 创建项目文件
从已有的仓库中创建一个工程:
1 | git clone https://github.com/makerinchina-iot/vscode_stm32cubemx_hello.git oled |
使用VSCode打开工程后,需要更改如下名字:
- 文件夹根目录下CMakeLists.txt 文件中修改工程名字为oled:
1 | set(CMAKE_PROJECT_NAME oled) |
- stm32cubemx配置文件更改为 oled.ioc ,并更改以下文件名:
1 | ... |
1.2 引脚配置
使用STM32CubeMx打开ioc配置文件,然后配置对应的硬件I2C引脚;

2. 编写代码
2.1 基本的硬件I2C使用
由CubeMx配置好I2C后,直接使用接口 HAL_I2C_Master_Transmit
或 HAL_I2C_Mem_Write
来对I2C进行写操作即可;
2.2 OLED显示
- OLED初始化
1 | // OLED initialisation sequence |
- OLED写命令和写数据操作
1 | static void ssd1306_write_cmd(uint8_t cmd) |
- OLED基本显示
SSD1306为128x64像素,分为8个Page和128列,1个Page的1列包含8个像素点,因此写入时按字节写入,1个字节会填充1个page的1列像素点,高位在上,低位在下,示意图如下:

显示时候就需要先指定位置,即Page和列的坐标,然后写入像素即可显示了;
- 设置坐标
1 | void ssd1306_set_pos(uint8_t x, uint8_t y) |
- OLED显示条纹测试
0-63列显示上半部分,64-127列显示下半部分:
1 | void ssd1306_test_bar() |
3.编译并烧录代码
3.1 编译和烧录
点击生成按键即可编译工程;
在VSCode中执行task:openocd-flash烧录;
3.2 硬件连接与结果
- 按照如下方式连接硬件:
STM32 | OLED |
---|---|
3.3V | 3V3 |
PB13 | SCL |
PB14 | SDA |
GND | GND |
- 最后可以看到OLED显示如下:

著作权归本网站(https://makerinchina.cn)所有,转载请注明来自 MakerInChina.