oled使用 f4软件iic 数字 汉字 小图片 HAL库

基于江科大的oled标准库进行移植 到Hal库上

本人参考了许多大佬的源码 进行更改
由于F4和F1主频不一样 由于F4主频太高 在进行软件iic时需要延时一下 才可驱动oled 本人在网上找了一个开源的us延时函数 已经添加进入

文件分享
通过百度网盘分享的文件:delay,oled等2个文件
链接:https://pan.baidu.com/s/17W0AlXyCT9Zx64YfZzSLMg
提取码:30jg

1.移植全过程

先使用cubeMX创建一个HAL库的f4工程
f4zgt6 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成后生成工程
在cubemx生成的工程文件目录下面 在这里插入图片描述
Drivers 中新建一个文件夹 oled 和delay
在这里插入图片描述
把文件全部复制粘贴到对应的文件夹进去
在这里插入图片描述

在这里插入图片描述
打开keil
在这里插入图片描述

在这里插入图片描述
小方框新建目录 添加两个对应的文件
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
添加头文件的路径
将oled和delay的头文件路径添加进去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
每个文件需要包含的文件如图所示
myiic中

//IIC软初始化
void iic_init(void)
{
   
    //GPIO结构体
    GPIO_InitTypeDef GPIO_InitType;

    //使能GPIOB
    __HAL_RCC_GPIOB_CLK_ENABLE();

    //配置GPIO(PB6对应SCL,配置成推挽输出)
    GPIO_InitType.Pin = GPIO_PIN_4;
    GPIO_InitType.Mode = GPIO_MODE_OUTPUT_PP;            /* 推挽输出 */
    GPIO_InitType.Pull = GPIO_PULLUP;    
    GPIO_InitType.Speed = GPIO_SPEED_FREQ_HIGH;          /* 高速 */
    HAL_GPIO_Init(GPIOB, &GPIO_InitType);    /* SCL */

    //配置GPIO(PB7对应SDA,配置成开漏输出)
    GPIO_InitType.Pin = GPIO_PIN_5;
    GPIO_InitType.Mode = GPIO_MODE_OUTPUT_OD;            /* 开漏输出 */
    GPIO_InitType.Pull = GPIO_PULLUP;    
    GPIO_InitType.Speed = GPIO_SPEED_FREQ_HIGH;          /* 高速 */
    HAL_GPIO_Init(GPIOB, &GPIO_InitType);    /* SDA */

}
这里的iic引脚是PB4和PB5 如果需要修改可以进行引脚修改 改时钟 改引脚 

delay.h中

#ifndef __DELAY_H
#define __DELAY_H

#include "main.h"
#define CPU_FREQUENCY_MHZ    168	// STM32时钟主频
void delay_us1(__IO uint32_t delay);

#endif
对应着自己系列的主频进行修改 

主函数

#include "main.h"
#include "gpio.h"
#include "oled.h"记得添加这个头文件

int main(void)
{
   
  /* USER CODE BEGIN 1 */

  /* 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();
  /* USER CODE BEGIN 2 */
	OLED_Init(); 初始化
	OLED_ShowChar(0,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值