【国民技术N32WB031_STB开发板评测】OLED驱动
[复制链接]
- 【新提醒】N32WB03x系列蓝牙芯片 产品简介
- 【新提醒】N32WB031 API函数使用说明
- 【新提醒】【国民技术N32WB031_STB开发板评测】资源的下载
- 【国民技术N32WB031_STB开发板评测】创建MDK模版
- 【国民技术N32WB031_STB开发板评测】GPIO之按键与LED灯
- 【新提醒】【国民技术N32WB031_STB开发板评测】串口+LOG分级打印
本次介绍如何驱动OLED显示屏
1、在实现串口的基础之上,添加oled到bsp文件夹中,在工程中新建分组OLED
2、添加oled的驱动字库、驱动文件到工程里:
3、修改oled.h头文件,这里主要是定义SCL、SDA的端口,根据原理图,这里选用PB8为SDA、PB9为SCL,国为这次使用的是软件I2c,为以后硬件I2C做兼容。
4、修改OLEDIO的端口与pin,并用宏定义操作IO
//-----------------OLED端口定义----------------
// GND 电源地
// VCC 3.3v电源
// D0 PB9(SCL)
// D1 PB8(SDA)
#define OLED_SCL_PORT GPIOB
#define OLED_SDA_PORT GPIOB
#define OLED_SCL_PIN GPIO_PIN_9
#define OLED_SDA_PIN GPIO_PIN_8
#define OLED_SCL_Clr() OLED_SCL_PORT->PBC = OLED_SCL_PIN //SCL GPIO_SetBits GPIOx->PBC = Pin;
#define OLED_SCL_Set() OLED_SCL_PORT->PBSC = OLED_SCL_PIN //GPIO_SetBits GPIOx->PBSC = Pin;
#define OLED_SDA_Clr() OLED_SDA_PORT->PBC = OLED_SDA_PIN//SDA
#define OLED_SDA_Set() OLED_SDA_PORT->PBSC = OLED_SDA_PIN
5、定义IO驱动初始化,函数在oled.c中:
static void OLED_gpio_init(void)
{
GPIO_InitType GPIO_InitStructure;
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB, ENABLE);
/* Configure the GPIO pin */
GPIO_InitStruct(&GPIO_InitStructure);
GPIO_InitStructure.Pin = OLED_SCL_PIN | OLED_SDA_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitPeripheral(OLED_SCL_PORT, &GPIO_InitStructure);
}
6、在main.c函数中添加示例代码如下:
OLED_Init(); //初始化OLED
OLED_ColorTurn(0);//0正常显示,1 反色显示
OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
OLED_Clear();
Delay_ms(800);
OLED_ShowString(8, 6, "Hello EEWORLD!", 16, 1);
OLED_ShowString(22, 26, "N32WB03", 24, 1);
OLED_ShowNum(12, 52, 2023, 4, 12, 1);
OLED_ShowChinese(40,52,9,12,1);//12*12 年
OLED_ShowNum(54, 52, 4, 1, 12, 1);
OLED_ShowChinese(64,52,10,12,1);//12*12 月
OLED_ShowNum(80, 52, 29, 2, 12, 1);
OLED_ShowChinese(94,52,2,12,1);//12*12 日
OLED_Refresh();
7、运行效果,显示hello介面:
【总结】移植OLED,选用IO,初始化IO,定义SCL、SDA的上下拉。
|