/* USER CODE BEGIN Header */ /** ****************************************************************************** * File Name : TouchGFXHAL.cpp ****************************************************************************** * This file is generated by TouchGFX Generator 4.19.1. ****************************************************************************** * @attention * * Copyright (c) 2022 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. * ****************************************************************************** */ /* USER CODE END Header */ #include /* USER CODE BEGIN TouchGFXHAL.cpp */ #include "stm32f7xx.h" #include #include #include "FreeRTOS.h" #include "task.h" using namespace touchgfx; CortexMMCUInstrumentation instrumentation; namespace { LOCATION_PRAGMA_NOLOAD("TouchGFX_Framebuffer") uint32_t animationBuffer[(480 * 272 * 2 + 3) / 4] LOCATION_ATTRIBUTE_NOLOAD("TouchGFX_Framebuffer"); } void TouchGFXHAL::initialize() { // Calling parent implementation of initialize(). // // To overwrite the generated implementation, omit call to parent function // and implemented needed functionality here. // Please note, HAL::initialize() must be called to initialize the framework. TouchGFXGeneratedHAL::initialize(); setAnimationStorage((void*)animationBuffer); //enable the animation storage to allow slide animations lockDMAToFrontPorch(false); instrumentation.init(); setMCUInstrumentation(&instrumentation); enableMCULoadCalculation(true); } /** * Gets the frame buffer address used by the TFT controller. * * @return The address of the frame buffer currently being displayed on the TFT. */ uint16_t* TouchGFXHAL::getTFTFrameBuffer() const { // Calling parent implementation of getTFTFrameBuffer(). // // To overwrite the generated implementation, omit call to parent function // and implemented needed functionality here. return TouchGFXGeneratedHAL::getTFTFrameBuffer(); } /** * Sets the frame buffer address used by the TFT controller. * * @param [in] address New frame buffer address. */ void TouchGFXHAL::setTFTFrameBuffer(uint16_t* address) { // Calling parent implementation of setTFTFrameBuffer(uint16_t* address). // // To overwrite the generated implementation, omit call to parent function // and implemented needed functionality here. TouchGFXGeneratedHAL::setTFTFrameBuffer(address); } /** * This function is called whenever the framework has performed a partial draw. * * @param rect The area of the screen that has been drawn, expressed in absolute coordinates. * * @see flushFrameBuffer(). */ void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect) { // Calling parent implementation of flushFrameBuffer(const touchgfx::Rect& rect). // // To overwrite the generated implementation, omit call to parent function // and implemented needed functionality here. // Please note, HAL::flushFrameBuffer(const touchgfx::Rect& rect) must // be called to notify the touchgfx framework that flush has been performed. TouchGFXGeneratedHAL::flushFrameBuffer(rect); // If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then we need // to flush the Dcache to make sure framebuffer is correct in RAM. That's done // using SCB_CleanInvalidateDCache(). SCB_CleanInvalidateDCache(); } bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes) { return TouchGFXGeneratedHAL::blockCopy(dest, src, numBytes); } /** * Configures the interrupts relevant for TouchGFX. This primarily entails setting * the interrupt priorities for the DMA and LCD interrupts. */ void TouchGFXHAL::configureInterrupts() { // Calling parent implementation of configureInterrupts(). // // To overwrite the generated implementation, omit call to parent function // and implemented needed functionality here. TouchGFXGeneratedHAL::configureInterrupts(); } /** * Used for enabling interrupts set in configureInterrupts() */ void TouchGFXHAL::enableInterrupts() { // Calling parent implementation of enableInterrupts(). // // To overwrite the generated implementation, omit call to parent function // and implemented needed functionality here. TouchGFXGeneratedHAL::enableInterrupts(); } /** * Used for disabling interrupts set in configureInterrupts() */ void TouchGFXHAL::disableInterrupts() { // Calling parent implementation of disableInterrupts(). // // To overwrite the generated implementation, omit call to parent function // and implemented needed functionality here. TouchGFXGeneratedHAL::disableInterrupts(); } /** * Configure the LCD controller to fire interrupts at VSYNC. Called automatically * once TouchGFX initialization has completed. */ void TouchGFXHAL::enableLCDControllerInterrupt() { // Calling parent implementation of enableLCDControllerInterrupt(). // // To overwrite the generated implementation, omit call to parent function // and implemented needed functionality here. TouchGFXGeneratedHAL::enableLCDControllerInterrupt(); } extern "C" { portBASE_TYPE IdleTaskHook(void* p) { if ((int)p) //idle task sched out { touchgfx::HAL::getInstance()->setMCUActive(true); } else //idle task sched in { touchgfx::HAL::getInstance()->setMCUActive(false); } return pdTRUE; } } /* USER CODE END TouchGFXHAL.cpp */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/