Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hello,When I right-click - create a new .c source file in a new STM32CubeIDE TouchGFX project, the file gets created in the STM32CubeIDE/Appli/Application/User/Core directory. However, all the project source files are under Appli/Core/Src and headers in Appli/Core/Inc. Is this normal and ok? Why have the separate source file locations?Thank you
TouchGFX version: 4.26.0Visual Studio version: 18.6.3When TouchGFX generates or updates the “TouchGFX/simulator/msvs/Application.vcxproj” file it creates lines with<ClCompile Include="path/to/some/file.cpp"/>but Visual Studio updates the lines to <ClCompile Include="path/to/some/file.cpp" />. Notice the extra space. This means that in version control sometimes commits will be added without the space and sometimes with the space. This overcomplicates merges and causes merge requests. Please update the XML library or fix the output to be consistent with Visual Studio.
Hello I’m developing long project.Tomorrow I open the project and try to save it without any modification,but appears this window Can someone please help me, thankyou in advance.
TouchGFX version 4.25.0 CubeMX version 6.17.4* STMCubeIDE version 2.0.0*edited versionI created a development environment starting with TouchGFX and used Generate Under Root in CubeMX. This did a great job of setting up the directory structure without links so that it is easier to navigate in the STM32CubeIDE application.Part of this process automagically moves the middleware and driver directories from the STM32CubeIDE directory to the root directory.When the .project file is created by the TouchGFX code generation it handles the movement of all these files and include directories like a champ, except the Properties=>C/C++ Build=>Settings=>MCU/MPU G++ Linker=>Libraries=>Library search path for the libtouchgfx-float-abi-hard.a library.It sets the path to "${workspace_loc:/STMCubeIDE/Middlewares/ST/touchgfx/lib/core/cortex_m7/gcc}" instead of "${workspace_loc:/${ProjName}/Middlewares/ST/touchgfx/lib/core/cortex_m7/gcc}"It's a quick fix to edit it to
Hi,first time TouchGFX user but not new to graphics programming and hoping to get some help understanding a TouchGFX problem I'm having on a Riverdi RVT50HQSNWC01-B I'm thinking of using for an automotive dashboard display.If I don't throttle my display changes, the display buffers don't have the same content. The buffer with the most complete looking content does have a small glitch towards the bottom right hand side of the RPM segmented display, so I'm guessing it's not as simple as TouchGFX didn't get around to doing all updates on both buffers but more like it ran out of space somewhere to manage the updates? I've tried putting invalidate()'s either side of making changes, as suggested in this (https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/double-buffer-one-buffer-is-not-updated/m-p/165271#M9822) thread, but that doesn't help. The only thing that helps is to throttle updates inside the screen handleTickEvent() to every other tick (and not do them the first 3 ticks either
TouchGFX Version: 2.26.0Problem: preview in Designer looks different from generated code.Details: when moving a modal into an existing container, Designer does not draw the dimensions correctly. Steps to reproduce: Add a container that is smaller than the screen size and move to somewhere away from screen edges. Add a modal to the screen. Add a Box to the modal. Move the modal into the container. See the incorrect drawn modal. Switch between screens to force correct drawing.Workaround: in Designer, go to another screen, and then go back to the screen you were editing.See also attached images:
Hi everyone,I’d like to propose an enhancement for a future TouchGFX update.Currently, the clickable area of a ToggleButton is limited strictly to the dimensions of the button’s image. While this works in simple cases, it can be limiting in more practical UI designs.I suggest giving the ToggleButton a resizable clickable area, similar to the way the FlexButton works. Specifically, this would allow the developer to: Expand the clickable area independently via standard width and height properties. Freely position the toggle image within that area (just like an image placed inside a FlexButton). Use case example:Imagine a screen with multiple toggle options, each accompanied by explanatory text or an icon next to the button. With this feature, users could simply tap on the descriptive text or icon to activate the toggle, instead of having to precisely hit the small button image. This would significantly improve the user experience, especially on smaller screens or touch targets.I believ
Is this version do not copy touchgfx_core.a to project folder? ex) Middlewares\ST\touchgfx\lib\core\cortex_m4f\IAR8.xbecause I did generate code in touchGFX so automatelly remove the files in lib/core.and i can't build on IAR because .ipcf file generated from touchGFX desinger need touchgfx_core.a of path above.
I’m a beginner with the STM32 series and STM32N6570-DK.I’m using ‘TouchGFX 4.26.1 Designer’ and ‘STM32CubeIDE 2.1.1’ and ‘STM32CubeMX’.First, I created a simple project for my STM32N6570-DK using TouchGFX. And, it displayed an image on the LCD normally.Next, to use the SD card, I configured the fileX and SDMMC2 settings using CubeMX.After that, when I regenerated the code using CubeMX, the LCD screen is not displaying properly. Is there a guide on how to use an SD card in a project created with TouchGFX?
This is a small feature request to fix an annoying quirk of the TouchGFX Designer.When opening the texts menu in the designer, all of the texts groups are expanded by default. In projects with many texts/groups, its tedious to collapse all of the groups or scroll to the bottom of the expanded groups. I think it would be better if either TGFX stored the state of the groups expansion OR collapsed them all by default.
Hello ST Community,I am using STM32H7B3 + TouchGFX + 7-inch 800×480 TFT with GT911/GT9111 touch controller.In the TouchGFX PC simulator, all buttons and toggle switches work correctly. But after flashing to hardware:TFT display is working properly.Touch is detected.Actual touch point and detected touch point are different.Touch is detected on the same horizontal line, but the vertical coordinate is shifted/wrong.I want to know the correct solution for touch coordinate mapping/calibration. Should this correction be done. Please guide me on the correct method for touch calibration and hardware control/status display in TouchGFX.Thank you.
Currently image source files take up a lot of drive space.My image folder TouchGFX\generated\images\src is 44.5MiB on my drive.TouchGFX projects can take up a lot of drive space as is (https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/gfxdesigner-option-to-auto-delete-touchgfx-folder-upon-exit/m-p/724758#M39655). So these files just add to it.You could use build scripts or cmake to add data from binary files to temporary source files. But this can be quite a hassle to make it platform independent. But that would save a lot of drive space as the binary files take up less space than source files with hex constants. (Example to use OBJCOPY)There are ways to shrink the source files. One way is to use uint64_t hex constants instead of uint8_t hex constants to reduce overhead.Before: LOCATION_PRAGMA("ExtFlashSection") KEEP extern const unsigned char image_test_image[] LOCATION_ATTRIBUTE("ExtFlashSection") = { // a x b RGB565 pixels. 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
TouchGFX 4.26.0Low severity bug. Only visual in Designer. In the generated code the correct alignment is used.Steps to reproduce:create TextArea. Disable “auto-size” Set textID with text element that has right alignment. The shown alignment is still left aligned.When Designer is restarted, the correct alignment is shown again.
Hi,I am using TouchGFX 4.26.1 on a custom STM32N655x0 board. Most widgets (Box, Text, Button, SVG, Slider, etc.) render correctly, but Canvas Widgets such as Line, Circle, Shape, and the graph plot lines are not rendered. The graph background/grid is visible, but the plotted lines are missing.The same TouchGFX project works correctly on the STM32N657-DK, but not on the STM32N655 custom board.Is there any known limitation or additional configuration required for Canvas Widgets/NemaGFX/NeoChrom GPU2D on STM32N655? Are there any differences in Canvas Widget support between STM32N655 and STM32N657?I've attached screenshots of the designed UI and the actual output on the custom board. TouchGFX design Custom board display STM32N6570-DK’s display Thank you.
Hi,I am using an STM32N655X0H3Q interfaced with an NHD-7.0-800480EF-ASXN#-CTP display that uses the FT5426G capacitive touch controller. I have created a TouchGFX screen containing a single button widget. No interactions are currently assigned to the button (I had previously tested it with a screen-change interaction, but the behaviour remained the same, so I removed all interactions and am now testing with only the button widget present on the screen).The touch controller appears to work correctly otherwise. I can continuously poll touch events inside STM32TouchController::sampleTouch() and successfully print the touch coordinates and number of touch points when touching any area of the screen outside the button.However, as soon as I touch the button widget, the application hangs. The button disappears and the display turns into a plain screen. At the same time, the continuous polling inside STM32TouchController::sampleTouch() stops completely, indicating that TouchGFX is no longer ca
Hi, I face the problem with the touchgfx frame rate render has drop periodic after 1000ms that make the animation image (wait circle) has choppiness.My project run on custom STM32U5 has 3MB RAM and 4MB FLASH (I don’t use the external memory). The LTDC configuration at 60Hz(24.5Mhz) for screen 800x480 resolution. The signal when screen not update(full)The signal when screen not update(full)The signal when screen not update(zoom in to see the VSYNC signal)The signal when screen not update(zoom in to see the VSYNC signal) The signal when screen animation the imageThe signal when screen animation the imageThe VSYNC signal is perfect at all.You can run the LogicSystemTimingAnalysis.html in .zip then load the .csv file to see the signal. Thanks,Phat
I have 3 physical buttons: next, enter and previous. After next or previous clicked I have to move the frame which select the flex button on the screen. When I clicked the enter button selected button on the screen should be pressed and released. I mean the selected button should do what I set in TouchGFX Designer. How to simulate the real pressing on touch screen using physical button ? Also I have a container including the keyboard with the flex button. I would like to use the same approach.
I’m using a custom board based 99% on the STM32H7S78-DK (except for the display, which is a 7”).I’m having a serious deadlock issue (the entire microcontroller freezes, and I can’t connect to the debugger).My firmware is composed:The bootloader that just checks if an SD card is attached (if so, it mounts, reads it, and, in case, updates the external flash with the firmware). If no SD card is detected, it loads the application.The bootloader uses I and D caches and sets up the external memory via XSPI (PSRAM and FLASH)The PSRAM is used for the TouchGFX framebuffer; the FLASH for the TouchGFX assets.The .icd defines (among other things)define symbol __ICFEDIT_intvec_start__ = 0x70000000;define region EXTRAM_region = mem:[from 0x90000000 to 0x91FFFFFF];define region ROM_region = mem:[from 0x70000000to 0x701FFFFF];define region EXTROM_region = mem:[from 0x70200000to 0x77FFFFFF];place in ROM_region { readonly };place in RAM_region { readwrite };place in EXTRAM_region { firs
I’m seeing that there’s the same file OSWrappers.cpp in both target\generated and touchgfx\osThe one in touchgfx\os is slightly different as it contains static 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;}// FreeRTOS specific handlersextern "C"{ void vApplicationStackOverflowHook(xTaskHandle xTask, signed portCHAR* pcTaskName) { while (1); } void vApplicationMallocFailedHook(xTaskHandle xTask, signed portCHAR* pcTaskName) { while (1); } void vApplicationIdleHook(void) { // Set task tag in order to have the "IdleTaskHook" function called when the idle task is // switched in/out. Used solely for measuring MCU load, and can be removed if MCU load
Hello, I'm using an STM32U5G7VJTx MCU with a 480x320 display, connected to the FMC in 16-bit mode, and everything works fine using the GPU2D. I'm not using an existing GUI framework.The pixel format used by the display is RGB565 (16bpp), so for gradients, I want to use dithering to soften the banding. I found this definition in the 'nema_graphics.h' file:#define NEMA_DITHER 0x80U /**< Nema Dithering */However, it seems undocumented. How do I make use of it?Kind regerds, Jack.
Hi,I have a problem with my custom container. I made a custom keyboard container in my project (4.26.1 compile is ok). I would like use this in another project.I exported this container which works.In the another project i import the widget, but compiler get unexpected error.What is the problem with widget?Thank you!These are the designer logs:2026-06-19 09:15:01,186 [1] ERROR TouchGFXDesigner.App: Object reference not set to an instance of an object.System.NullReferenceException: Object reference not set to an instance of an object. at TouchGFXDomainModel.LoadSave.Serial.ToSerial.Convert(TriggerCustom t) at TouchGFXDomainModel.LoadSave.Serial.ToSerial.Convert(Interaction i) at System.Linq.Enumerable.IListSelectIterator`2.ToList() at TouchGFXDomainModel.LoadSave.Serial.ToSerial.Convert(CustomContainerDefinition c) at System.Linq.Enumerable.IListSelectIterator`2.ToList() at TouchGFXDomainModel.LoadSave.Serial.ToSerial.Convert(Application a) at TouchGFXDomainModel.LoadSave.
Hello everyone,I am developing a UI using TouchGFX on a custom board based on the STM32F767. I am encountering visual artifacts during screen updates.As seen in the attached video:In the date selection wheel, the text overlaps, tears, and leaves ghosting artifacts during scrolling.The first menu ("Date & Time", "Language" etc.) is inside a ScrollableContainer with a ListLayout. Initially, the text is corrupted. However, as soon as I scroll this container, the artifacts disappear completely and the screen draws correctly.System Info:MCU: STM32F767GUI: TouchGFX (Version: [Sürüm] )Memory: Framebuffer is located in [SDRAM vb.]Configuration: MPU is ENABLED, D-Cache is ENABLED.What could be causing this issue? Any suggestions on which configurations or settings I should check?Thank you!
I have 2 problem in my touchgfx project.I use STM32G4 series. I have an external loader with a starting address of 0xA0000000. I can perform read and write operations with this loader using CubeProgrammer. However, when I define the external loader via CubeIDE, it programs the address 0x080000000. Then I get Hard Fault. Here is my flash.ld The external loader starts working when I start it with the external loader address 0x00000000, but I want to start with 0xA0000000. How can i fix it ?Also my second problem is texts. My text datas are sending to external flash, but it is not appear. Then I changed font section to internal flash in flash.ld, my text was appear. Here is my changed sections side. The textures are changing because something else is changing. Why isn't the screen showing the text I added with the external loader?
I am currently using TouchGFX to develop a project. How can I independently control GPU2D to draw graphics on a dynamic bitmap without affecting the TouchGFX display? I have already obtained the NeoChromSDK, but the examples in the NeoChromSDK all use GPU2D independently as well. I can draw with GPU2D if touchgfx not in use,But once I display them both, screen got glitched.
Hi Technical Support team,Platform: STM32H7B3I-EVAL board (MB1331-H7B3LIQ-D04)I want to understand memory and flash usage when we build and run any application using TouchGFX Designer on STM32H7B3I-EVAL board. How to choose memory size and type for customized board based on STM32H7 Platform. ? How to choose specific SOC form STM32H7 family suitable for project requirements? Please refer below details. On‑Chip (SoC: STM32H7B3LIH6Q)Flash: 2 MB internal FlashRAM (SRAM): 1.4 MB internal SRAM (split across multiple banks: DTCM, AXI SRAM, SRAM1/2/3):package: On‑Board External MemoriesOcto‑SPI NOR Flash: 512 Mbit (64 MB)SDRAM: 8 Mbit × 32‑bit = 32 MBSRAM: 1 Mbit × 16‑bit = 2 MBNOR Flash: 8 Mbit × 16‑bit = 16 MBmicroSD card slots: 2 × (expandable storage)Memory used as per blow log while compiling and flashing code from Touch GFX. :desktop_computer:️ On‑Chip (STM32H7B3
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.