2025-02-24 02:11 AM - edited 2025-02-24 02:13 AM
Hello,
I have a STM32F777 with ST7789 Display controller over SPI.
To write the Framebuffer i have the following code:
void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)
{
// Get Framebuffer Address
uint8_t* frameBufferAddress = (uint8_t*)HAL::lockFrameBuffer();
// Calc start address
uint8_t* fbPtr = advanceFrameBufferToRect(frameBufferAddress, rect
// Set window
DisplaySetWindow(rect.x, rect.y, rect.width, rect.height);
// Start DMA Transfer
DisplaySendDataDMA(fbPtr, rect.width * rect.height * 2);
// Wait for DMA Transfer end
if (osSemaphoreWait(DisplayTransferSemHandle, osWaitForever) == pdTRUE)
{
HAL::unlockFrameBuffer();
HAL::flushFrameBuffer(rect);
}
}
I can't build the code because the function advanceFrameBufferToRect() is defined as inline but without implementation in the header. The implementation in the source file is not accesible with the inline statement.
How can I fix this error? Is the code above correct?
Thanks for your reply!