Данная библиотека используется для отображения изображений, хранящихся на SD-карте.
Сейчас поддерживаются 3 формата изображений:
- 16-битные (RGB565) - Графические файлы (* .img)
- растровые файлы (BMP, 24bpp, без сжатия) (* .bmp)
- JPG файлы (* .jpg)
Для формата №1 автор написал программу "ImageGenerator" которая превращает любые файлы BMP в формат RGB565.
Скорость:
- Image изображение с разрешением 240 × 320 пикселя (16 бит) прорисовывается примерно 100 мс
- BMP изображение с разрешением 240 × 320 пикселей (24pbb) прорисовывается примерно 165 мс
- JPG изображение с разрешением 240 × 320 пикселей прорисовывается примерно 580 мс
Потребление памяти:
- Image изображение с разрешением 240 × 320 пикселей изображения требует примерно 153 600 байт
- BMP изображение с разрешением 240 × 320 пикселей нужно 230454 байт
- JPG изображение с разрешением 240 × 320 пикселей занимает около 15 323 байт
Для работы также необходимы следующие библиотеки: "STM32_UB_LCD_ST7783" и "STM32_UB_FATFS".
Демонстрация работы:
Требования:
Подключаемые модули CooCox-IDE: отсутствуют.
Поддерживаемые библиотеки: STM32_UB_LCD_ST7783, STM32_UB_FATFS.
Перечисления:
typedef enum { PICTURE_OK =0, PICTURE_MEDIA_ERR, PICTURE_FILE_ERR, PICTURE_SIZE_ERR, PICTURE_ID_ERR, PICTURE_HEAD_ERR, PICTURE_WIDTH_ERR, PICTURE_HEIGHT_ERR, PICTURE_BPP_ERR, PICTURE_COMPR_ERR, }PICTURE_ERR_t;
Функции:
PICTURE_ERR_t UB_Picture_DrawImage(const char* name, uint16_t xpos, uint16_t ypos); // нарисовать Image-файл из SD-карты PICTURE_ERR_t UB_Picture_DrawBmp(const char* name, uint16_t xpos, uint16_t ypos); // нарисовать BMP-файл из SD-карты PICTURE_ERR_t UB_Picture_DrawJpg(const char* name, uint16_t xpos, uint16_t ypos); // нарисовать JPG-файл из SD-карты
Пример использования:
//-------------------------------------------------------------- // File : main.c // Datum : 06.04.2013 // Version : 1.1 // 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 Picture Library // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_picture.h" int main(void) { FATFS_t check_fat; SystemInit(); // инициализация настроек кварца // инициализация LCD UB_LCD_Init(); UB_LCD_FillScreen(RGB_COL_GREEN); // инициализация FATFS-библиотеки UB_Fatfs_Init(); // монтирование SD карты check_fat=UB_Fatfs_Mount(MMC_0); if(check_fat==FATFS_OK) { // загрузить BMP-изображение с SD-карты // и вывести его на дисплей UB_Picture_DrawBmp("emo2.bmp",50,20); // загрузить JPG-изображение с SD-карты // и вывести его на дисплей UB_Picture_DrawJpg("emo2.jpg",20,180); UB_Fatfs_UnMount(MMC_0); } while(1) { } }
В приложении проект CooCox и отдельная библиотека для использования в других проектах, а также программы для конвертирования графических файлов. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.
Прикрепленные файлы:
- Demo_20_FATFS_Picture_rus.rar (623 Кб)
- ImageGenerator_UB_v103.zip (237 Кб)
- ub_stm32f4_fatfs_picture_v103_rus.rar (263 Кб)
Комментарии (9) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
lcdid = P_LCD7783_ReadReg(LCD_ST7783_REG_00);
//if(lcdid==LCD_ST7783_ID) {
// Дисплей найден
ret_wert=SUCCESS;
// Инициализация ЖК-дисплея(портретный режим)
P_LCD7783_InitChip(LCD_ST7783_PORTRAIT);
LCD_DISPLAY_MODE=PORTRAIT;
// Включение подсветки
UB_LCD_Backlight_On();
//}
P.S. Я не автор статьи, а такой же как и вы читатель.