江协科技最新OLED保姆级移植hal库

江协科技最新OLED移植到hal库保姆级步骤

源码工程存档

工程和源码下载(密码 1i8y)

原因

江协科技的开源OLED封装的非常完美, 可以满足我们日常的大部分开发, 如果可以用在hal库 ,将是如虎添翼, 为我们开发调试又增加一个新的瑞士军刀, 所以我们接下来手把手的去官网移植源码, 直到OLED屏幕上输出"hello world"

1 获选OLED源码

1.我们去edge搜索 江协科技

2.点击进去, 然后找到OLED资源

3.下载源码

4.解压源码, 找到最新版本的源码

5.选择编码格式, 我这里使用的是keil5一般是GB2312, 大家根据自己编码格式,自行选择

6.我使用的是IIC, 是4针脚的OLED,大家根据自己需求选择

2 创建hal库工程

1.打开 STM32CubeMX

2.选择第一项

3.选中自己的芯片型号, STM32F103C8T6

4.点击生成项目

5.我们首先配置时钟

6.这样我们进入了时钟配置的界面, 我们优先找到HSE

7.我们是采用外部晶振的方式, 所以我们选择这里, 点击第二个

8.选择完通道后, 我们选择这里, 选择 9 , 为什么选择九 , 因为后面我们八九,七十二, 七十二可以配置72M晶振, 也可以配置 32晶振

9.顺着路,选择通道

10.我们就可以看到配置成功了72Mhz,

11.对标红的地方进行分频

12.设置系统调试方式, 串行线

13.配置项目细节

14.配置代码选项, ② 可以包含必须的库,增加编译速度 ③必须生成.c, .h文件,因为我们需要编写代码

15.接下来我们配置 OLED的 SCL和 SDA引脚

16.我们配置 PB8和 PB9, 推挽输出模式, 无上拉和下拉, 然后我们搞一个标号, 方便后面我们配置端口电平

17.回来记得添加项目名称, 然后生成代码

3.配置keil工程

1.打开keil工程

2.配置stLink烧录设置, 然后记得点ok

4.添加OLED工程代码

1.添加OLED项目组

2.进入OLED文件夹, 然后把源码复制过来, 然后全选添加

3.增加OLED文件夹路径

5.修改OLED端口代码兼容HAL库

1.注释标准库

2.增加hal库, gpio头文件

c 复制代码
#include "gpio.h"

3.配置SCL

c 复制代码
void OLED_W_SCL(GPIO_PinState X)
{
    HAL_GPIO_WritePin(GPIOB, PB8_Pin, X);
}  

4.配置SDA

c 复制代码
void OLED_W_SDA(GPIO_PinState Y)
{
    HAL_GPIO_WritePin(GPIOB, PB9_Pin, Y);
}   

5.同时配置OLED初始化函数,因为hal库已经帮我们配置完了

6.编译运行一下, 有警告是因为我们scl和sda写入函数写入的是1和0, hal库帮我们配置了枚举类型的

7.我们在OLED.c里面, 按下ctrl+F

先替换 (0) -> (GPIO_PIN_RESET)

再替换 (1) -> (GPIO_PIN_SET)

小细节,就是每次替换都是鼠标在最开头, 方便往后查找

6.main.c调用OLED函数,输出hello world

1.包含头文件

c 复制代码
#include "OLED.h"

2.调用OLED初始化代码

3.调用OLED功能函数, 然后输出hello world

c 复制代码
    OLED_ShowString(0, 0, "Hello, wangtao", OLED_8X16);
    OLED_Update();

4.编译烧录还有警告

5.优化写入参数

c 复制代码
OLED_W_SDA((!!(Byte & (0x80 >> i)))? GPIO_PIN_SET : GPIO_PIN_RESET);

6.编译运行, 烧录,运行出来, 大功告成!

相关推荐
huhy~1 小时前
基于CentOS7.9搭建MySQL高可用集群【MGR单主】
数据库·mysql
℡終嚸♂6801 小时前
sql注入知识点(正则回溯绕过waf,CTF ez—RCE题目解析)
数据库·sql·oracle
了一梨3 小时前
SQLite3学习笔记4:打开和关闭数据库 + 创建表(C API)
数据库·学习·sqlite
延凡科技6 小时前
无人机低空智能巡飞巡检平台:全域感知与智能决策的低空作业中枢
大数据·人工智能·科技·安全·无人机·能源
北京耐用通信8 小时前
工业自动化中耐达讯自动化Profibus光纤链路模块连接RFID读写器的应用
人工智能·科技·物联网·自动化·信息与通信
Hgfdsaqwr8 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
charlotte102410249 小时前
数据库概述
数据库
清平乐的技术专栏10 小时前
HBase集群连接方式
大数据·数据库·hbase
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大11 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
哈__11 小时前
多模融合 一体替代:金仓数据库 KingbaseES 重构企业级统一数据基座
数据库·重构