Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I would like to use queues without sacrificing the simulator.I know how to use queues with the extern keyword, but it disables the simulator because TouchGFX doesn't see header and source files. I have edited the Makefile to include the headers, but I am left with two issues.First issue is including reent.h:If I don't include the FreeRTOS.h I get this error:This is what I modified in the Makefile thus far:project_path := $(call qs,$(abspath $(call sq,$(makefile_path)../../..))) ADDITIONAL_SOURCES := ADDITIONAL_INCLUDE_PATHS := $(project_path)/Core/Inc \ $(project_path)/STM32CubeIDE/Application/User \ $(project_path)/Middlewares/Third_Party/FreeRTOS/Source/include \ $(project_path)/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F \ $(project_path)/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 \ ADDITIONAL_LIBRARY_PATHS := ADDITIONAL_LIBRARIES :=Also including the cmsis_os2.c file which contains the definitions for the structures and functions I'm using in the
..
Nucleo-H7A3ZI-Q dev. board with LTDC configured. I do see Vsync and Hsync pulses going to the display but the VSync is not triggering the queue so it hangs. I traced into that call and it looks like it is waiting for an IRQ.
Hi,The MCU we are currently using is STM32L4x. For using the video widget on Hardware, either JPEGIP or LIBJPEG are required. Is there any way to enable them for L4 series ? or can we use any alternate method for using video widget ?Thanks and Regards.
TGFX with multiple languages, In one screen, click a button to play an animated image, a text widget(only one text widget) has English and Spanish content flashed back and forth during running the animation. This problem only happens after switching the language from English to Spanish before running the animation.more details: F7 processor, LCD double frame buffer, and animation buffer are enabled.
I have spent a couple hours going through the STM32H750 data sheet and haven't been able to come to a conclusion. The display in question is an el.640.200.sk panel that is 1bpp monochrome with a dual 4 bit parallel interface and takes PCLK, VSYNC, and HSYNC. I am wanting to use the LTDC pared with DMA2D as the display has a high refresh rate of 240hz.So far I have looked at using CLUT with L8 format and leaving pins floating on the 16 bit RGB outputs but it is a huge waste of memory space and gpio pins. Is there a way to configure the LTDC output to 8 bit parallel with the 3 clock/sync signals?Any help is appreciated.
I desperatly try to configure these applications in order to display 2 buttons on the TFT LCD of my STM32F429I-DISC1 board. Precisely, I'd like to know:If using STMCubeMX is required?How to transfer the TouchGFX layout code into STCubeIDE (I can do an import but then the .ioc file is missing)?I almost succeded by renaming the TouchGFX files before importing them into CubeMX (I replaced the default board name with my project's name). Then I compiled with no errors but once I added two GPIO, the new compilation yields 5 errors (mostly related to TouchGFX HAL).What is wrong with all that??? Is there a workflow of some kind to solve my issue?I appreciate your help. Thank you very much.
I want to drive 1.44 TFT with stm32f303 but flash is overflow. Can you help me? How about optimization touchgfx? In addition i dont use external flash.
Hi Project built with TouchGFX not initializing heap properly:When attempting to allocate a variable to the heap the variable is allocated at 0x00000000 instead of the heap location. This doesn't happen with projects built using cube. Does anyone have any ideas.The screen shots are attached as my browser kept crashing when I tried to embed the images.Project Built with CubeMXProject built with touchGF, but with all TouchGFX code commented out and the MPU initialisation commented out as well:I have asked this question on the support page.The two projects are attached.Best regardsRob
In the cubeMX FMC configuration I don't see SDRAM listed.
Hey!Which function should I use to check if the TouchGFX engine is in "drawing next frame to RAM" state and which one to check if "next frame is ready in RAM"?I got following setup on mikromedia Plus board: STM32F407 -> SSD1963 -> TFT 480x272. TFT connected to SSD1963 with RGB interface and MCU connected to SSD1963 with custom parallel 8080 interface (implemented as simple bit-bang). I was able to set up TouchGFX with "partial frame buffer strategy", everything's working. But the narrow part is the MCU interface, so the slow filling of the display is visible with naked eye when I change image on the whole display.Now, my goal is to implement double buffering, but on SSD1963 side.It has 1215Kb avaliable for frame buffer. My TFT requires 480x272x2 byte = 255 Kb, so it is possible to arrange two framebuffers within SSD1963.So what I'm gonna do is to modify existing project to be able to "swap" those buffers when frames are ready to transfer to display to avoid tearing and slow
Greetings,I am trying to read the color value of a pixel in hex form. The motivation behind this is the function available in simulator shortcuts as it states,F1Enables/disables the display of pointer coordinates as well as RGB color of the pixel at that coordinate (in hexadecimal).Link: https://support.touchgfx.com/4.19/docs/development/ui-development/working-with-touchgfx/simulatorI have tried many ways but got stuck at retrieving the value tft_framebuffer24 present in HALSDL2.cpp. Can anybody guide me on how can we retrieve the pixel color values at specific coordinates of my screen?
I need assistance on a problem that we’ve been facing several weeks so far.I state that I do not use freeRTOS and I have a main function with an infinite while where every cycle calls:- MX_TouchGFX_Process() always called- When the screen must be redrawn a variable is set from the following function: void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)which activates this call sequence:if((BSP_LCD_GetXSize(0, &sizex) != BSP_ERROR_NONE) || (BSP_LCD_GetYSize(0, &sizey) != BSP_ERROR_NONE)){Error_Handler();}if(BSP_LCD_SetDisplayWindow(0, 0, 0, sizex, sizey)!= BSP_ERROR_NONE){Error_Handler();}if(BSP_LCD_FillRGBRect(0, 0, 0, frameBuffer, sizex, sizey) != BSP_ERROR_NONE){Error_Handler();}- every 20 ms (when DMA completes the image transfer to the LCD controller) the following sequence call is executed:HAL::getInstance()->vSync();OSWrappers::signalVSync();OSWrappers::giveFrameBufferSemaphore();OSWrappers::giveFrameBufferSemaphoreFromISR(); This proced
Hi everyone.I have STM32F769 Discovery-Board. I want to use this board control TFT 7inch using EK79007.How can I do it? Because i saw that EK79007 very different OTM8009 on STM32F769.Thanks.
Hello all, I use thousands of widgets in a project, and hundreds widgets in each screen.Each widget occupies a chunk of static ram memory, it result in a large memory used.And the ram widget used cannot release when screen changed.Can I only use SDRAM to expand ram memory?
Hello,I am developing an app with TouchGFX that has a map. I would like to draw the path the user went on the map. I am looking for a way to change some pixels colour manually. I thought of using a manual bitmap image, but it comes in front of the maps and hides it. The nice way would be to be able to set some pixels in the screen to black on the coordinates of the path, but I can’t find how to do that.Do you have a method or an idea of how I could make it work?Thank you by advanceAugustin
On the 21st of March the new version was released.Here's the changelog:Version 4.19.0Release date: March 21st, 2022New TouchGFX Designer Features:New and improved interface for text and typography handling for easier overview and management of large amounts of text.Added features for text and typography management include:Merging of single use and resources to one grid.Language settings for typographies.New widget: Static GraphEasy conversion of texts.Grouping.Rearrange and copy texts in grid.Search.Hide language columns in grid.Bugfixes in TouchGFX Designer:New TouchGFX Core Features:New widget: Graph.New texts.xml format supporting texts in groups and language specific settings for typographies.Added HAL::setAnimationStorage().Added ScrollBase::setOvershootPercentage(), and getOvershootPercentage(), for drag events at end of lists that are not circular. This works for ScrollLists and ScrollWheels.Event::getEventType() is now const.Pressing F5 in the simulator will call Application::
Renaming a screen results in a compilation error.To reproduce:Create a new projectRename Screen1 to MainScreenRun SimulatorConverting images Compiling gui/src/screen1_screen/Screen1View.cpp Compiling generated/images/src/slider_vertical_***.cpp Compiling generated/images/src/pageindicator_highlight.cpp Compiling generated/images/src/menu_stage_stretch_left_side.cpp Compiling generated/images/src/slider_vertical_fill.cpp Compiling generated/images/src/slider_vertical_back.cpp Compiling generated/texts/src/LanguageGb.cpp Compiling generated/texts/src/TypedTextDatabase.cpp gui/src/screen1_screen/Screen1View.cpp:1:46: fatal error: gui/screen1_screen/Screen1View.hpp: No such file or directory #include
Hi,I just upgraded my touchgfx from version 16 to version 19 and I can't manage to make the project link because the SoftwareMJPEGDecoder.obj is duplicated. How can I resolve this error ?Also, I wanted to point out that the 'clean project' function can't complete anymore because VS is unable to delete the files related to the video as they're located in a 'read only' folder (generated by touchgfx…). Why was it decided to make this folder read only?Thanks in advance for your help
To reporducenew project> add widget> button with label> text box text "this is a" hit enter key "test", should make a button with two lines of text. Was working on TGFX 4.16.1. Has the method changed?
Display is glitches for a short moment every 20ish seconds if ICache enabled and optimization for debugging on in g++. Where to look for solving this issue?
Hello,I'm having problems in getting the HAL_DCMI_FrameEventCallback called from the HAL layer.I'm using the DCMI in snapshot mode and from what I understood reading the dcmi hal driver code, the frame interrupt for snapshot mode is enabled when the DCMI_IT_FRAME is disabled. This looks weird but this is what the next code (line 1305 to 1334 of stm32l4xx_hal_dcmi.c) seems to do. I suppose there is a reason for this./* if End of frame IT is disabled */ if((hdcmi->Instance->IER & DCMI_IT_FRAME) == 0x0U) { /* If End of Frame flag is set */ if(__HAL_DCMI_GET_FLAG(hdcmi, (uint32_t)DCMI_FLAG_FRAMERI) != 0x0UL) { /* Clear the End of Frame flag */ __HAL_DCMI_CLEAR_FLAG(hdcmi, DCMI_FLAG_FRAMERI); /* When snapshot mode, disable Vsync, Error and Overrun interrupts */ if((hdcmi->Instance->CR & DCMI_CR_CM) == DCMI_MODE_SNAPSHOT) { /* Disable the Vsync, Error and Overrun interrupts */ __HAL_DCMI_DISABLE_IT(hdcmi, DCMI_IT_LINE | DCMI_IT_VSYNC | DCMI_IT_ERR
Why does the screeen glitch for a moment every 20 second when G++ optimization for Debug turned on. If optimization is turned off then it works fine.
ST Community highlights – April to June 2026
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.