1.对于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))
这里我们使用的是GPIO_Pin_8和GPIOB, GPIO_Pin_9,如果你要使用的是GPIO_Pin_11和GPIO_Pin_12,你就要更改成如下:
/*引脚配置*/
#define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_11, (BitAction)(x))
#define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_12, (BitAction)(x))
2.同时我们也要修改一下OLED的初始化
/*引脚初始化*/
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);
}
即是将8,9口改成11和12口
3.如何初始化多个端口
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);
4.在主函数中如何写代码使OLED显示屏上显示出来
对于显示字符和字符串,使用的OLED_ShowChar();和OLED_ShowString();它们不需要写他们占用的几个字符长度,例如;
OLED_ShowChar(1,1,'A'); #表示在显示屏1行1列的地方显示A这个字符
OLED_ShowString(2,1,"Hello"); #表示在显示屏2行1列的地方显示Hello这个字符串
而对于显示数字(包括十进制,二进制,十六进制),它们都需要写出它们所占用的字符串长度,例如;
OLED_ShowNum(3,1,66,2); #若多给长度,则其会在前面不0,若短了,则会切断数字