stm32hal库硬件IIC使用OLED(SSD1306)

其实OLED算是非常常用的一个小模块了,之前用的一直用的是软件模拟的IIC,总的来说感觉还是都是有点"答辩",经常莫名其妙的就点不亮的,用了cubemx之后硬件iic配置就非常方便了,还是想用硬件iic,一方面是速率快,二是稳定。在百度搜了一圈也没发现什么好的,github上也有的是一堆答辩,找到一个用起来很不错的就分享一下github上的一个开源库。

链接如下https://github.com/4ilo/ssd1306-stm32HAL(我相信你能打开它hhhh)

正如作者所描述的,你只需要添加这俩个文件,用上这几句话即可stm32hal库硬件IIC使用OLED(SSD1306)_第1张图片
不过接下来还是稍微详细说明一下其中的一些细节

1.

文件的目录如下,有一个lib和一个example,分别是库文件,和一个stm32f4的例子
stm32hal库硬件IIC使用OLED(SSD1306)_第2张图片
使用的时候需要吧lib里面的文件复制到项目里,并添加进去,还有头文件能被找到,具体操作这里就不细说了
stm32hal库硬件IIC使用OLED(SSD1306)_第3张图片

2.

你需要修改ssd1306.h里面对应的芯片型号,像我使用的是stm32f1的,就改成f1,原库里面是f4的
stm32hal库硬件IIC使用OLED(SSD1306)_第4张图片

3.

IIC设置,其实可以打开原项目里面example的cubemx的文件,可以看到他的iic设置,其实基本上就是点一下iic,把disable变成I2C就搞定了,下图是我的设置
stm32hal库硬件IIC使用OLED(SSD1306)_第5张图片

4.

就像上面作者那样,声明头文件,做初始化。有一个小tip就是,在定义I2C_HandleTypeDef hi2c1的时候需要加一个extern,因为这个已经是在i2c.c里面定义过了,需要引用外部的,否则屏幕点不亮的。

stm32hal库硬件IIC使用OLED(SSD1306)_第6张图片

基本上到这里屏幕就能顺利点亮了,具体的一些操作请参考他文件里的一些函数,或者自己编写一点?hahhh,总而言之,我觉得这个库是非常方面而且简便的。

你可能感兴趣的:(stm32,stm32,单片机,嵌入式硬件)