前言
oled显示的代码淘宝店家会提供,但是呢不知道为什么我的f401ccu6就是点不亮oled,所以只好从github上找到了一个,这个写的很全但是呢,使用keil的话需要移植一下,过程也不复杂,不过我已经移植好了,直接用就可以了。
oled程序文件下载地址
这个是本文的github的地址
I2C
一、cubemx的配置
我们使用硬件i2c进行数据的传输
我们使用阻塞模式不用开启dma和中断
二、库的引入和修改
1.引入库
文件直接在这里看一看到到
需要将这些文件都放在你的项目中
其中的tests文件是用于测试的,第一次用的时候可以用它来测试。
2.修改成自己的函数
在ssd1306_conf.h
中修改成自己的那个芯片
以及你需要的那个i2c如果你用的是2的话你就改成hi2c2
即可
在ssd1306.c
中需要改成你需要的那个函数,我这里用的是阻塞模式,
其实用阻塞模式也就可以了,没必要上DMA
3.测试
直接在主函数里面加入这个即可。
三、库函数
所有的库函数都可以在ssd1306.h
中看到
这里讲解几个比较重要的
1.
ssd1306_Fill(SSD1306_COLOR color);
这个函数就是填充整个屏幕的,这个函数调用以后立即执行,不会需要额外的刷新
函数的参数有Black
和White
。
2.
ssd1306_DrawPixel(uint8_t x, uint8_t y, SSD1306_COLOR color);
这是一个画点的函数。
函数的参数为点的坐标以及颜色。
要注意 这个函数执行完成以后会将屏幕的显示数据存放在数组中,只有执行ssd1306_UpdateScreen(void);
这个函数以后,屏幕才会显示,后面的所以显示字符以及画圆之类的都是这样!!
3.
char ssd1306_WriteChar(char ch, FontDef Font, SSD1306_COLOR color);
char ssd1306_WriteString(char* str, FontDef Font, SSD1306_COLOR color);
这个两个函数是用来显示字符的,第一个是单个字符、第二个是字符串。
但是你发现没有设置坐标。
所以需要先调用ssd1306_SetCursor(uint8_t x, uint8_t y);
。
每次在某个地方显示字符串的时候都需要先调用这个坐标函数。
函数的参数中的第二个参数FontDef Font
是选择字符大小的。
可以调用以下几个,分别表示不同大小的字符
Font_6x8;
Font_7x10;
Font_11x18;
Font_16x26;
Font_16x24;
总结
2023.6.8
第一版
说明了i2c点亮oled的配置。