59 lines
1.1 KiB
C
59 lines
1.1 KiB
C
#include <stdlib.h>
|
|
#include "oled.h"
|
|
#include "ssd1306.h"
|
|
|
|
HAL_StatusTypeDef oled_Config(OLED_HandleTypeDef *hOled, uint8_t DevAddress, uint8_t Width, uint8_t Height, OLED_DisplayTypeDef OledType)
|
|
{
|
|
if (hOled == NULL || Width == 0 || Height == 0 || OledType == UNKNOWN)
|
|
{
|
|
return HAL_ERROR;
|
|
}
|
|
|
|
hOled->DevAddress = DevAddress;
|
|
hOled->Width = Width;
|
|
hOled->Height = Height;
|
|
hOled->OledType = OledType;
|
|
hOled->Buffer = (uint8_t *)malloc(Width * ((Height + 7) / 8));
|
|
|
|
if (hOled->Buffer == NULL)
|
|
{
|
|
return HAL_ERROR;
|
|
}
|
|
|
|
return HAL_OK;
|
|
}
|
|
|
|
void oled_init(OLED_HandleTypeDef *hOled, I2C_HandleTypeDef *hi2c)
|
|
{
|
|
if (hOled == NULL || hi2c == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (hOled->Buffer == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
hOled->hi2c = hi2c;
|
|
|
|
switch (hOled->OledType)
|
|
{
|
|
case SSD1306:
|
|
SSD1306_Init(hOled);
|
|
break;
|
|
case SH1106:
|
|
SH1106_Init(hOled);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
|
|
OLED_HandleTypeDef display;
|
|
oled_Config(&display, 0x3C, 128, 64, SH1106);
|
|
} |