中景园屏幕介绍
就是最普通的OLED显示屏,没有啥特殊的,0.96和1.3寸的屏幕都拥有128X64的分辨率,代码相互兼容,仅仅在尺寸和PPI上有一定的区别
用这家的OLED只是因为这家现在能发货,而且开发板能代焊排针
移植过程
代码分析
中景园所提供的库文件是基于软件定义的SPI协议,这种实现方式在性能上有一定的损失,但是可以带来较好的兼容性.后续会尝试利用32自带的SPI硬件部分进行通信.
中景园所提供的库文件主要基于标准库,与HAL库相比,没啥太大的缺点(个人认为),表面上来看就是封装方式上有一定的区别.因此需要进行一定的移植和配置.
IO控制函数
由于基于标准库的IO控制语句为:
GPIO_ResetBits(GPIOA,GPIO_Pin_15)
GPIO_SetBits(GPIOA,GPIO_Pin_15)
而在HAL库当中,这些语句被统一为:
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET)
主要有以下几点需要注意
- GPIO_Pin_x需要更改为GPIO_PIN_x
- ResetBits和SetBits被函数的参量GPIO_PIN_RESET和GPIO_PIN_SET所代替,其中,reset为置零(LOW),set为置一(HIGH).
延时控制函数
那么换用HAL库的另外一点就是,本身中景园采用的是自己编写的
delay.h
库文件,没有经过测试,但是并不能够保证这是一个与MCU主频无关的延时库.
将delay_ms();
修改为
HAL_Delay();
就可以实现延时的转换,其中下面的延时函数是由HAL库提供的延时函数,单位为ms
IO配置函数
在中景园的实现当中,使用了自行配置引脚的配置方法,但是在使用了CubeIDE之后,我们可以很方便的使用CubeMX进行配置,这种图形化的配置方式显然比全代码的控制方式简单的多了.
需要做的是屏蔽所有的IO配置函数语句,之后使用CubeMX进行相应的配置.CubeIDE的配置方式
将所有的
.h
文件放到Inc目录下,将.c
文件放到Src目录下.之后使用#include "OLED.h"
同时屏蔽所有的
#include "sys.h"
同时在
OLED.h
当中引用#include "main.h"
至此OLED移植完成,可以进行使用.