四针脚0.96寸OLED屏幕标准库代码转Cube Max创建的HAL库工程代码

作者在学习STM32时,经历了从江科大标准库教程到小蜜蜂笔记的HAL库教程的过渡。在尝试将OLED显示功能从标准库移植到HAL库时遇到了问题,主要是引脚初始化、头文件引用及GPIO操作语句的差异。通过删除不必要的GPIO初始化代码,修改头文件引用,以及更新GPIO写入语句,成功解决了问题,并实现了OLED屏幕在HAL库环境下的正常显示。
摘要由CSDN通过智能技术生成

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中引用的头文件,并修改头文件对应代码。

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

  • 12
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值