**STM32_OLED** #### Введение На основе STM32 — 12864 OLED-драйвер: * Перенос удобен, конфигурация интерфейса нижнего уровня удобна (можно выбрать SPI и IIC). * Конфигурация размера шрифта и т. д. использует табличный режим управления, добавление/изменение/удаление удобно и быстро, поддерживается смешанный ввод и вывод китайских и английских символов (китайское кодирование GB2312). * Поддерживает различные методы выборки, можно выбрать разные методы выборки в соответствии с шириной шрифта для уменьшения занимаемого пространства точечной матрицы. * Поддержка обрезки набора символов ASCII, в зависимости от конкретных потребностей можно установить сохранение только части данных точечной матрицы набора символов ASCII для уменьшения занимаемой памяти. * OLED использует двойной буферный механизм, который отделяет операции на экране OLED от функций отображения, сокращает время операций на экране и синхронизирует экран по времени (обновляется с частотой, приемлемой для человеческого глаза). * Подобно функции printf, реализуется форматированный вывод, поддерживается функция оконного printf (поддерживается операция возврата каретки и перевода строки), реализуется прокручиваемый вывод (размер окна и шрифт настраиваются). * Код хорошо прокомментирован, стиль унифицирован, что облегчает чтение и использование. #### Архитектура программного обеспечения ##### Файлы * oled.c и oled.h — реализация конкретных функций, предоставление внешних API-интерфейсов функций. * oledio.c и oledio.h — функции аппаратного интерфейса, реализация функций связи SPI или IIC; требуется модификация при переносе. * oledconf.c и oledconf.h — конфигурация шрифта, графическая конфигурация и другие функции конфигурации. * fontxxx.h и bmp.h — используются для хранения данных точечных матриц шрифтов и графических BMP. #### Использование 1. При переносе необходимо изменить соответствующие функции аппаратного интерфейса в oledio.c; выберите тип интерфейса через макроопределение "_DRIVE_INTERFACE_TYPE". 2. Перед использованием вызовите функцию инициализации OLED_Init, также можно использовать OLED_Clear для немедленной очистки экрана. 3. Вызывайте функцию OLED_ShowTask периодически, чтобы синхронизировать содержимое экрана (то есть данные буфера синхронизируются с отображением на OLED). 4. Можно определить макрос "_USE_OLED_PRINTF", чтобы включить функцию форматированного вывода OLED, аналогичную функции printf. 5. В исходном файле можно настроить требуемый шрифт, необходимо синхронно изменить определение перечисления `efontSize` в заголовочном файле. ```c /** Шрифтовая таблица конфигурации */ static fontConfig_t sg_tFontCfgTable[FONT_MAX_NUM] = { {FONT_MODE_COLUMN_BY_ROW, 6, 12, 12, ' ', '~', ASCII_6X12_DATA, FONT_12X12_IDX, FONT_12X12_DATA}, {FONT_MODE_COLUMN_BY_ROW, 8, 16, 16, ' ', '~', ASCII_8X16_DATA, FONT_16X16_IDX, FONT_16X16_DATA}, {FONT_MODE_COLUMN_BY_ROW, 12, 24, 24, ' ', '~', ASCII_12X24_DATA, FONT_24X24_IDX, FONT_24X24_DATA}, {FONT_MODE_COLUMN_BY_ROW, 16, 32, 32, ' ', '~', ASCII_16X32_DATA, FONT_32X32_IDX, FONT_32X32_DATA} }; ``` 6. В исходном файле можно настроить необходимую графику, необходимо синхронно изменять определение перечисления `efontSize` в заголовочном файле. ```c /** Графическая таблица конфигурации */ static graphicConfig_t sg_tGraphicTable[OLED_GRAPHIC_NUM] = { {FONT_MODE_PROGRESSIVE, 86, 64, "bootLog", LOG_BMP} }; ``` #### Об авторе 1. Блог CSDN [大橙子疯](https://blog.csdn.net/qq_24130227?spm=1010.2135.3001.5343). 2. Электронная почта const_zpc@163.com. 3. Чтобы узнать больше, подпишитесь на официальный аккаунт WeChat.