IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32系列(HAL库)——F103C8T6使用SPI方式点亮OLED -> 正文阅读

[嵌入式]STM32系列(HAL库)——F103C8T6使用SPI方式点亮OLED

目录

1.软件准备

2.硬件准备

3.CubeMX配置

?(1)芯片选择

?(2)配置RCC、SYS、时钟树

?(3)配置SPI

?(4)配置GPIO

?(5)生成代码工程

?4.代码移植

?(1)复制文件

?(2)在Keil5里添加文件

?(3)修改oled.h文件

?(4)修改oled.c文件

?(5)修改main.c函数

?(6).代码下载

5.最终效果


1.软件准备

(1)编程平台:Keil5

(2)CubeMX

(3)中景园移植代码——点我下载? ? ? 提取码:6666

2.硬件准备

(1)F1的板子,本例使用经典F103C8T6

?(2)0.96'/1.3' OLED屏幕模块(7针)

(3)ST-link?下载器

(4)杜邦线若干

3.CubeMX配置

(1)芯片选择

?(2)配置RCC、SYS、时钟树

配置RCC
配置SYS
配置时钟树

?(3)配置SPI

本例配置SPI2

(4)配置GPIO

如图配置即可

(5)生成代码工程

代码生成管理配置

写好工程名称、选择路径、编译平台

选择生成独立的.C文件

??

右上角 生成工程

直接打开或自己到存放路径用Keil5打开工程

?4.代码移植

(1)复制文件

中景园例程文件

MX生成的工程文件

?(2)在Keil5里添加文件

(3)修改oled.h文件

需要修改的地方
//--------------------------------给各位复制的代码
//--------------------------------给各位复制的代码
//--------------------------------给各位复制的代码
#ifndef __OLED_H
#define __OLED_H 

#include "main.h"
#include "stdlib.h"	
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
//-----------------OLED端口定义---------------- 

//#define OLED_SCL_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_0)//SCL
//#define OLED_SCL_Set() GPIO_SetBits(GPIOA,GPIO_Pin_0)

//#define OLED_SDA_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_1)//SDA
//#define OLED_SDA_Set() GPIO_SetBits(GPIOA,GPIO_Pin_1)

//#define OLED_RES_Clr() GPIO_ResetBits(GPIOA,GPIO_Pin_2)//RES
//#define OLED_RES_Set() GPIO_SetBits(GPIOA,GPIO_Pin_2)

//#define OLED_DC_Clr()  GPIO_ResetBits(GPIOA,GPIO_Pin_3)//DC
//#define OLED_DC_Set()  GPIO_SetBits(GPIOA,GPIO_Pin_3)
// 		     
//#define OLED_CS_Clr()  GPIO_ResetBits(GPIOA,GPIO_Pin_4)//CS
//#define OLED_CS_Set()  GPIO_SetBits(GPIOA,GPIO_Pin_4)
//****************复位*********************

#define OLED_RES_Clr()  HAL_GPIO_WritePin(OLED_RES_GPIO_Port,OLED_RES_Pin, GPIO_PIN_RESET)
#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)
#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)
#define OLED_CS_Set()  HAL_GPIO_WritePin(OLED_CS_GPIO_Port,OLED_CS_Pin, GPIO_PIN_SET)
#define OLED_CMD  0	//写命令
#define OLED_DATA 1	//写数据

?(4)修改oled.c文件

添加:? #include "spi.h"

?

?添加:???HAL_SPI_Transmit(&hspi2,&dat,1, 1000);?

?完成到这里,此时编译不会报错

?(5)修改main.c函数

?添加:? ? ?#include "oled.h"
? ? ? ? ? ? ? #include "bmp.h"

?? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????? ?添加:? ?u8 t=' ';
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? ?????????????????? ?OLED_Init();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? OLED_ColorTurn(0);//0正常显示,1 反色显示
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示

        //--------------------------给各位复制的代码
        //--------------------------给各位复制的代码
        //--------------------------给各位复制的代码
        OLED_ShowPicture(0,0,128,64,BMP1,1);
		OLED_Refresh();
		HAL_Delay(200);
		OLED_Clear();
		OLED_ShowChinese(0,0,0,16,1);//中
		OLED_ShowChinese(18,0,1,16,1);//景
		OLED_ShowChinese(36,0,2,16,1);//园
		OLED_ShowChinese(54,0,3,16,1);//电
		OLED_ShowChinese(72,0,4,16,1);//子
		OLED_ShowChinese(90,0,5,16,1);//技
		OLED_ShowChinese(108,0,6,16,1);//术
		OLED_ShowString(8,16,"ZHONGJINGYUAN",16,1);
		OLED_ShowString(20,32,"2014/05/01",16,1);
		OLED_ShowString(0,48,"ASCII:",16,1);  
		OLED_ShowString(63,48,"CODE:",16,1);
		OLED_ShowChar(48,48,t,16,1);//显示ASCII字符	   
		t++;
		if(t>'~')t=' ';
		OLED_ShowNum(103,48,t,3,16,1);
		OLED_Refresh();
		HAL_Delay(200);
		OLED_Clear();
		OLED_ShowChinese(0,0,0,16,1);  //16*16 中
	      OLED_ShowChinese(16,0,0,24,1); //24*24 中
		OLED_ShowChinese(24,20,0,32,1);//32*32 中
	     OLED_ShowChinese(64,0,0,64,1); //64*64 中
		OLED_Refresh();
	     HAL_Delay(200);
  	    OLED_Clear();
		OLED_ShowString(0,0,"ABC",8,1);//6*8 “ABC”
		OLED_ShowString(0,8,"ABC",12,1);//6*12 “ABC”
	      OLED_ShowString(0,20,"ABC",16,1);//8*16 “ABC”
		OLED_ShowString(0,36,"ABC",24,1);//12*24 “ABC”
	      OLED_Refresh();
		HAL_Delay(200);
		OLED_ScrollDisplay(11,4,1);

(6).代码下载

到这一步,如果编译没有错误就可以自行下载程序了。如果有错,就是哪里自己搞错了,回去重新仔细看一下。

接线:? ? ? ? ? ? ? ?? ? (如引脚未按照上述例程配置,则自行通过自己映射的引脚接线即可)

5.最终效果

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 12:59:30  更:2021-12-13 13:00:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:31:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码