OLED
从这一章开始就找了个b站的视频,开始复现江科大标准库的内容了。
配置工程
首先就还是新建一个工程
将PB8,PB9改为GPIO_OUTPUT模式
且将输出模式改为开漏输出
其余的时钟,调试等等配置和之前的就应该是差不多了。
移植代码
我们需要将江科大的oled代码复制到代码库中
修改代码
因为江科大的oled代码是根据标准库编写而成,所以我们需要修改一部分内容
打开oled.c文件
1.
初始化函数
void OLED_I2C_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
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);
OLED_W_SCL(1);
OLED_W_SDA(1);
}
将此串代码删除,替换成
MX_GPIO_Init();
注意!!!!
在文件的最开始要加上
#include "gpio.h"
这样GPIO的初始化才有作用
2.
引脚函数
#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))
将这串代码替换成下面的代码hal库写成的
void OLED_W_SCL(GPIO_PinState x){
HAL_GPIO_WritePin(GPIOB, PB8_Pin,x);
}
void OLED_W_SDA(GPIO_PinState x){
HAL_GPIO_WritePin(GPIOB, PB9_Pin,x);
}
主函数
添加头文件
#include"oled.h"
在int main函数中
OLED_Init();
OLED_ShowChar(1, 1, 'A');
OLED_ShowString(1, 3, "HelloWorld!");
OLED_ShowNum(2, 1, 12345, 5);
OLED_ShowSignedNum(2, 7, -66, 2);
OLED_ShowHexNum(3, 1, 0xAA55, 4);
OLED_ShowBinNum(4, 1, 2, 16);
添加此串代码就有显示效果了
到此我们的oled代码就移植完成了