Отображение изображения из SDRAM с помощью TouchGFX

Я скопировал растровое изображение с SDCard по адресу 0xC0000000 внешней SDRAM. Я хочу отобразить это изображение с помощью функций TouchGFX. Как я прочитал в этот документ, я должен выполнить этот код:

static uint32_t bmpCache = (uint32_t)(0xC0000000); // SDRAM
void touchgfx_init()
{
  HAL& hal = touchgfx_generic_init<STM32F7HAL>(dma, display, tc, 480, 272, (uint16_t*)bmpCache, 232000, 1);
  ...
}

Но когда я добавляю этот код в свой проект (TouchGFXConfiguration.cpp), при компиляции проекта я получаю эту ошибку:

'STM32F7HAL' was not declared in this scope

Я искал STM32F7HAL по всему проекту, но ничего не нашел в результатах поиска. Также мой проект реализован на микроконтроллере STM32F779 и плате STM32F779EVAL.


person slh    schedule 16.10.2020    source источник


Ответы (1)


Вы наткнулись на ошибку в документации к TouchGFX 4.15.0.

Вызов touchgfx_generic_init устарел (это была просто вспомогательная функция). Функция touchgfx_init, которая уже определена для вас, должна сделать явный вызов Bitmap::registerBitmapDatabase(). Если вы используете CubeMX и TouchGFX Generator, этот вызов уже должен был быть там.

Сигнатура функции следующая. Последние три аргумента — это указатель кэша, размер кэша и количество динамических растровых изображений.

/**
 * Registers an array of bitmaps. All Bitmap instances are bound to this database. This
 * function is called automatically from HAL::touchgfx_generic_init().
 *
 * @param      data                   A reference to the BitmapData storage array.
 * @param      n                      The number of bitmaps in the array.
 * @param [in] cachep                 (Optional) Pointer to memory region in which bitmap
 *                                    data can be cached.
 * @param      csize                  (Optional) Size of cache memory region in bytes (0 if
 *                                    unused)
 * @param      numberOfDynamicBitmaps (Optional) Number of dynamic bitmaps to be allowed in
 *                                    the cache.
 */

static void registerBitmapDatabase(const BitmapData* data, const uint16_t n, uint16_t* cachep = 0, uint32_t csize = 0, uint32_t numberOfDynamicBitmaps = 0);
person zrrbite    schedule 02.11.2020