前言
手上正好有 CH32V307 的板子就耍耍,网上4P的OLED例程也不少 4P OLED 屏驱动例程。在加上一些 STM32 标准库的知识,改改引脚定义,就可以将 OLED 屏连接到板子上进行显示了。当然,我也将会分享我整理好的库文件代码和完整的工程,以便那些需要的朋友们能够快速上手实现 OLED 屏的驱动和显示功能。希望这篇文章能对大家有所帮助。
环境
-
软件:MounRiver Studio
-
OLED的电源连接就不说了
SCL —> PB11 SDA —> PB10
流程
-
文字流程
- 在主函数确保IIC所用到的双引脚完成初始化
- 在oled.h中修改IIC引脚的信息(格式如下)
#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_11)//SCL
#define OLED_SCLK_Set() GPIO_SetBits(GPIOB,GPIO_Pin_11)
#define OLED_SDIN_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_10)//SDA
#define OLED_SDIN_Set() GPIO_SetBits(GPIOB,GPIO_Pin_10) - 记得导入OLED.h库,和添加路径
#include “oled.h” - 记得初始化OLED
OLED_Init();
OLED_Clear();
-
代码流程
下面的基于我打包好的OLED屏库,文件的导入流程。
-
在主函数确保IIC所用到的双引脚完成初始化。main.c
void OLEDGPIO_Init() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); }
-
在oled.h中修改IIC引脚的信息(格式如下)。oled.h
#define OLED_SCLK_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_11)//SCL #define OLED_SCLK_Set() GPIO_SetBits(GPIOB,GPIO_Pin_11) #define OLED_SDIN_Clr() GPIO_ResetBits(GPIOB,GPIO_Pin_10)//SDA #define OLED_SDIN_Set() GPIO_SetBits(GPIOB,GPIO_Pin_10)
-
记得导入OLED.h库,复制到工程文件下和添加路径。
#include "OLED.H"
-
添加文件。
-
添加编译路径
在左上方的工具栏中找到,
文件
-->属性
,点击打开如下界面。点击文件系统后,在跳出的文件夹选择框中,添加包含的OLED库进来即可。
-
-
主程序中初始化OLED,多添加一条显示函数,来检验现象。
OLED_Init(); OLED_Clear(); OLED_ShowString(0, 0, "HELLO WORLD!", 16);
-
现象
上述代码烧录现象
工程
CH32V307VCT6_OLED_4P.zip 是完整的工程文件。OLED_4P.zip 是单独的OLED库。
链接:https://pan.baidu.com/s/1NPBAkmuw3IrYTwbsLPGyBw 提取码:uzlg