HAL库使用硬件SPI驱动0.96寸OLED stm32F401
- 找一个可以使用SPI接口的OLED驱动程序,一般买OLED会提供,或者自己网上找,这里用的是中景园的例程。
- 由于我使用的开发板是STM32F401ccu6,所以我先移植到我的开发板上,主要改的
- 打开MXcube
配置时钟
配置DEBUG,我这里使用的是SW,可以选择自己需要的。
只发送主机模式
8位帧数据结构
高位在前
波特率分频值
空闲时,时钟线位高
第二个时钟沿捕获
软件使能信号
再配置其它要用的管脚,我这里使用PB4来做使能引脚
生成代码
更改管脚
更改初始化
更改向oled写入命令,数据函数
记得将所有的u8,u16,u32,改为uint8_t,uint16_t,uint32_t,或者使用typedef,为了方便后期移植,我就直接改
添加头文件,初始化函数
随便写两行
主程序:
int main(void)
{
/* USER CODE BEGIN 1 */
uint8_t t=' ';
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_SPI1_Init();
/* USER CODE BEGIN 2 */
OLED_Init(); //初始化OLED
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
OLED_ShowString(8,0,(uint8_t *)" OLED SPI",16,1);
OLED_ShowString(8,16,(uint8_t *)"Hardware routine",16,1);
OLED_Refresh();
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
oled.h中需要改的宏定义
#ifndef __OLED_H
#define __OLED_H
#include "main.h"
#include "stdlib.h"
//-----------------测试LED端口定义----------------
//#define LED_ON HAL_GPIO_WritePin(GPIOC,GPIO_Pin_12,GPIO_PIN_RESET);
//#define LED_ON HAL_GPIO_WritePin(GPIOC,GPIO_Pin_12,GPIO_PIN_RESET);
//-----------------OLED端口定义----------------
#define OLED_PORT GPIOB
#define OLED_SCL_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_0,GPIO_PIN_RESET);//SCL
#define OLED_SCL_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_0,GPIO_PIN_SET);//SCL
#define OLED_SDA_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_1,GPIO_PIN_RESET);//SDA
#define OLED_SDA_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_1,GPIO_PIN_SET);//SDA
#define OLED_RES_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_2,GPIO_PIN_RESET);//RES
#define OLED_RES_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_2,GPIO_PIN_SET);//RES
#define OLED_DC_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_3,GPIO_PIN_RESET);//DC
#define OLED_DC_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_3,GPIO_PIN_SET);//DC
#define OLED_CS_Clr() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_4,GPIO_PIN_RESET);//CS
#define OLED_CS_Set() HAL_GPIO_WritePin(OLED_PORT,GPIO_PIN_4,GPIO_PIN_SET);//CS
#define OLED_CMD 0 //写命令
#define OLED_DATA 1 //写数据
#endif
链接:https://pan.baidu.com/s/1xumTyAfvlEPKI80C2ffyPA
提取码:1234
附上工程链接,麻烦点赞,关注,谢谢!!!
HAL库使用硬件SPI驱动0.96寸OLED stm32F401相关推荐
- (HAL库学习8)STM32CubeMX 驱动0.96寸IIC oled(取字模,取图模)
这一篇讲解用STM32CubeMX来使用0.96寸的IIC oled(128*64,VCC,GND,SCL,SDA四脚) 这篇文章我重新写了,如果你是第二次读到这篇文章,对不起,之前卧病额米有讲清楚, ...
- STM32配合cubeMX硬件I2C驱动0.96寸OLED
目录 一.简单介绍 1.1 OLED 1.2 I2C协议 二.实战 2.1 工程配置 2.2 测试工程 2.3 波形分析 三.驱动OLED 3.1 初始化代码 3.2 清屏函数 3.3 设置坐 ...
- STM8驱动0.96寸OLED(12864液晶屏)
由于中景园电子给出的例程不够全面,因此特地花时间重新整理了一下代码,并加上了其他的功能.本文记录了使用模拟四线 SPI 协议驱动 OLED 的代码. 文章目录 1 oled.h 2 oled.c 2. ...
- STM32(基于HAL库)驱动0.96寸OLED屏幕(六脚)
STM32驱动0.96寸OLED屏幕(六脚) 1 序言 2 如何利用STM32单片机驱动12864液晶屏 2.1*基本配置* 2.2 *0.96寸OLED端口含义* 2.3 *0.96寸OLED液晶屏 ...
- STM32(基于HAL库)驱动0.96寸OLED屏幕(四脚且中英文皆可显示)
STM32驱动0.96寸OLED屏幕(四脚) 1 注意事项 2 如何利用STM32单片机驱动12864液晶屏 2.1*基本配置* 2.2 *0.96寸OLED端口含义* 2.3 *0.96寸OLED液 ...
- STC15W408AS单片机IIC驱动0.96寸OLED显示
STC15W408AS单片机IIC驱动0.96寸OLED显示 不同页的滚动效果() 全页的滚动效果 STC15W408AS最新系统板 注意图片上的0欧姆电阻贴错了位置,应该是与GND相连的,图片上是P ...
- 个人项目 免费开源 基于STM32F103的oled示波器,频谱fft adc电压采集 spi接口0.96寸oled
@基于stm32的adc检测波形 0.96oled显示(spi/iic)移植gui库(开源). 使用标准库开发,未使用dsp官方库. adc采集到电压并且在oled上显示. 支持0-3.3v电压采集显 ...
- 一文彻底了解SSD1306驱动0.96寸OLED
微信公众号[物联网思考] 整理东西的时候,翻出了一个OLED,驱动起来玩一玩.先上一张图,显示了字符串.汉字,当然也是我们的公众号,欢迎关注. 在淘宝上找了一些资料,但是要想彻底理解如何驱动,还是要看 ...
- 用esp8266驱动0.96寸OLED屏幕 太空人动画
昨天闲来没事玩了一下OLED屏幕 之前只是做过显示图片 还没弄过动画的 (其实差不多–) 用esp8266驱动0.96寸LED屏幕 太空人动画 入门esp8266 看这篇文章 参考https://bl ...
最新文章
- java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)
- 边缘计算大热 AI芯片站上风口
- Microsoft SQL server 2000 安装挂起 mssql 2000 挂起无法安装的问题
- 利用WinRAR命令行压缩文件或文件夹2007-11-14 15:07压缩文件夹
- ThreadPoolExecutor里面4种拒绝策略--CallerRunsPolicy
- 技术圈盛会!腾讯云+社区开发者大会免费报名!
- 116_Power Pivot 先进先出原则库龄库存计算相关
- 电脑亮度多少对眼睛好_电脑显示器亮度多少合适呢??
- laravel无法运行php,Laravel:php artisan服务无法启动
- Step by Step 使用HTML5开发一个星际大战游戏(1)
- 模板题——数位DP、状态压缩、记忆化搜索
- 数据结构乐智教学百度云_数据结构 百度网盘分享
- 淘宝有什么方法可以一键下载淘宝评论免费的
- 原生js实现点击“上一张”、“下一张”按钮切换图片
- 【安全】网络安全态势感知
- Pytorch实战——知识点记录(一)
- 12代酷睿不再“挤牙膏”,能为英特尔vPro远程办公带来什么?
- android 图片大小判断,android中如何使用一张图片适配不同尺寸的APP引导页
- python比赛积分类算法题_python常用算法题
- 使用Flutter实现仿微信录音的插件