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

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

源码工程存档

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

原因

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

1 获选OLED源码

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

image-20241201203812116

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

image-20241201205724659 image-20241201203913063

3.下载源码

image-20241201210108687

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

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

image-20241201204129879

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

image-20241201204218693

2 创建hal库工程

1.打开 STM32CubeMX

image-20241201205724659

2.选择第一项

image-20241201205811811

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

image-20241201210108687

4.点击生成项目

image-20241201210214454

5.我们首先配置时钟

image-20241201210341040

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

image-20241114102234184

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

image-20241114102311561

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

image-20241114102349127

9.顺着路,选择通道

image-20241114102523186

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

image-20241114102607488

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

image-20241114102716839

image-20241114102755266

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

image-20241201210724012

13.配置项目细节

image-20241201211218483

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

image-20241201211547888

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

image-20241201215804541

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

image-20241201220322962

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

image-20241201211807900

3.配置keil工程

1.打开keil工程

image-20241201220820804

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

image-20241201221058704

4.添加OLED工程代码

1.添加OLED项目组

image-20241201221634816

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

image-20241201223753998

3.增加OLED文件夹路径

image-20241201224154497

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

1.注释标准库

image-20241201224408963

2.增加hal库, gpio头文件

#include "gpio.h"
image-20241201224456627

3.配置SCL

void OLED_W_SCL(GPIO_PinState X)
{
    HAL_GPIO_WritePin(GPIOB, PB8_Pin, X);
}  
image-20241201224935978

4.配置SDA

void OLED_W_SDA(GPIO_PinState Y)
{
    HAL_GPIO_WritePin(GPIOB, PB9_Pin, Y);
}   
image-20241201225006399

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

image-20241201225126398

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

image-20241201225318401

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

先替换 (0) -> (GPIO_PIN_RESET)

再替换 (1) -> (GPIO_PIN_SET)

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

image-20241201225638509 image-20241201225800488

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

1.包含头文件

#include "OLED.h"
image-20241201230002297

2.调用OLED初始化代码

image-20241201230747405

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

    OLED_ShowString(0, 0, "Hello, wangtao", OLED_8X16);
    OLED_Update();

image-20241201230807188

4.编译烧录还有警告

image-20241201230415645

5.优化写入参数

OLED_W_SDA((!!(Byte & (0x80 >> i)))? GPIO_PIN_SET : GPIO_PIN_RESET);
image-20241201230531750

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

image-20241201230949371

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/927097.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NLTK工具包

NLTK工具包 NLTK工具包安装 非常实用的文本处理工具,主要用于英文数据,历史悠久~ 安装命令: pip install nltk import nltk # nltk.download() # nltk.download(punkt) # nltk.download(stopwords) # nltk.download(maxent_ne_chunker) nl…

HarmonyOS:使用Emitter进行线程间通信

Emitter主要提供线程间发送和处理事件的能力,包括对持续订阅事件或单次订阅事件的处理、取消订阅事件、发送事件到事件队列等。 一、Emitter的开发步骤如下: 订阅事件 import { emitter } from kit.BasicServicesKit; import { promptAction } from kit.…

Unity之一键创建自定义Package包

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity之一键创建自定义Package包 TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取! …

【html网页页面007】html+css制作旅游主题内蒙古网页制作含注册表单(4页面附效果及源码)

旅游家乡主题网页制作 🥤1、写在前面🍧2、涉及知识🌳3、网页效果🌈4、网页源码4.1 html4.2 CSS4.3 源码获取 🐋5、作者寄语 🥤1、写在前面 家乡网站主题内蒙古的网页 一共4个页面 网页使用htmlcss制作页面…

Ardupilot开源无人机之Geek SDK讨论

Ardupilot开源无人机之Geek SDK讨论 1. 源由2. 假设3. 思考3.1 结构构型3.2 有限资源3.3 软硬件构架 4.Ardupilot构架 - 2024kaga Update5. 讨论5.1 话题1:工作模式5.2 话题2:关键要点5.3 话题3:产品设计 6. Geek SDK - OpenFire6.1 开源技术…

JavaWeb——Maven高级

11.1. 分模块设计与开发 将项目按照功能拆分成若干个子模块,方便项目的管理维护、扩展,也方便模块之间的互相调用,资源共享。 11.2. 继承与聚合 11.2.1. 继承 父工程的的打包方式必须为pom 实现步骤 11.2.2. 版本锁定 dependencyManagemen…

Python中的实用工具JSON解析

对于Python不熟悉的同学,建议从本专栏第一篇开始观看 https://blog.csdn.net/qq_20330595/category_12844705.html 先上效果图 代码 import threading import tkinter as tk import json from tkinter import scrolledtext import tkinter.filedialog as filedialo…

医学临床机器学习中算法公平性与偏差控制简析

摘要 随着医疗领域中数据的不断积累和计算能力的提升,临床机器学习技术发展迅速,但算法不公平性和偏差问题凸显。本文深入探讨了临床机器学习算法公平性的重要性、概念与定义、在临床应用中的影响、偏差来源、降低偏差方法及提升公平性策略。通过对不同…

【数据结构】二叉搜索树(二叉排序树)

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 一、什么是二叉搜索树 二、二叉搜索树的实现 节点 属性和接口的声明 插入 查找 删除 拷贝构造 析构 中序遍历 三、二叉搜索树的…

如何启用本机GPU硬件加速猿大师播放器网页同时播放多路RTSP H.265 1080P高清摄像头RTSP视频流?

目前市面上主流播放RTSP视频流的方式是用服务器转码方案,这种方案的好处是兼容性更强,可以用于不同的平台,比如:Windows、Linux或者手机端,但是缺点也很明显:延迟高、播放高清或者同时播放多路视频视频容易…

乘积求导法则、除法求导法则和链式求导法则

乘积求导法则、除法求导法则和链式求导法则 1. Constant multiples of functions (函数的常数倍)2. Sums and differences of functions (函数和与函数差)3. Products of functions via the product rule (通过乘积法则求积函数的导数)4. Quotients of functions via the quoti…

2个GitHub上最近比较火的Java开源项目

1. SpringBlade 微服务架构 标题 SpringBlade 微服务架构 摘要 SpringBlade 是一个由商业级项目升级优化而来的微服务架构,采用Spring Boot 3.2、Spring Cloud 2023等核心技术构建,遵循阿里巴巴编码规范,提供基于React和Vue的两个前端框架&am…

Ubuntu 安装 MariaDB

安装 MariaDB具体步骤 1、更新软件包索引: sudo apt update2、安装 MariaDB 服务器: sudo apt install mariadb-server3、启动 MariaDB 服务(如果未自动启动): sudo systemctl start mariadb4、设置 MariaDB 开机启…

一体化数据安全平台uDSP 入选【年度创新安全产品 TOP10】榜单

近日,由 FreeBuf 主办的 FCIS 2024 网络安全创新大会在上海隆重举行。大会现场揭晓了第十届 WitAwards 中国网络安全行业年度评选获奖名单,该评选自 2015 年举办以来一直饱受赞誉,备受关注,评选旨在以最专业的角度和最公正的态度&…

相同的二叉树

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p [1,2,3], q [1,2,3] 输出:true示例 2&…

百度地图JSAPI WebGL v1.0类参考

百度地图JSAPI WebGL v1.0类参考 核心类 Map 此类是地图API的核心类,用来实例化一个地图。请注意WebGL版本的地图API的命名空间是BMapGL。 示例:const map new BMapGL.Map(container); 构造函数描述Map(container: String | HTMLElement, opts: Map…

【k8s】监控metrics-server

metrics-server介绍 Metrics Server是一个集群范围的资源使用情况的数据聚合器。作为一个应用部署在集群中。Metric server从每个节点上KubeletAPI收集指标,通过Kubernetes聚合器注册在Master APIServer中。为集群提供Node、Pods资源利用率指标。 就像Linux 系统一样…

AI 声音:数字音频、语音识别、TTS 简介与使用示例

在现代 AI 技术的推动下,声音处理领域取得了巨大进展。从语音识别(ASR)到文本转语音(TTS),再到个性化声音克隆,这些技术已经深入到我们的日常生活中:语音助手、自动字幕生成、语音导…

ARM CCA机密计算安全模型之硬件强制安全

安全之安全(security)博客目录导读 [要求 R0004] Arm 强烈建议所有 CCA 实现都使用硬件强制的安全(CCA HES)。本文件其余部分假设系统启用了 CCA HES。 CCA HES 是一个可信子系统的租户——一个 CCA HES 主机(Host),见下图所示。它将以下监控安全域服务从应用处理元件(P…

matlab显示sin二维图

1,新建脚本 2、保存脚本 3、脚本命令:clc 清除 脚本命令的信息 clrear all 清除全部 4工作区内容:变量啥的 x0:0.001:2*pi%% 开始 精度 中值 ysin(x) y1cos(x) figure%%产生一个屏幕 plot(x,y)%%打印坐标 title(ysin(x))%%标题 xlabel(…