- 找一个可以使用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
附上工程链接,麻烦点赞,关注,谢谢!!!