0.96寸OLED代码移植(HAL库)

MCU:STM32F4

模块:0.96单色OLED

通信方式:IIC

1.下载官方代码
2.将一下文件复制到自己的工程中

3.替换oled.h中代码

1.

替换成

#include "main.h"

2.

 

 替换内容

#define OLED_SCL_Clr() HAL_GPIO_WritePin(SCL,SCL_PIN,GPIO_PIN_RESET)//SCL
#define OLED_SCL_Set() HAL_GPIO_WritePin(SCL,SCL_PIN,GPIO_PIN_SET)

#define OLED_SDA_Clr() HAL_GPIO_WritePin(SDA,SDA_PIN,GPIO_PIN_RESET)//DIN
#define OLED_SDA_Set() HAL_GPIO_WritePin(SDA,SDA_PIN,GPIO_PIN_SET)
4.在oled.h最添加代码 

 

#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
//对应SCL的引脚
#define SCL 	GPIOC
#define SCL_PIN	GPIO_PIN_0  
//对应SDA的引脚
#define SDA 	GPIOC
#define SDA_PIN	GPIO_PIN_1
//使能时钟宏
#define	SCL_Clock_Enable	__HAL_RCC_GPIOC_CLK_ENABLE
#define	SDA_Clock_Enable	__HAL_RCC_GPIOC_CLK_ENABLE
5.在oled.c中修改一下代码

    GPIO_InitTypeDef gpio_init = {0};
	SCL_Clock_Enable();
	SDA_Clock_Enable();
	gpio_init.Pin = SCL_PIN;
	gpio_init.Mode = GPIO_MODE_OUTPUT_PP;
	gpio_init.Pull = GPIO_NOPULL;
	gpio_init.Speed = GPIO_SPEED_HIGH;
	HAL_GPIO_Init(SCL,&gpio_init);
	
	gpio_init.Pin = SDA_PIN;
	HAL_GPIO_Init(SDA,&gpio_init);
	
	HAL_GPIO_WritePin(SCL,SCL_PIN,GPIO_PIN_SET);
	HAL_GPIO_WritePin(SDA,SDA_PIN,GPIO_PIN_SET);
	delay_ms(200);

 6.代码测试

#include "main.h"
#include "oled.h"

void main(void)
{
    OLED_Init();
	OLED_Clear();
    while(1)
    {
        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();
    }
}

### 移植0.96OLED显示屏的HAL代码 #### 准备工作 为了成功移植0.96OLED显示屏的HAL代码到不同的平台或微控制器单元(MCU),前期准备工作至关重要。这包括获取必要的驱动代码以及了解目标MCU的具体特性。 对于基于STM32系列MCU的情况,可以从LCDWiKi网站下载适用于特定型号屏幕(如0.96inch OLED Module SKU:MC096GX)的IIC驱动代码[^1]。这些资源提供了基础框架,有助于简化后续的工作流程。 #### 使用STM32CubeMX配置项目 利用STM32CubeMX工具来初始化新工程项目并设置所需的外设参数是一个高效的选择。通过此工具可以快速生成初始代码结构,并确保所选MCU的各项功能得到适当配置。特别是当涉及到硬件IIC接口时,这种方法能够显著减少手动编码的需求,提高开发效率[^4]。 #### 修改和适配现有代码 一旦拥有了初步构建好的环境,则需针对具体应用场景调整已有的源码片段。如果原版代码是按照软件方式实现IIC协议的话,在迁移到其他支持硬件IIC特性的平台上时可能需要做出相应改动;反之亦然。此外还需注意不同版本之间API差异可能导致兼容性问题的发生[^2]。 #### 测试与优化 完成上述步骤之后便进入了测试阶段。此时应该编写简单的应用程序用于验证基本显示功能是否正常运作。随着项目的推进还可以进一步探索性能调优的可能性,比如尝试改变缓冲区大小或是调整刷新率等措施以获得更佳视觉效果的同时保持较低功耗水平。 ```c // 示例:初始化OLED设备函数模板 void OLED_Init(void){ // 初始化硬件IIC或其他通信接口 HAL_I2C_MspInit(&hi2c1); // 发送命令序列启动显示器 uint8_t init_cmd[] = { /* 填入具体的初始化指令 */ }; HAL_I2C_Master_Transmit(&hi2c1, OLED_ADDRESS << 1, init_cmd, sizeof(init_cmd), HAL_MAX_DELAY); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值