/** ****************************************************************************** * File Name : TouchGFXGeneratedHAL.cpp ****************************************************************************** * This file is generated by TouchGFX Generator 4.23.2. Please, do not edit! ****************************************************************************** * @attention * * Copyright (c) 2024 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ #include #include #include #include #include #include "stm32h7xx.h" using namespace touchgfx; namespace { // Use the section "TouchGFX_Framebuffer" in the linker script to specify the placement of the buffer LOCATION_PRAGMA_NOLOAD("TouchGFX_Framebuffer") uint32_t frameBuf[(320 * 480 * 2 + 3) / 4] LOCATION_ATTRIBUTE_NOLOAD("TouchGFX_Framebuffer"); } void TouchGFXGeneratedHAL::initialize() { HAL::initialize(); registerEventListener(*(Application::getInstance())); setFrameBufferStartAddresses((void*)frameBuf, (void*)0, (void*)0); } void TouchGFXGeneratedHAL::configureInterrupts() { } void TouchGFXGeneratedHAL::enableInterrupts() { } void TouchGFXGeneratedHAL::disableInterrupts() { } void TouchGFXGeneratedHAL::enableLCDControllerInterrupt() { } bool TouchGFXGeneratedHAL::beginFrame() { return HAL::beginFrame(); } void TouchGFXGeneratedHAL::endFrame() { HAL::endFrame(); } inline uint8_t* TouchGFXGeneratedHAL::advanceFrameBufferToRect(uint8_t* fbPtr, const touchgfx::Rect& rect) const { // Advance vertically Advance horizontally fbPtr += rect.y * lcd().framebufferStride() + rect.x * 2; return fbPtr; } uint16_t* TouchGFXGeneratedHAL::getTFTFrameBuffer() const { return (uint16_t*)frameBuf; } void TouchGFXGeneratedHAL::setTFTFrameBuffer(uint16_t* adr) { //setTFTFrameBuffer() not used for selected display interface } void TouchGFXGeneratedHAL::flushFrameBuffer(const touchgfx::Rect& rect) { HAL::flushFrameBuffer(rect); } bool TouchGFXGeneratedHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes) { return HAL::blockCopy(dest, src, numBytes); } void TouchGFXGeneratedHAL::InvalidateCache() { // If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then // the DCache must be flushed prior to DMA2D accessing it. That's done // using the function SCB_CleanInvalidateDCache(). Remember to enable "CPU Cache" in the // "System Core" settings for "Cortex M7" in CubeMX in order for this function call to work. if (SCB->CCR & SCB_CCR_DC_Msk) { SCB_CleanInvalidateDCache(); } } void TouchGFXGeneratedHAL::FlushCache() { // If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then // the DCache must be flushed prior to DMA2D accessing it. That's done // using the function SCB_CleanInvalidateDCache(). Remember to enable "CPU Cache" in the // "System Core" settings for "Cortex M7" in CubeMX in order for this function call to work. if (SCB->CCR & SCB_CCR_DC_Msk) { SCB_CleanInvalidateDCache(); } } /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/