STM32F4. Урок 8 — Библиотека шрифтов для дисплея ST7783

Данная библиотека используется для вывода текста на LCD-дисплей.
Для ее работы необходима библиотека для работы с дисплеем «STM32_UB_LCD_ST7783» и один или более файлы шрифтов, которые должны быть включены в проект.
В данную библиотеку включено несколько шрифтов. С помощью написанной автором программой «PixelFontGenerator» любые компьютерные шрифты могут быть преобразованы в требуемый формат.
Начиная с версии 1.4 появилась поддержка шрифтов до 32 пикселей в ширину.
Начиная с версии версии 1.5 появилась поддержка пропорциональных шрифтов(шрифты с буквами разной ширины) для генерации таких шрифтов требуется программа версии 1.6 и выше!

Пример шрифтов:

Требования:
 Подключаемые модули CooCox-IDE: отсутствуют.
 Поддерживаемые библиотеки: STM32_UB_LCD_ST7783.

Функции:

 // Шрифты одной ширины void UB_Font_DrawChar(uint16_t x, uint16_t y, uint8_t ascii, UB_Font *font, uint16_t vg, uint16_t bg);           // Нарисовать символ (максимальный размер 16 пикселей) void UB_Font_DrawString(uint16_t x, uint16_t y,char *ptr, UB_Font *font, uint16_t vg, uint16_t bg);              // Нарисовать текст (максимальный размер 16 пикселей) void UB_Font_DrawChar32(uint16_t x, uint16_t y, uint8_t ascii, UB_Font32 *font, uint16_t vg, uint16_t bg);       // Нарисовать символ (максимальный размер 32 пикселя) void UB_Font_DrawString32(uint16_t x, uint16_t y,char *ptr, UB_Font32 *font, uint16_t vg, uint16_t bg);          // Нарисовать текст (максимальный размер 32 пикселя) // Пропорциональные шрифты uint16_t UB_Font_DrawPChar(uint16_t x, uint16_t y, uint8_t ascii, UB_pFont *font, uint16_t vg, uint16_t bg);     // Нарисовать символ (максимальный размер 16 пикселей) void UB_Font_DrawPString(uint16_t x, uint16_t y,char *ptr, UB_pFont *font, uint16_t vg, uint16_t bg);            // Нарисовать текст (максимальный размер 16 пикселей) uint16_t UB_Font_DrawPChar32(uint16_t x, uint16_t y, uint8_t ascii, UB_pFont32 *font, uint16_t vg, uint16_t bg); // Нарисовать символ (максимальный размер 32 пикселя) void UB_Font_DrawPString32(uint16_t x, uint16_t y,char *ptr, UB_pFont32 *font, uint16_t vg, uint16_t bg);        // Нарисовать текст (максимальный размер 32 пикселя)

Пример использования:

 //-------------------------------------------------------------- // File     : main.c // Datum    : 24.07.2014 // Version  : 1.2 // Autor    : UB // EMail    : mc-4u(@)t-online.de // Web      : www.mikrocontroller-4u.de // CPU      : STM32F4 // IDE      : CooCox CoIDE 1.7.0 // Module   : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo der Font-Library // Hinweis  : Diese zwei Files muessen auf 8MHz stehen //              "cmsis_boot/stm32f4xx.h" //              "cmsis_boot/system_stm32f4xx.c" //--------------------------------------------------------------  #include "main.h" #include "stm32_ub_lcd_st7783.h" #include "stm32_ub_font.h"  int main(void) {   SystemInit(); // Инициализация настроек кварца    UB_LCD_Init(); // Инициализация LCD    // Цвет экрана - синий   UB_LCD_FillScreen(RGB_COL_BLUE);    // Черный текст на белом фоне, рисование различными шрифтами   UB_Font_DrawString(10,10,"Arial-7x10",&Arial_7x10,RGB_COL_BLACK,RGB_COL_WHITE);   UB_Font_DrawString(10,30,"Arial-8x13",&Arial_8x13,RGB_COL_BLACK,RGB_COL_WHITE);   UB_Font_DrawString(10,50,"Arial-10x15",&Arial_10x15,RGB_COL_BLACK,RGB_COL_WHITE);   UB_Font_DrawString(10,70,"Arial-11x18",&Arial_11x18,RGB_COL_BLACK,RGB_COL_WHITE);   UB_Font_DrawString(10,100,"Arial-13x19",&Arial_13x19,RGB_COL_BLACK,RGB_COL_WHITE);   UB_Font_DrawString(10,130,"Arial-14x22",&Arial_14x22,RGB_COL_BLACK,RGB_COL_WHITE);   UB_Font_DrawString(10,160,"Arial-16x25",&Arial_16x25,RGB_COL_BLACK,RGB_COL_WHITE);   // 32 битный шрифт   UB_Font_DrawString32(10,190,"Arial-18x27",&Arial_18x27,RGB_COL_BLACK,RGB_COL_WHITE);   // пропорциональный шрифт   UB_Font_DrawPString(10,220,"Times 15 (proportional)",&pTimes_15,RGB_COL_BLACK,RGB_COL_WHITE);   // 32 битный пропорциональный шрифт   UB_Font_DrawPString32(10,240,"Times 18 (proportional)",&pTimes_18,RGB_COL_BLACK,RGB_COL_WHITE);     while(1)   {    } } 

В приложении проект CooCox и отдельная библиотека для использования в других проектах, а также программа для конвертирования шрифтов. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.