Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hello,I have a screen with a scrollable container which items are cached custom containers.Everything works fine except that every once in a while the UI stops working and I am stuck with a DMA2D configuration error which is not handled by the touchgfx core. The workaround was to enable the configuration error interrupt flag and to call the transfer complete callback even if the error occurs, so that the touchgfx task doesn't block forever. I can sometimes see some glitches in the graphic when this situation occurs but at the moment I can surive with that.The problem arise either with copy or fill DMA operations.TouchGFX v2.31 and v2.32 behave the same, apparently v2.32 shows the problem less frequently but that might just be random.CPU: STM32H750 and external SRAM for the 2 framebuffers.I am attaching a screenshot of the DMA2D regiters captured after one of those situations occured. Thanks!Ivan
Hi there,I have the following setup duplicated thrice in my project - to select three distinct parameters to define an object.Each listLayout is programmatically populated with a number of items (buttons). One screen has 5 items, the other two have 6. Five items fit perfectly on a screen and don't require a scrollbar, while six items require scrolling to see the final item. However, none of the scrollableContainer display their scrollbar until I touch the screen, despite me configuring it to do so (at least, that's what I think "Show scrollbars" means):What am I doing wrong? How can I ensure that the vertical scroll bar is shown, by default, when I open a screen with more items than fit on a screen?Thanks,Julia
Hi,TouchGFX does not like spaces in the path. I just wanted to check a couple of things please: 1) that is referring to the/my project path only, is that correct? 2) For those of you who use Dropbox, the Dropbox PC folder name cannot be changed and it always contains the team or person name + a space + "Dropbox". So it seems you cannot have your projects stored on Dropbox. And I would really need to have them there. Are there any workaround? How do you do it? Thank you :)
I have a high resolution PC monitor (3840x2160) and have set Windows scaling to 150% to make icons and texts in most applications readable.Screenshots in TouchGFX simulator with F3 are pixel perfect and match what is rendered on target hardware, but rendering during simulating is done using Windows scaling, so it is not sharp (1 pixel is 1.5 pixels).I want square pixels. So 1 pixel should be 1, 4, 9 or 16 pixels of the same color for respectively 100%,200%,300% and 400%.I have a semi-working solution.In Visual studio 2022 I've disabled the windows scaling like so:This renders the simulator at native resolution. So the window can be quite small.In order to do integer scaling I've added SDL_SCALE and modified SDL hal. I've modified my HALSDL2.cpp file like so:static uint16_t HALSDL2__FRAME_BUFFER_WIDTH = 0;static uint16_t HALSDL2__FRAME_BUFFER_HEIGHT = 0;++static uint16_t SDL_SCALE = 2;+static uint16_t* single_buf = NULL;static uint16_t* double_buf = NULL;static uint16_t* anim_stor
I’m currently working on upgrading from TouchGFX 4.16.1 to 4.25. Functionally, everything is working as expected, but I’ve noticed a significant increase in internal flash usage—approximately 300 KiB. For reference, we store all images and fonts in external flash memory, so this increase is coming from the core framework and codebase.To address this, I reviewed the configuration under TouchGFX Designer → Config → Framework Features and disabled everything we don’t use, keeping only RGB compression and Opaque/Non-Opaque RGB565 Nearest Neighbor enabled. This helped somewhat, reducing the increase to around 190 KiB, but it’s still notably higher than before.I’m trying to understand whether this increase in flash usage is expected behavior when moving from 4.16.1 to 4.25. We haven’t yet explored project-side optimizations—our current focus is on evaluating if any further improvements can be made from the TouchGFX configuration side before we dive deeper.Has anyone else experienced similar
I'm developing a UI on STM32H750 using TouchGFX with a 1024x768 display. I'm experiencing significant performance issues with touch responsiveness when displaying graphs.My UI Structure:Base screen (screen1) with a menu buttonWhen menu button is pressed, a menu container is displayed on topThe menu container has a graph button which opens a graph container that overlays on topThe graph display uses a CacheableContainer with multiple static graphsThe Problem:When the graph is displayed, touch response becomes extremely slow. I've used CacheableContainer which helped slightly, but issues persist.In the simulator, I discovered that during every tick, the entire screen (full rect 0,0,1024,768) is being redrawn unnecessarily. The CPU usage spikes when the graph is displayed.Here's the call stack when debugging:#0 0x005d3da7 in touchgfx::CacheableContainer::setupDrawChain(touchgfx::Rect const&, touchgfx::Drawable**) ()#1 0x005d3aa0 in touchgfx::Container::setupDrawChain(touchgfx::Rect co
I have a scroll wheel languageSelectorWheel with several items. Every item is a container languageSelectorItemOn the container I have a toggle button. When I click any toggle button, I want to send a trigger on the view of the scroll wheel to execute a function. On the toggle button I have added an interaction onClick via TouchGFX that emits the trigger languageChanged. The trigger is set on the languageSelectorItem containerOn the view where the languageSelectorWheel is added, I have set the callbackvoid languageSettingsView::languageChanged() Unfortunatly, it seems it is not called when i toggle the button (settings a breakpoint on the line that call emitLanguageChangedCallback(); in languageSelectorBase where void languageSelectorBase::buttonCallbackHandler(const touchgfx::AbstractButton& src) is defined enters) My thought is that because the trigger is set on the container, it won't be passed to the view
stm327f46g, new to development. All I did was create a basic design which compiles correctly but the moment I enable DAC when configuring modules in the IDE it seems to mess up TouchGFX where I get a white screen
Hey buddies,How can I have a dynamic graph in TouchGFX that Y-axis can change dynamically like X-axis? Because when the dynamic graph receives values bigger or less than the defined "Value Range" in the properties can't show anything.Actually, I want the graph always in the middle of the Y-axis not wandering up and down.The "Chart" in STM32cubeMonitor has exactly the ability that I want.
Hello, i've been having this problem with negative numbers recently in Touch Designer, i can't show them correctly in my screens, the negative sign (-) keeps going on the wrong side Ex: "-5" turns to "5-"Why this keep happening? I tried to change text font and the wildcard ranges, but none of this fixed the problem.
Hello i can't find how to get item index (ScrollList) when user clicked button or changed slider value ? I studied Scroll Wheel and List Example but I can't adopt it to my case.
I'm working on a project using TouchGFX Designer v4.25.0 with the NUCLEO-H503RB board and GFX01M2 display module. The firmware is based on STM32Cube FW_H5 V1.5.0 and V3.0.6 on the touchGFX project versionThe main idea of the project is to communicate by CAN and to display the information received in a text on the screen.Here's is the issue: when I enable peripherals like CAN, UART1 or UART2 via STM32CubeMX, and generate the code, text stops displaying on the screen.Although the rest of the graphical elements are displayed. If i comment out the Init functions, the text show up correctly.This are the things i've test so dar I tried enabling "Mapped Text Storage Format" in TouchGFX as a workaround. It causes a HardFault in this function --> touchgfx::ConstFont::find(unsigned short) I also tried using vector fonts instead of raster ones, but the issue persists.I tested with different STM32Cube FW_H5 versions, but the problem remains the sam
I have just upgraded my project from TouchGfx 4.22 and on rebuild I get:(.text._ZN8touchgfx8LCD16bpp19DecompressorRGB_QOI16blitCopyARGB8888EPKhRKNS_4RectES6_h+0x31c): undefined reference to `touchgfx::paint::flushLine(unsigned long*, int)'C:/ST/STM32CubeIDE_1.11.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/bin/ld.exe: (.text._ZN8touchgfx8LCD16bpp19DecompressorRGB_QOI16blitCopyARGB8888EPKhRKNS_4RectES6_h+0x328): undefined reference to `touchgfx::paint::rgb565::lineFromARGB8888(unsigned short*, unsigned long const*, unsigned int, unsigned char)'C:/ST/STM32CubeIDE_1.11.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/bin/ld.exe: (.text._ZN8touchgfx8LCD16bpp19DecompressorRGB_QOI16blitCopyARGB8888EPKhRKNS_4Rect
I've been trying to update touchgfx display from values obtained from canbus. I dont know what the problem is but when touchgfx and canbus configured together, i get bus errors.I have attached my project files. Any help would be appreciated. I have made a task called CAN_TX_chc that has higher priority than touchgfx task.CAN_TX_chc task sends data to the Txfifo and then osDelays for 500ms.If theres a better implementation, or a way to solve this issue. It will be much appreciated.
Hi everyone,I'm using TouchGFX Designer 4.21.0 to develop a project with my colleagues on a ST partner board with embedded STM32H757XIH6. During the last development cycle we added a custom container, two fonts, two images and some strings, but when we compiled it we got this error (path list shortened for readability):process_begin: CreateProcess(C:\TouchGFX\4.21.0\env\MinGW\msys\1.0\bin\sh.exe, C:/TouchGFX/4.21.0/env/MinGW/msys/1.0/bin/sh.exe -c "# @echo CM7/TouchGFX/build/Riverdi_70STM32H7/CM7/TouchGFX/gui/src/startops_screen/StartOpsView.o...CM7/TouchGFX/build/Riverdi_70STM32H7/Drivers/STM3gcc/makefile_cm7:448: recipe for target 'CM7/TouchGFX/build/bin/target.elf' failed 2H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.o CM7/TouchGFX/build/Riverdi_70STM32H7/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.o ... CM7/TouchGFX/build/Riverdi_70STM32H7/Utilities/JPEG/jpeg_utils.o CM7/TouchGFX/build/Riverdi_70STM32H7/Common/Src/system_stm32h7xx_dualcore_boot_cm4_cm7.o", ...) failed.make (e=87
Hello,I am using the STM32U5G9J-DK1 to learn the GUI development, and I have created a very simple UI project in TouchGFX designer with the dev. board setup. The UI has only a box widget with a filled color, nothing else. I could successfully run the UI on the target board either:- directly click the 'Program and Run' button in TouchGFX designer.- or using the default STM32 CubeIDE toolchain, i.e. compile & debug in the IDE.So far, the default CubeIDE toolchain works good.And I realized the new TouchGFX 4.25 support CMake as the build system, and I have followed the link to set it up. I am using VS Code with the correct setup of STM32 VS Code Extension, and the X-Cube TouchGFX version is 4.25.0. Following the guide, I could successfully build the project. The target file is generated as {proj_root}/build/Debug/xxx.elf, but after downloading the file to the dev board, I get a blank screen.What I have tried:By debugging in VS Code, it finally goes into the function tou
Hello people, I'm a newborn baby in this microcontroller world, I'm hoping in getting some help with my current project and know if it's possible to do it first of all. I did a program to control a BLDC motor in a simple Nucleo board using an ADC channel and PWM output. Then I bought an STM32F4291 and I'm trying to implement the gauge widget animation with the same purpose of controlling a BLDC. I have the Widget running thanks to a good video in YouTube but I'm struggling in adding the PWM output to the project. Does my PWM function needs to be in ScreenView.cpp , Model.cpp etc? Can I use the same value that I'm getting from the gauge? I don't exactly what to do, I did try the main loop but didn't work. Thank You for your time!
Hello ST Team,I am currently working on a project using DK board and custom board:STM32H7S7L8-DK (ST Official Development Kit)STM32H7R7L8H6H – a custom board designed with the same hardware layout and component selection as the STM32H7S7L8-DK.I created a TouchGFX project using STM32CubeIDE and TouchGFX Designer. The application runs perfectly on the STM32H7S78-DK board.However, when I flash the same project onto the STM32H7R7L8 custom board, the application does not run as expected. Here's the observed behavior:After powering on, the firmware runs for a few seconds.Then, the application freezes and the display goes blank or becomes unresponsive.After a random delay of a few seconds to a minute, the display comes back and the application resumes.This cycle continues unpredictably.To isolate the issue, I tested a simple UART communication project on the custom board, and it works flawlessly. This confirms that:The MCU is functional.Basic firmware setup, including clock and peripherals, a
Hello there, I am working with STM32 TouchGFX with STM32L496ZG-P with AT25Q128A NOR Flash, using this setup my application is to fetch the large amount of data (touchGFX images) from the external flash (AT25Q128A NOR Flash) and to dump it inside the main mcu before the compilation. I created loader file using "Controllers Tech Tutorial" https://controllerstech.com/w25q-flash-series-part-10-qspi-ext-loader-in-h750/ . On inserting the external loader file in the debug configurations, by enabling the two check boxes of "Enable" and "Initialize" (refer to the image attached herewith) my HAL_delay() is not working, further i came to know that, it is because of not reception of the interrupt (so that the "uwTick" is not getting incremented) from the sysTick, but when i tried pressing the onboard reset button, the code continues execution specifically HAL_Delay() is also working, NOTE: When i pressed on board reset button, it starts executing from the point it stopped not from the s
touchgfx simulator errorAfter installing touchgfx 4.24.0 - 4.25.0 version, the example file is loaded and compiled, but the simulator does not work and an error occurs.The OS environment is Windows 10.I even formatted my PC to solve the problem.I also reinstalled Microsoft Visual C++ 2022 Redistributable.Below is the error logging list. Run SimulatorGenerateDoneGenerate Assetsmake -f simulator/gcc/Makefile assets -j8Reading ./application.configReading ./target.configDonePost Generatetouchgfx update_project --project-file=simulator/msvs/Application.vcxprojDoneCompilemake -f simulator/gcc/Makefile -j8Reading ./application.configReading ./target.configCompiling gui/src/main_screen/MainPresenter.cppCompiling gui/src/main_screen/MainView.cppCompiling gui/src/model/Model.cppCompiling gui/src/common/FrontendApplication.cppCompiling generated/gui_generated/src/main_screen/MainViewBase.cppCompiling generated/gui_generated/src/common/FrontendApplicationBase.cpp0 [main] us 0 init_cheap: Virt
Hello, I've been trying to make this project since the PART 1 STM32 Graphics: Getting Started with the Gauge Widget, Part 2 , following every step, but my program crashes in MX_TouchGFX_Init(). I was debugging and the error message shown is "No source available for "touchgfx::PartialFrameBufferManager::tryTransmitBlock() at 0x800660c". I have the G071RB + GFX01M2. I hope someone can help with this problem. Thank you !
Hello,I’m experiencing issues while programming the RVT101HVSFWCA0 Riverdi display. Specifically, I encounter errors when uploading my project using TouchGFX and STM32CubeIDE.I would greatly appreciate your assistance in resolving this matter. I’ve attached a screenshot showing the errors and my current connection setup.
Trying to update from an old version of TouchGFX to the current version. I am having problems with the colors from fillRect(). I see in the 4.18.0 bug notes that "LCD16bpp::fillRect() and LCD16bpp::drawGlyph() now passes 24bit color instead of native 16bit color to DMA. I read that the fix was to regenerate these files but I do not have access to the original configuration for creating these as this project is many years old. Is there any way to make the necessary changes to the DMA manually?The original project is built on TouchGFX 4.5.0.
I am a student in embedded systems. I have a final project with the stm32h747i-disco card. I want to configure the touch screen to make a graphic interface.
Hi All,I've been trying to bring up a custom external loader for well over a week and I'm just not getting anywhere.My processor is an STM32L496VGT6 and its connected via quadSPI to an MT25QL128A 16MB external flash memory. I'm running the clock at 80MHz, and my QUADSPI is setup like this (both in my custom loader, and in the application code I'm developing):Following mostly along with the "External QSPI loader how to" (from here External QSPI loader how to - 05 – QSPI driver coding - YouTube), and utilizing the files in the contrib branch of the stm external loader github repository (GitHub - STMicroelectronics/stm32-external-loader at contrib), I've put together what seems like a working driver for the MT25QL128. I got there by starting with the quadspi.h/c files in the stm32-custom-loader/QSPI_Drivers/MT25QL512/ folder, and then modifying them using the micro datasheet for the part to swap different commands where necessary. I pulled in test code from the main.c file in st
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.