Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hi Team,Issue summary: when button is clicked then other button callback function getting trigger on TouchGFX simulation and same on hardware.Hardware details: STM32F429 Disc1 boardTouchGFX version: 4.24.0UI snip: When I click within area marked in square sky color box which is button area then kitchen callback function is triggered which is fine; but which also covers the 30% around area of Lobby. So when I click on Lobby button which is part of Kitchen button(around 30%) then kitchen callback function is triggered. So question is how to resolve this isseu.TouchGFX UI screenThanks MR
Setup Details:Board: STM32H750B-DK Discovery KitSTM32CubeIDE: Version 2.0.0 (Build 26820_20251114_1348 UTC)STM32Cube FW_H7: v1.12.1STM32CubeMX: v6.16.0TouchGFX Designer: v4.26.0 (MVP pattern)External Memory: 1GB QSPI Flash (MT25TL01G) + 8MB SDRAMProject Configuration:Created TouchGFX project in Designer, saved and generated codeOpened .ioc file in STM32CubeMX v6.16.0Configured:QSPI in memory-mapped mode with 30-bit addressing (1GB flash)SDRAM via FMCMPU configured with QSPI region execution enabled (0x90000000, 256MB)Vector table relocated to 0x90000000Linker script modified for external flash executionThe Problem:Debugger fails with protocol error when attempting to debug:Error in final launch sequence: Failed to execute MI command: monitor reset halt Protocol error with Rcmd Failed to execute MI command: monitor mww 0xE000ED08 0x90000000 Protocol error with Rcmd Failed to execute MI command: monitor reg pc 0x90000004 Protocol error with RcmdWhat Works::white_heavy_check_mark: Code pr
Dear Gfx Team, 1. Could you please consider adding project setting to automatically delete ./touchgfx folder when Designer exits or project closed (Ctrl+Q) ? The folder's size is nearing 300Mb. I have tried many Designer Examples and they consume a lot of disk space because of ./touchgfx folder. This would mirror auto copy of the "./touchgfx" folder into project if not present. Something like this: 2. Idealy, option to set to auto delete "./simulator/msvs/.vs" folder as well would great as it is often even bigger than ./touchgfx. Thank you.
I’m a beginner with TouchGFX, and I’m wondering whether it’s possible to make touch input behave the same way it does on mobile smartphones. Specifically, before a drag event is detected, the finger must move a certain number of pixels.What I’d like is this: when a press event is first detected, you check whether the user has moved their finger at least 10 pixels, and only then do you start moving the screen. However, once that threshold is reached, the screen should move starting from 1 pixel. When the user releases their finger, a release event occurs and everything is reset, so that after the next press event, the finger must again move 10 pixels before a drag event can occur.Is it possible to implement this behavior? I tried using setDragThreshold, but then the entire screen scrolls by the number of pixels specified as the threshold. Is it possible to change setDragThreshold dynamically in the view?
Board: STM32H750B-DK (DK32H750B$AT1)IDE: STM32CubeIDE 1.14.1CubeMX: 6.11.1TouchGFX: 4.23.1Firmware: STM32Cube FW_H7 V1.12.1Problem Description:I created a new TouchGFX project for the STM32H750B-DK board. The project builds successfully (0 errors, 1 warning), but I cannot debug it. When starting a debug session, I get the error: "Cannot access memory at address 0x90000000".The project is configured to use external QSPI flash (0x90000000) for code execution (XIP) since the code size (424KB) exceeds the H750's internal flash (128KB).What Works:Project builds successfullySimple non-TouchGFX blinky projects debug successfullyWhat Fails:Debug session fails with memory access errors at 0x90000000Attempts to set SP/PC from external flash vector table failAs found STMicroelectronics ST-LINK GDB server. Version 7.12.0Copyright (c) 2025, STMicroelectronics. All rights reserved. Starting server with the following options:Persistent Mode : DisabledLogging Level : 1Listen Port Number : 61
Split from this thread for a new question. Thank you. I've changed the programmer, and it now programmed without errors. I however get a Hard Fault, sitting in HardFault_Handler(), as soon as I run. It happens before the code gets to main(). It also does not look like it is matching symbols to files correctly, because it is not showing code. I did check that Load Symbols is checked in debugger settings. Can this HardFault be related, or should I start new post to help with that?
I generated my project from the TouchGFX envinroment.Itried to modify the cube file and i got the following issues1. linking error ld.exe: cannot find -l:libnemagfx-float-abi-hard.a: No such file or directory2. linking error ld.exe: cannot find -l:libtouchgfxnema-float-abi-hard.a: No such file or directory3. many basic files are missing like main.h so i cant access any gpio by the name that was given to it in my user files
I have made a dynamic menu made with a listLayout with a number of buttons inside a scrollableContainer. When a user push the buttons the listLayout is updated with new content.I have not been able to have the scrollbar reflect the size of the listLayout after the listLayout is updated. The scrollbar will only update when the user starts scrolling through the new content. Until then it reflect the precious size of the listLayout.I have tried:scrollableContainer1.doScroll(0, 180);Thinking it would have the same effect as the user scrolling the scrollableContainer, but it does not work.Is there a way to force update of the scrollbar?
I am a software developer working for a company that plans to use TouchGFX for its display solutions.We are currently integrating TouchGFX into an existing IAR-based project and want to use our own display and DMA drivers instead of the CubeMX-generated setup. While TouchGFX initializes and runs partially, we are facing a critical issue where several expected callbacks are never triggered.Problem descriptionThe following methods are never called during runtime:TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)OSWrappers::takeFrameBufferSemaphore()OSWrappers::giveFrameBufferSemaphore()Our TouchGFX thread performs all required initializations, passes our custom LCD driver to TouchGFXHAL, and then calls touchgfx_taskEntry().VSync-related callbacks are working:OSWrappers::signalVSync() is executedbackPorchExited() is executedlockDMAToPorch is 0 (as expected)Despite this, no framebuffer flushing or framebuffer semaphore handling occurs.HAL initialization detailsOur TouchGFXGenera
Hello everyone.I am doing a TOUCHGFX project with STM32H750IBT6, W25Q512, IS42S32400F-6TL. I took my first screen printout and the image came out shifted. I am using my screen vertically by rotating it 90 degrees in Touchgfx Designer. I still haven't solved the problem. I would be very happy if you could help me.
The screen has 4 containers and many widgets. I am interested in keeping the names during the export to save lot of repertitive work
I'm currently using an STM32H7S78-DK, and I'm correctly able to run TouchGFX with FreeRTOS and everything. I also an error handler function that, in case of a crash of TouchGFX it writes directly to the framebuffer.Now, I would like to do a similar thing but on the boot code, so basically before the classic jump if (BOOT_OK != BOOT_Application())I have an external RAM mapped at the address 0x90000000 which works correctly in TouchGFX with .icf likedefine symbol __region_EXTRAM_start__ = 0x90000000; define symbol __region_EXTRAM_end__ = 0x91FFFFFF; define region EXTRAM_region = mem:[from __region_EXTRAM_start__ to __region_EXTRAM_end__]; place in EXTRAM_region { first section TouchGFX_Framebuffer , section Video_RGB_Buffer , section Nemagfx_Stencil_Buffer };I wanted to use the same section of memory in the Boot, accessing the framebuffer directly, so I edited the .icf of the boot withdefine symbol __region_EXTRAM_start__ = 0x90000000; define symbol __region_EXTRAM_end_
Hardware ConfigurationMCU: STM32F469NIH6Custom Board: Pin-to-pin replica of STM32F469I-DISCODisplay: HF-35040-X365-A0 (3.5-inch, 800x480 RGB parallel interface)SDRAM: IS42S32400J/F (16MB, 0xC0000000)Interface: LTDC (NOT DSI - DSI explicitly disabled)Framework: TouchGFX 4.26.0Working ReferenceThe same display works perfectly on STM32F429 with the same LTDC configuration, so the display hardware is confirmed functional.Problem DescriptionThe display continuously shows RGBW color cycling (white → red → green → blue, repeating every ~1 second) instead of rendering the TouchGFX UI.Critical observation: Changing LTDC configuration parameters (e.g., framebuffer width from 800 to 400 pixels) has NO EFFECT on the display output - the same RGBW pattern continues unchanged.Current LTDC Configuration // Clock ConfigurationSystem Clock: 180 MHz (changed from overdrive to voltage scale 3)PLLSAI: N=192, R=5LTDC Clock: ~25 MHz // LTDC Timing (for 800x480 @
Touchgfx 4.26.0 (and was same on 4.24.0) keyboard examples are the same resolution although there are (3) resolution of display resolution selectionsThey all display the keyboard size as approx. measured 43 mm (1.7 inches) X 33mm (1.3 inches) on a 5-inch display 800 X 480 resolution. To be usable we believe the keyboard needs to be about 1.5 to 2 times larger than present. (about 25% LARGER) See details in pdf attachment
I’m working with TouchGFX in STM32CubeIDE. After creating a new project and copying over the IOC file and pin configuration from the verified design used for my custom PCB, I’m now running into errors. Some components fail to build, and I’m getting “file not found” errors for certain header files—even though the files clearly exist and I can open them in the IDE.Do you have any suggestions for fixing include paths or linker settings to resolve this?
I'm very new to this so be kind. I've been working on a display for CAN data. I have the display designed and it works and while building code for the CAN and using the GPIO5 LED for testing, when I Run it, I get a garbaged display. I have a working sample project that was provided to me as a guide, when I run it, it works fine, but when I go back to my project, part of the other project is still being displayed. It's as if it's not fully erasing and programming everything. I did some research and found suggestions to select Full Chip Erase, but there isn't one.
Right now, if there are any widgets on a page the Designer automatically creates a canvas buffer for it. The following code is created in the ViewBase .hpp/.cpp files static const uint32_t CANVAS_BUFFER_SIZE = 12000; uint8_t canvasBuffer[CANVAS_BUFFER_SIZE]; touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE); This gets set up for each view that has widgets. I want it to STOP DOING THAT. I want to allocate my own buffer to it, in a piece of ram that I choose. Please, please, please give me the option to tell the Designer that I will handle it myself.I can allocate my own buffer in the TouchGFXHAL::initialize() function, but it's just going to get overridden as soon as a View gets, as that constructor will set up it's own function. This is especially important, because I have give it a buffer at the start of time anyways, otherwise it crashes. When the view page is changed to, it calls StatusContainer, which calls an I
Hello,We have procured a STM32U5G9J-DK1 discovery kit. We are in need of the default pre-loaded program that comes with the kit as this will help us to understand how to use Touch display and its other features. We see that this pre-loaded program is not available in the repository downloaded for STM32U5G. Therefore, request you to kindly share it here.With regard,Sudarshan Chaudhary
Hello ST Community Team,I am facing a TouchGFX project generation issue related to path mismatch while working on an STM32H745 dual-core device – unable to locate .ioc / .cproject ?I am sharing my setup and issue details below. Environment Details:STM32CubeIDE: 1.17.0TouchGFX: 4.25.0X-CUBE-TOUCHGFX: 4.25.0Controller: STM32H745XIH3Core Used: CM7Toolchain: STM32CubeIDEOS: Windows Issue Description:I have written application code for Core-M7, and when I try to generate images / assets using TouchGFX, the generation fails during Post Generate Target.Error observed:Post Generatetouchgfx update_project --project-file=simulator/msvs/Application.vcxprojDonePost Generate Targettouchgfx update_projectUnable to locate D:/WORKSPACE_APPLICATION/LPOCIP_090126_1430_PM/LPOCIP_SCRATH_jumper_QSPI_APIS_SWETHA_UPDATED_QSPI_SDRAM_CAN_PWM/.cprojectFailedFailedHowever, the actual .ioc file exists at:D:/WORKSPACE_APPLICATION/LPOCIP_090126_1430_PM/LPOCIP_SCRATH_jumper_QSPI_APIS_SWETHA_UPDATED_Q
I'm experiencing a HardFault that occurs always on cold boot (after the board sits unpowered for ~1 hour). It also occurs sometimes when flashing and immediately running from the debugger.I'm using FreeRTOS, and I've noticed that commenting a task, flashing the new firmware, no hard faults. De-commenting the same code, flashing again, problem solved (with debugger on).I exit the debugger and try to power cycle the device, all works.After the board sits unpowered for a certain time and I try to turn it on, Hard Fault again.The issue is always the same CFSR.IMPRECISERR (imprecise data access error)I managed to have a call stack and the assembly codeCFSR.IMPRECISERR (imprecise data access error) PC = 0x70017DD2 Stack trace: HardFault_Handler <Exception frame> touchgfx::LCDGPU2D_AXI::blitCopyCompressedRGB565_16BPP() + 0x69d0x7001'7dca: LDRGT R2, [SP, #0x1c] ; Load scratchBuffer address 0x7001'7dcc: STRHGT.W R10, [R2, R5, LSL #1] ; Store halfword 0x7001'7dd0: ADDGT R5, R5, #
Hi,I have 3 radio-buttons in a custom container which is present on several screens.I would like the radio-buttons to keep their states between when switching screens.I have the radio-buttons states reported to the model every time a button is pressed and when the screen changes, the new active view fetches the radio-button state.However, I do not see a function to update a radio-button state without triggering the button action.Is there such a function?
I'm currently using Touchgfx after updating from version 4.25 to 4.26.When I build and run the code generated by Touchgfx 4.26, Display color doesn't match the design in Touchgfx 4.26.But When I do the same thing through Touchgfx 4.25, Display color matched very well.
Hi,I'm trying to drive a 5 in LCD with STM32H757. However the MCU's internal RAM is too small for the frame buffer for this 800x480 LCD. So I have a PSRAM APS6404L on the QUAD SPI bus. I have succeeded in setting the memory mapped mode for reading the PSRAM, but I don't know how to integrate the custom write routine for the touchGFX. The MX configurator seems not allow me to set up a partial frame buffer in the internal RAM. I have tried to use custom LCD type to forcefully set the partial frame buffer, but I'm unable to get the touchGFX task to run.Does the custom LCD type require lot of work? I feel so stuck right now. Please help. Thank you.
Dear ST Community Team,We are currently working on a project using the STM32N657X0H3Q1 microcontroller and developing the GUI application with TouchGFX.While configuring and generating the TouchGFX project, we are encountering RAM and ROM overflow errors during compilation/linking. The internal SRAM and Flash available on the STM32N657 device are not sufficient to accommodate the TouchGFX framework, graphics assets, and application code.As an alternative solution, our hardware design includes the following external memories:External RAM: S80KS5123GABHB020External Flash (Octal SPI NOR): S28HS512TGABHM0100We would like guidance from the community on the following points:How to properly configure external RAM in STM32CubeMX / TouchGFX so that:FramebuffersTouchGFX heapGraphics buffers are placed in external RAM instead of internal SRAM.How to configure external Flash to store:TouchGFX assets (images, fonts, videos)Read-only GUI resource to reduce internal Flash (ROM) usage.Any re
Hello all,Trying to set up the custom display on the STM32H750B-DK dev board.Interestingly, the display works via LTDC functions in Keil just fine... but I do not have much luck with the TouchGFX. For example, started with setting up the TBS in the Designer to avoid the complications of memory and other configurations (thanks to the ST support) and continuing in the CubeIDE where I have opened the .*.ioc file to update the MX configuration for the LTDC and TouchGFX... it compiles ok, I can opend the TouchGFX designer and "upload" the picture, for example, I can see the picture to be in the memory. See attached build memory analyzer.However, when I run the application or debug, I cannot see the preview of the picture.One of the ideas, as it is explained in the TouchGFX manual, namely Board bring up, would be to preview a simple framebuffer, not sure how easily that would be?I am not sure how to tackle this problem, so any comments, ideas, or hints are more than welcome! Best.
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.