#c #stm32 #touchgfx
#c #stm32 #touchgfx
Вопрос:
Я скопировал растровое изображение с SDCard по адресу 0xC0000000 внешней SDRAM. Я хочу отобразить это изображение с помощью функций TouchGFX. Как я прочитал в этом документе, я должен выполнить этот код:
static uint32_t bmpCache = (uint32_t)(0xC0000000); // SDRAM
void touchgfx_init()
{
HALamp; 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.
Ответ №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);