Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Dear I'am protoyping a GUI on a STM32F469I-Disco board and encounter the "feature" that buttons in the lower area of the canvas will not trigger when touched (e.g. the red circled "Auto"). Strangely when moving these buttons (e.g. "00.000V") to the upper area without changing anything else the suddenly work????Of course my first suspect was the FT6xxx touch controller chip, so I debugged into the STM32TouchController::sampleTouch(int32_t& x, int32_t& y) function. I confirmed that the touch controller worked as designed delivering proper coordinates on every touch (origin in the upper right corner, x increasing down, y increasing to the left) As of now I've no clue where to look, help appreciated!Thx MTP.S.: The canvas has been configured in landscape orientation in TouchGFX designer
Hello, I am working with TouchGFX Designer version 4.25.0 and STM32Cube IDE 1.13.2 .Since today my build process does not work anymore and I get errors that some of the .hpp files are not existent. error notificationsI did double check the "missing" files but they are existent. Has anybody already had this problem and maybe can suggest a solution? Thank you very much.
Hello All, I have created one project which is working on STM32H747i- Eval board with 800 x 480 resolution, now the project has to be migrated to 1024 x 600 resolution for larger display.I have migrated the backend code but now the Screen resolution is still 800 x 480 and the widgets are aligned to work with it.Now how shall I configure the project to 1024 x 600, I mean is there any to do it instead of manually adjusting the screens and widgets ?If there is any effective and better solution kindly do let me know ? Regards,Shiv
i'm successful to drive RGB LCD 480*272 with stm32cube IDE , but if i change to touchGFX and load into target , it have some following error , remark: simulator is OK
I just updated my TouchGFX version to 4.25.0 and try a simple two screens sliding transition with my STM32U5G9J-DK2 with ThreadX RTOS, and I found my sliding transition not working. No more sliding, the screens just updated with a glitch.Can anyone please help to point to me where should I look into? Is it relate to timing in the TouchGFX thread timing?Thank you for your helps.
I am trying to update a textArea object from a .c file.I have been able to open the screen by creating a wrapper, the wrapper also handles the data to update. The screen is called ResultsView.cpp and the textArea is called textAreaTap to open the screen i created a wrapper: showResultsScreen()// ResultsScreenWrapper.cpp #include "ResultsScreenWrapper.h" #include <gui/common/FrontendApplication.hpp> #include <gui/results_screen/ResultsView.hpp> #include <touchgfx/Application.hpp> #include <gui/results_screen/ResultsPresenter.hpp> extern "C" void showResultsScreen() { static_cast<FrontendApplication*>(touchgfx::Application::getInstance())->gotoResultsScreenNoTransition(); } extern "C" void update_results_screen(const char* resultText) { auto* app = static_cast<FrontendApplication*>(touchgfx::Application::getInstance()); ResultsPresenter* presenter = static_cast<ResultsPresenter*>(app->getCurrentPresenter()); if
I'd like to draw rounded corner rectangles (e.g. buttons) where the background/fill colour can be changed by the application as well as opacity/alpha channel. The current shape tools don't seem have this option (rectangle or circle). It's possible to place SVG files, but that doesn't seem to allow for colour and alpha changes. Is there a way to use vector renderer and give it a path and the change the fill colour by the application? -a
How does this work with a ClickListener?I have a view with 10 custom containers. How can I tell the view when a custom container has been pressed and which one? Do you have a simple example?ThanksRegards, Roger
We have a 480W 800H TFT display that TouchGFXDesigner can nicely display in landscape mode instead of portrait.The trouble is that the device UI is now upside down. TouchGFXDesigner doesn't seem to accept other display rotations such as 180 and 270. Correct? The designer does allow for the text to be rotated 180 which would look correct on our display. But that has other consequences.Has anyone else had this issue?
When building a Widget or Custom Container, could it be possible to define values that can be used in the base and inherited class?Things that are in the base constructor.Coordinates, colours, Bitmaps_id, ...Predefined coordinates in Designer for when the widgets change size.This would permit in the application to let the TouchGFX designer figure out the style/geometry and the code to focus on the behaviour and not need to calculate translation of coordinates, just to realign text after an image.I suggest that this feature is opt-in and not systematic.Could be a checkbox near the mixins to export drawables properties after construction.
Hi, I have encountered a new problem. When I run the simulator of my program, the simulator has a black background. But all the buttons keep their functionality and I can navigate through my designed sheets. I have updated my computer to Windows 11 a few days ago. Can this cause the problem? Attached find a picture: In the front is the simulator window and in the background the window in designer as it should look:
I am using TouchGFX to design GUI, and I want to use a dynamic bitmap to show an image captured by the camera. The camera is about 600*480 size. But I set the CacheAddress as following, and It turns out that the GUI cannot run properly. Is there any problem with it? uint16_t* const cacheStartAddr = (uint16_t *)0xC0008000;const uint32_t cacheSize_own = 0x100000; //1 MB, as exampleBitmap::setCache(cacheStartAddr, cacheSize_own, 1);
I'm having trouble creating multiple screens, at the moment it has more than 5 screens and they all work fine with the code (void FrontendApplicationBase::gotoMainScreenNoTransition() ) but when I try to add another screen, TouchGFX doesn't generate the Transition declaration code for the screen new screen but and does not declare this in the FrontendApplicationBase.cpp class: Instead, for all other screens, it generates the following: void FrontendApplicationBase::gotoMainScreenNoTransition() { transitionCallback = touchgfx::Callback(this, & FrontendApplication::gotoMainScreenNoTransitionImpl); pendingScreenTransitionCallback = &transitionCallback; } And the FrontendApplicationBase.hpp doesn't have a void gotoScreen1ScreenNoTransition();; Any ideas would be helpful. *This post has been translated from Chinese to comply with the ST Community guidelines.
Hello,I'm currently developing on the STM32H750-DK board using TouchGFX. By default, the TouchGFX Designer configures the display for RGB565 color depth, but I would like to use RGB888 (24-bit) color to achieve better image quality and color accuracy for my UI.I tried modifying the LTDC and DMA2D initialization functions manually via STM32CubeIDE to set the appropriate pixel formats, but the result was a distorted or corrupted display output. It seems like just changing the pixel format in the LTDC config isn't enough.Could someone please help me with the correct procedure to enable RGB888 on this board? Specifically, I'm looking for:Required changes in TouchGFX Designer or the generated code to support RGB888.Proper configuration of LTDC and DMA2D (e.g., pixel format, blending, buffer alignment).Any changes needed in the framebuffer settings or HAL display driver.If there’s an example project or reference implementation that demonstrates RGB888, that would be very helpful.Thanks in ad
What should be the color input format for hal_dma2d_start()?According to the function definition, it seems that only ARGB8888 format colors can be inputted.static void DMA2D_SetConfig(DMA2D_HandleTypeDef *hdma2d, uint32_t pdata, uint32_t DstAddress, uint32_t Width, uint32_t Height) { uint32_t tmp; uint32_t tmp1; uint32_t tmp2; uint32_t tmp3; uint32_t tmp4; /* Configure DMA2D data size */ MODIFY_REG(hdma2d->Instance->NLR, (DMA2D_NLR_NL | DMA2D_NLR_PL), (Height | (Width << DMA2D_NLR_PL_Pos))); /* Configure DMA2D destination address */ WRITE_REG(hdma2d->Instance->OMAR, DstAddress); /* Register to memory DMA2D mode selected */ if (hdma2d->Init.Mode == DMA2D_R2M) { tmp1 = pdata & DMA2D_OCOLR_ALPHA_1; tmp2 = pdata & DMA2D_OCOLR_RED_1; tmp3 = pdata & DMA2D_OCOLR_GREEN_1; tmp4 = pdata & DMA2D_OCOLR_BLUE_1; /* Prepare the value to be written to the OCOLR register according to the color mode */ if (hdma2d->Init.ColorMode == DMA2D_OUT
Hi everyone,I'm using TouchGFX on a STM32U5G9 microcontroller and got stuck while trying to enable GPU2D (aka NeoChrom).The starting and working configuration is TouchGFX + LTDC + DMA2D. Everything works properly: the signalVSync function of the OSWrappers is called periodically due to LTDC interrupts and so the counterpart waitForVSync.As soon as I enable the GPU2D acceleration from CubeMX (following the guide here https://support.touchgfx.com/docs/development/touchgfx-hal-development/generator-how-to/touchgfx-al-configuration/driver), the screen remains black despite the signalVSync function is actually called. On the other hand the waitForVSync function is called 2 or 3 times and then no more.Does anyone have an idea of what's happening? What am I doing wrong?Thank you for your help.
Hi @Romain DIELEMAN, @Osman SOYKURT, @LouisB We are using TouchGFX library, now for almost 5 years. We are very satisfied with the product and its's regular updates/improvments and new featuers. However we have one limitation: the current library does not officially support the Clang compiler. We are using SEGGER compiler - Clang for our projects so I needed to do some workarounds for current gcc library to got it working with it. Would it be possible to add support for Clang compiler in future releases? This way it would also be directly compatible with the SEGGER compiler and no other workarounds would be required. I am looking forward to your positive response and the continued evolution of the TouchGFX library.
Hello All,I have used STM32757IEval board for my initial GUI application development. Which is working fine on Eval board with Touchgfx and stm32IDE.Now we have to use other 10"1 inch Display to be to run the Developed Application.The main change what we see is the Eval board STM32757I Eval uses DSI for Display and Touch sense.The 10".1 display used LTDC Parallel (RGB 888), we are trying to create one sample project using STM32CUBE IDE but there are compiling errors, the path and files are set but still no progress. If I try to open the .touchgfx file using Touchgfx Tool I am able to run the same project on simulator. Now I guess there should be some Proper way to do it, as the errors never goes off.I doubt the folder structure, or some required files are missing. You might know well.It would be helpful if you could let me know what should I try to make it run successfully. Regards,Shiv
Hi, I wonder if someone could help me with my setup.@Tesla DeLorean @Amel NASRI @Andrew Neil I am currently trying to use touchGFX to design my GUI in a custom board. Before trying to use touchGFX, I set up the LTDC and FMC to use an external SDRAM to hold the buffer and it works fine (I can draw on the screen). However, I've been struggling to setup the touchGFX and being able to only get some random pixels. I noticed from the templates that an external flash is being used to hold initial assets generated at touchGFX, but my board does not have an external flash right now.Is it possible to run touchGFX from internal flash, and use only external sdram for the framebuffer?I'll share the configurations I have so far:And here is my ld file:/* ****************************************************************************** ** ** @file : LinkerScript.ld ** ** @author : Auto-generated by STM32CubeIDE ** ** @brief : Linker script for STM32F469IITx Device from STM32F4 series
Every time I debug my project for STM32H747 (created with TouchGFX), the debugger opens a bunch of random files, different each time.It does that BEFORE even finishing uploading the project to the board. Before I even get "Verifying" on the console.Then it stops at MPU_Config() in main.c.It doesn't do that in projects created with STM32CubeIDE, just with a TouchGFX project.It's super annoying, is there any way to stop that beavior?
tldr; if you're using a task to service the touchscreen (do the I2C reads/writes), how do you ensure it plays well with TouchGFX? I am finding that it would have to consistently run faster than TouchGFX (and perhaps be a higher priority) to be able to get it a new (x, y) coordinate every tick, so that TouchGFX doesn't consider the touch to be over and release the click.Long version:I am using a touchscreen with a GT911 controller on a custom ST board. We initially architected it such that a touch generates an interrupt, and in that interrupt we do two I2C reads and one write. Bad practice to do anything long in an interrupt, I know, but we were following guidance that we found elsewhere. This is what our ISR did:// Function to read out touch coordinates when a rising edge is detected on CTP_INT. // This is called from the CTP_INT GPIO ISR. bool Touch_Callback(void) { uint8_t number_of_coordinates; uint8_t point_info; // Read the touchpoint information register bool success =
Hi,We are encountering a partial screen flickering issue when using a custom HMI with TouchGFX and double buffer enabled. The screen resolution is 800x480, but only the left portion (480x480) displays correctly. The remaining 320x480 area flickers during runtime, especially when updating data on the UI.Key Observations:This issue occurs only when double buffering is enabled.In single buffer mode, minor flickering is still present, but it's significantly better than dual buffer mode.The issue is isolated to our custom board and BSP configuration.Cross-Test:We tested the same TouchGFX button example on two different displays:Custom Display Board – 800x480 (TFT-LCD, TST070WVBE-31)→ Flickering observedTest Board – 1024x600 (other manufacturer)→ No flickering observedThe main difference:Custom board: TouchGFX + BSP drivers (manually configured)Test board: Fully CubeMX-generated configurationSystem Configuration:MCU: STM32H750Display: TFT-LCD (TST070WVBE-31), 800x480, RGB888TouchGFX: 4.24.0S
i use my customed STM32L431 to create a TouchGFX project and have some error after compiling as follows:Generate Assetsmake -f simulator/gcc/Makefile assets -j80 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487AllocationBase 0x0, BaseAddress 0x60EA0000, RegionSize 0x160000, State 0x10000D:\TouchGFX\4.18.1\env\MinGW\msys\1.0\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0simulator/gcc/Makefile:32: recipe for target 'assets' failedmake: *** [assets] Error 1FailedFailed
I am working on STM32H7B3I-DK with Touchgfx interface (using FreeRTOS ).The project was working well ,where the loading and running was successful but we started facing "Failed to Execute MI command" issue while loading. At end we created new project from scratch and it worked well. But after working fine for 2 day, with given no change or modification , the next very day while loading at first attempt ,we again started to face the same error. The error itself is not consistent Kindly note that we are using on board ADC and the same project (with same configurations) but has no Touchgfx or any FreeRTOS is loading and running fine.Kindly find the uploaded error message image and hardware configuration file (.ioc) for reference
I’m working on a TouchGFX project with a dropdown menu. When I select an option, the selected text is shown in a TextArea using a wildcard buffer (selectedTextBuffer).In the TouchGFX Simulator, the full string displays correctly. But on the actual STM32 board, only the first letter (e.g., just "M") is visible.I've already tried the following:Set the buffer size in Designer to 32Confirmed that all characters are included in the font's wildcard character setVerified that invalidate() is called after updating textRebuilt assets and fully flashed the boardDespite all this, the board still only shows the first letter.Setup:MCU: STM32H7 (STM32H750-DK)TouchGFX version: 4.25.0TextArea uses selectedTextBuffer as wildcard
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.