【STM32+HAL】七针OLED(SSD1306)配置(SPI版)

一、前言

关于四针OLED的I2C版配置方式,请转至【STM32+HAL】OLED显示初始化配置

二、实现功能:

用SPI通信方式初始化OLED显示(相较于I2C速度更快)

三、方法一:硬件SPI通信

1、打开SPI通信(仅传输)

2、另选三个引脚配置为输出模式

3、移植代码

重写 void OLED_WR_Byte(u8 dat,u8 cmd)函数

void OLED_WR_Byte(u8 dat,u8 cmd)
{uint8_t RXDATA = 0;if(cmd)OLED_DC_Set();elseOLED_DC_Clr();OLED_CS_Clr();HAL_SPI_TransmitReceive(&hspi1,&dat,&RXDATA,1,1000);OLED_CS_Set();OLED_DC_Set();
}
3、改写oled.h中的定义
#define OLED_SCLK_Clr() HAL_GPIO_WritePin(OLED_SCK_GPIO_Port,OLED_SCK_Pin,GPIO_PIN_RESET)//SCL
#define OLED_SCLK_Set() HAL_GPIO_WritePin(OLED_SCK_GPIO_Port,OLED_SCK_Pin,GPIO_PIN_SET)#define OLED_SDIN_Clr() HAL_GPIO_WritePin(OLED_SDA_GPIO_Port,OLED_SDA_Pin,GPIO_PIN_RESET)//DIN
#define OLED_SDIN_Set() HAL_GPIO_WritePin(OLED_SDA_GPIO_Port,OLED_SDA_Pin,GPIO_PIN_SET)#define OLED_RES_Clr() HAL_GPIO_WritePin(OLED_RES_GPIO_Port,OLED_RES_Pin,GPIO_PIN_RESET)//RES
#define OLED_RES_Set() HAL_GPIO_WritePin(OLED_RES_GPIO_Port,OLED_RES_Pin,GPIO_PIN_SET)#define OLED_DC_Clr() HAL_GPIO_WritePin(OLED_DC_GPIO_Port,OLED_DC_Pin,GPIO_PIN_RESET)//DC
#define OLED_DC_Set() HAL_GPIO_WritePin(OLED_DC_GPIO_Port,OLED_DC_Pin,GPIO_PIN_SET)#define OLED_CS_Clr()  HAL_GPIO_WritePin(OLED_CS_GPIO_Port,OLED_CS_Pin,GPIO_PIN_RESET)//CS
#define OLED_CS_Set()  HAL_GPIO_WritePin(OLED_CS_GPIO_Port,OLED_CS_Pin,GPIO_PIN_SET)

4、至此,OLED文件初始化配置完成

商家给的oled文件有些许不足,需要在显示内容的代码之后紧跟一句OLED_Refresh();

要想省略,可在oled.c中对应函数之后复制粘贴OLED_Refresh();

  /* USER CODE BEGIN 2 */OLED_Init();/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){OLED_ShowString(8,16,(unsigned char *)"LoganLos",16);
//		OLED_Refresh();HAL_Delay(500);OLED_Clear();OLED_ShowNum(0,0,55,2,16);
//		OLED_Refresh();HAL_Delay(500);OLED_Clear();/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

四、方法二:软件模拟

1、配置引脚
引脚与方法一相同,但无需开启SPI

2、更改oled.h中的宏定义

同方式一

3、配置完成

若想在主函数中省略OLED_Refresh();,方法同方式一

  /* USER CODE BEGIN 2 */OLED_Init();				/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){OLED_ShowString(8,16,(unsigned char *)"LoganLos",16);OLED_Refresh();
//		HAL_Delay(500);
//		OLED_Clear();/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

五、巨人之肩

手撸SPI接口oled屏幕驱动(stm32)

六、源码提供

【STM32+HAL】七针OLED显示初始化配置(SPI版)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker基础教程 - 1 Docker简介

更好的阅读体验:点这里 ( www.doubibiji.com ) 1 Docker简介 Docker是一个强大的容器化平台,让你能够更轻松地构建、部署和运行应用程序。 下面我们来学习 Docker。 1.1 Docker是什么 1 现在遇到的问题 每次部署一台服务器&…

春招!启动了

大家好,我是洋子。今年的春招很多企业已经开始招聘了,像美团今年继续发力,24届春招以及25届暑期转正实习一共招聘4000人。另外,阿里,京东,顺丰等公司也已经开始春招,可以说招聘的号角已经正式吹…

Python并发编程:协程介绍

一 引子 1 2 3 基于单线程来实现并发,即只用一个主线程(很明显可利用的CPU只有一个)情况下实现并发,先回顾一下并发的本质:切换保存状态 CPU正在运行一个任务,会在两种情况下切走去执行其它的任务&#x…

IOC中Bean的生命周期

生命周期的各个阶段: 可以分为三个阶段:产生-使用-销毁 又可以分四个阶段:四个阶段 实例化 ->属性注入->初始化 ->销毁 实例化后到使用的初始化过程: 属性赋值 ->处理各种Aware接口->实现BeanPostProcessor的b…

【大厂AI课学习笔记NO.66】TensorFlow

TensorFlow 这个框架,实在是太有名了,最近周红衣都在大力的宣传和讲解。 他说的是对的,人工智能,就是大力出奇迹,就是大量的算力,大量的数据,加上模型的加持,实现的智能感觉。 Goog…

《数字图像处理(MATLAB版)》相关算法代码及其分析(1)

目录 1 自适应中值滤波算法 1.1 函数定义 1.2 输入参数检查 1.3 初始化 1.4 自适应中值滤波过程 1.5 处理剩余未处理的像素 1.6 总结 2 计算输入数组的平均值 2.1 函数定义 2.2 注释 2.3 输入验证 2.4 计算平均值 2.5 总结 3 基于高斯模型的贝叶斯分类器 3.1 函…

有趣的CSS - 一串乱码

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是通过 css 来实现一段不停变化的 bug 乱码效果。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面…

异常网络下TCP的可靠服务机制(慢启动、拥塞避免、快重传、快恢复)

目录 TCP超时重传拥塞控制概述慢启动和拥塞避免下面讲解发送端如何判断拥塞发生。 快速重传和快速恢复 本文描述TCP在异常网络下的处理方式 以保证其可靠的数据传输的服务 TCP超时重传 tcp服务能够重传其超时时间内没有收到确认的TCP报文段,tcp模块为每一个报文段都…

加密与安全_探索数字证书

文章目录 Pre概述使用keytool生成证书使用Openssl生成证书 (推荐)证书的吊销小结 Pre PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证 PKI - 04 证书授权颁发机构(CA) & 数字证书 PKI - 数字签名与数字证…

mysql8修改密码

mysql8.0修改密码 windows下忘了MySQL8.0的密码,可以通过以下方式修改。 1、管理员方式打开cmd命令窗口 输入: net stop mysql接着输入: mysqld --console --skip-grant-tables --shared-memory2、管理员方式打开另外一个cmd窗口 输入&…

电脑要用多少V的电源?电脑电源输入电压是市电

台式电源的输出电压是多少? 电脑电源输出一般有三种不同的电压,分别是: 12V、5V、3.3V。 电脑电源负责给电脑配件供电,如CPU、主板、内存条、硬盘、显卡等,是电脑的重要组成部分。 工作电流根据不同的硬件及其使用状…

数据结构c版(2)——二叉树

本章我们来了解一下二叉树这一概念。 目录 1.树概念及结构 1.1树的概念​​​​​​​ 1.2 树的特点: 1.3 树的相关概念 1.4 树的表示​​​​​​​ 1.5 树在实际中的运用(表示文件系统的目录树结构) 2.二叉树概念及结构 2.1概念 …