1. 找一个可以使用SPI接口的OLED驱动程序,一般买OLED会提供,或者自己网上找,这里用的是中景园的例程。
  2. 由于我使用的开发板是STM32F401ccu6,所以我先移植到我的开发板上,主要改的
  3. 打开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相关推荐

  1. (HAL库学习8)STM32CubeMX 驱动0.96寸IIC oled(取字模,取图模)

    这一篇讲解用STM32CubeMX来使用0.96寸的IIC oled(128*64,VCC,GND,SCL,SDA四脚) 这篇文章我重新写了,如果你是第二次读到这篇文章,对不起,之前卧病额米有讲清楚, ...

  2. 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 设置坐 ...

  3. STM8驱动0.96寸OLED(12864液晶屏)

    由于中景园电子给出的例程不够全面,因此特地花时间重新整理了一下代码,并加上了其他的功能.本文记录了使用模拟四线 SPI 协议驱动 OLED 的代码. 文章目录 1 oled.h 2 oled.c 2. ...

  4. 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液晶屏 ...

  5. 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液 ...

  6. STC15W408AS单片机IIC驱动0.96寸OLED显示

    STC15W408AS单片机IIC驱动0.96寸OLED显示 不同页的滚动效果() 全页的滚动效果 STC15W408AS最新系统板 注意图片上的0欧姆电阻贴错了位置,应该是与GND相连的,图片上是P ...

  7. 个人项目 免费开源 基于STM32F103的oled示波器,频谱fft adc电压采集 spi接口0.96寸oled

    @基于stm32的adc检测波形 0.96oled显示(spi/iic)移植gui库(开源). 使用标准库开发,未使用dsp官方库. adc采集到电压并且在oled上显示. 支持0-3.3v电压采集显 ...

  8. 一文彻底了解SSD1306驱动0.96寸OLED

    微信公众号[物联网思考] 整理东西的时候,翻出了一个OLED,驱动起来玩一玩.先上一张图,显示了字符串.汉字,当然也是我们的公众号,欢迎关注. 在淘宝上找了一些资料,但是要想彻底理解如何驱动,还是要看 ...

  9. 用esp8266驱动0.96寸OLED屏幕 太空人动画

    昨天闲来没事玩了一下OLED屏幕 之前只是做过显示图片 还没弄过动画的 (其实差不多–) 用esp8266驱动0.96寸LED屏幕 太空人动画 入门esp8266 看这篇文章 参考https://bl ...

最新文章

  1. java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)
  2. 边缘计算大热 AI芯片站上风口
  3. Microsoft SQL server 2000 安装挂起 mssql 2000 挂起无法安装的问题
  4. 利用WinRAR命令行压缩文件或文件夹2007-11-14 15:07压缩文件夹
  5. ThreadPoolExecutor里面4种拒绝策略--CallerRunsPolicy
  6. 技术圈盛会!腾讯云+社区开发者大会免费报名!
  7. 116_Power Pivot 先进先出原则库龄库存计算相关
  8. 电脑亮度多少对眼睛好_电脑显示器亮度多少合适呢??
  9. laravel无法运行php,Laravel:php artisan服务无法启动
  10. Step by Step 使用HTML5开发一个星际大战游戏(1)
  11. 模板题——数位DP、状态压缩、记忆化搜索
  12. 数据结构乐智教学百度云_数据结构 百度网盘分享
  13. 淘宝有什么方法可以一键下载淘宝评论免费的
  14. 原生js实现点击“上一张”、“下一张”按钮切换图片
  15. 【安全】网络安全态势感知
  16. Pytorch实战——知识点记录(一)
  17. 12代酷睿不再“挤牙膏”,能为英特尔vPro远程办公带来什么?
  18. android 图片大小判断,android中如何使用一张图片适配不同尺寸的APP引导页
  19. python比赛积分类算法题_python常用算法题
  20. 使用Flutter实现仿微信录音的插件

热门文章

  1. c语言逻辑运算的规则,C语言中逻辑运算符的规则是什么
  2. 怎么给PPT加密、选用隐大师U盘
  3. upf学习之获取supply_net的状态
  4. SpringCloud Bus 动态刷新遇见的500错误
  5. python文本内容归档辅助系统
  6. Scrapy中的crawlspider爬虫
  7. 这个月干啥去了?——H5+移动应用实战开发
  8. 解决:显存充足 但却出现Internal: out of memory
  9. HbuilderX没有管理员权限,无法安装插件
  10. 门窗传感器能与哪些设备联动