当前位置:   article > 正文

四针脚0.96寸OLED屏幕标准库代码转Cube Max创建的HAL库工程代码_江科大单片机oled的cubemx

江科大单片机oled的cubemx

stm32学了一个多月了。

刚开始是跟着江科大学的,讲的很好,里面是用标准库。

后来因为Hal库用着简单,就开始学习Hal库,跟的是b站的【小蜜蜂笔记】基于STM32CubeMX的嵌入式开发基础教程。板子还是江科大的板子,没换可以继续用。

在学到OLED这一节的时候,出现了问题。小蜜蜂老师教程里的OLED屏幕是七针脚的,SPI通信,而我手里的是四针脚的IIC通信的OLED屏幕(我说的可能不是很准确,不过反正我俩手上的屏幕不一样)。于是我就想着把江科大视频教程里的OLED文件弄到用Cube Max创建的工程里试试看。

于是我学着小蜜蜂老师的操作,吧江科大三个OLED文件复制到工程文件里Src文件夹下,并在Keil里Application/User中添加OLED.c文件。

 

之后打开工程里的main.c和OLED.c如下如所示:

可以看到,在引脚初始化这一部分出现了问题。由于用Cube Max创建工程时提前配置好了引脚,因此我在这里试着把初始化的代码删掉了,如下图所示:

这里看到关于IIC时钟线和数据线的代码还有问题。

同时这里还有一个问题就是#include "stm32f10x.h"这个命令是标准库里的头文件,在Hal库编写的工程里是不能用的,需要修改为#include "stm32f1xx_hal.h"否则会报错。

该问题是我在瞎改代码的过程中发现的,解决的方法来自这两篇文章:

Keil编译报错[error: #101: “xxx_IRQn“ has already been declared in the current scope]解决办法

论STM32标准库程序修改为HAL库

在改完头文件之如下图所示:

接下来需要解决关于IIC时钟线和数据线的代码的问题。上面的带参数的宏定义用于设置端口的高低电平,而后面的GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x))是标准库里的语句,需要修改为Hal库里的语句:

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8, (GPIO_PinState)(x))

修改后如下图所示:

这是就看不到有问题的语句了。编译一下,main.c和OLED.c都没有问题。

进入main.c主函数里。

添加OLED.h头文件

在如图下位置(GPIO初始化之后)填写如下图代码。初始化OLED,调用显示字符串命令。

编译,没问题,下载。

(这里要说一下,OLED的接线方式与引脚配置与江科大的教程中一致)

OLED显示没有问题。

总结:

在工程里添加修改了OLED相关文件。

删除了OLED初始化函数中对GPIO的配置。

修改OLED.c中引用的头文件,并修改头文件对应代码。

江科大的代码里只有显示文字的模块,没有显示图像的模块。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/667364
推荐阅读
相关标签
  

闽ICP备14008679号