03:(寄存器开发)OLED的简单使用

OLED的简单使用


将江科大的标准库开发OLED的代码进行移植,修改的部分代码如下:

在这里插入图片描述

/*引脚配置*/
//#define OLED_W_SCL(x)		GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x))
//#define OLED_W_SDA(x)		GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))


void OLED_W_SCL(uint16_t num)//SCL连接这PB8引脚
{
    
    if(num == 0)//记住这里只能用0来进行判断
    {
        GPIOB->ODR &= ~GPIO_ODR_ODR8;
    }
    if(num != 0)
    {
        GPIOB->ODR |= GPIO_ODR_ODR8;
    }
}

void OLED_W_SDA(uint16_t num)//SCL连接这PB9引脚
{
    
    if(num == 0)
    {
        GPIOB->ODR &= ~GPIO_ODR_ODR9;
    }
    if(num != 0)
    {
        GPIOB->ODR |= GPIO_ODR_ODR9;
    }
}


/*引脚初始化*/
void OLED_I2C_Init(void)
{
//  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

    /*1.开启时钟 */
	RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;//开启时钟
    
//	GPIO_InitTypeDef GPIO_InitStructure;
// 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
//	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
// 	GPIO_Init(GPIOB, &GPIO_InitStructure);
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
// 	GPIO_Init(GPIOB, &GPIO_InitStructure);
    
    /*2. 配置引脚PB8和PB9:通用开漏输出模式*/
	/*2.1 PB8:MODE8 = 11,CNF8 = 01*/
    GPIOB->CRH |= GPIO_CRH_MODE8;
	GPIOB->CRH |= GPIO_CRH_CNF8_0;
	GPIOB->CRH &= ~GPIO_CRH_CNF8_1;
	/*2.2 PB9:MODE9 = 11,CNF8 = 01*/
    GPIOB->CRH |= GPIO_CRH_MODE9;
	GPIOB->CRH |= GPIO_CRH_CNF9_0;
	GPIOB->CRH &= ~GPIO_CRH_CNF9_1;

	OLED_W_SCL(1);
	OLED_W_SDA(1);
}

综上:只是将软件模拟I2C的引脚由标准库配置模式改为寄存器配置模式,其他的代码不变。
测试代码如下:

#include "stm32f10x.h"                
#include "Delay.h"
#include "OLED.h"


int main(void)
{
	OLED_Init();
    OLED_Clear();
    
    OLED_ShowString(1,1,"nihao");
    OLED_ShowNum(2,1,50,2);
    OLED_ShowChar(3,1,'B');
    
	while(1)
	{
        
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值