Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Split from stm32f469I-Disco - TouchGFX Display stays black.Hey @Mohammad MORADI ESFAHANIASL , I have the same issue as the one above, but my TouchGFX does not have the version of stm32f469 disco with the au1 screen in it.I have 4.24.0 like your example.How can I fix this?
Hello,I am in the process of creating a modifying a TouchGFX project using the example project for the STM32H735G-DK kit. I generated a project in TouchGFX and then modified it to use a larger custom 7" Display/touchscreen. So far I have been able to get the display to show static images perfectly and I've even been able to modify the generated program to use a GT911 touch controller library for touch control instead of the default FT5336 controller. All the works perfectly. Static images look good and touches are registers and transitions from one screen to the next work. The problem I'm having now is that during the transition the images seem to tare/glitch and I'm not sure what is causing this. I've modified all the timings to match that of the new display, I've changed the LTDC clock to match that of the new display. I've changed all the framebuffer settings to match the larger display. Are there other timing settings I need to manual
I have a scrollabe list where each item is a scrollable container.I'm handling the scrollable container with this logic https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/doscroll-doesn-t-scroll-the-full-text/m-p/813190#M43805 (during handleTickEvent I manually change position of the text via code). Each scrollable container has the Horizontal scroll disable with enableHorizontalScroll(false);Now, I'm facing this issue https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/event-dispatching-bubbling-and-event-interception/m-p/659244#M36957 where when I want to slide the list, I have to click the tiny portion between two items.Is there a way to bypass the "scrollable container overrides this method to virtually insert itself as the last child in order to intercept the touch events" as I have disabled the scroll so, no need to intercept the scrollable container's events?
Hello,I am using the TouchGFX designer to create project and source files , afterward import the project to CubeIDE.I am using TouchGFX 4.23.2 and CubeIDE 14.1 .I've seen many question regards this topic , but surprisingly none of the advices solves this very basic problem for me.After creating the sources in TouchGFX, I am opening the CubeIDE workspace in the project root (not inside CubeIDE folder.From that location I've tried the following:1. File -> Open Project From File SYstem -> Directory: Show two projects. One of the called as the TouchGFX project and the othe called CubeIDE. None of them is exports nothing to the CubeIDE.2. Import Project -> Existing Project Into Workspace: Import a project that *always* called CubeIDE, although in .project file there is another name. In addition the .ioc file has another name. Renaming the files currently did not succeed, therefor I failed to create 'operational'
Dear Gfx Team,I worked on a project using CubeIDE 1.17.0 and GfxDesigner 4.24.1.I installed and un-installed 4.25.0.Now, when I open \TouchGFX\mcu_project.touchgfx with 4.24.1 and press F4/F5, the version in \mcu_project.ioc is changed from 4.24.1 to 4.25.0.Why is that and how to stop it please ? Thank you
So, I'm trying to have a text that scroll automatically if the container width is too small.My costume container will set the text and then calculate the width withtextLightSoundSettings.setTypedText(TypedText(T_AVVSONORITEXT)); if (textLightSoundSettings.getTextWidth() > scrollTextLightSoundSettings.getWidth()) { scrollText = true; pixelToScroll = textLightSoundSettings.getTextWidth() - scrollTextLightSoundSettings.getWidth(); }Then, in the container's tick handle eventvoid lightSoundItem::handleTickEvent() { lightSoundItemBase::handleTickEvent(); if(scrollText) { static int16_t pixelScrolled = 0; static bool scrollRight = true; if (scrollRight) { if (pixelScrolled < pixelToScroll) { scrollTextLightSoundSettings.doScroll(1, 0); pixelScrolled += 1; } else { scrollRight = false; } } else { if (pixelScrolled > 0) { scrollTextLightSoundSettings.doScroll(-1, 0); pixelScrolled -= 1; } else { scrollRight = true; } } } scrollTextLightSoundSettings.in
Hi,I have a custom board and im keen to get my design to be able to have buttons that trigger events when the user releases (onRelease) the button, as well as onPress.Is this possible and how would i go about achiving it ?Im using TouchGFX 4.20
Hello.I try to write a dynamic changed value in a text area.But it isn't possible to make a value output.I get allways "???" instead of my value.I used the video from ST: https://support.touchgfx.com/academy/how-to/textareaand try to change the text on runtime, but i get allways "????" as result. Even if i thy to write a unicode-string, a char string, a unicode-value...The only way to change the text at runtime is to use a static text and an additional wildcard text. counter++; Unicode::snprintf(Screen1View::textArea1Buffer, Screen1View::TEXTAREA_SIZE, "%d", counter); textArea1.invalidate();If i use only a Wildcard, all characters are a "?".If i use two text's -> Auto-generated fixed Text "RPM:<value> and a Wildcard1, most of the characters are a "?" (RPM: is correct). Is there a way to suppress the question marks, or does TouchGFX always display a question mark when trying to change a text or value?
I have succesfully built and programmed a TouchGFX application to my board in release mode. When I try to use the debugger I have limited success. If in the Project Explorer I highlight the (in FSBL) line and launch the debugger and press F8 my application runs. Any breakpoints I have set in my application do not trigger. If in Project Explorer if highlight the (in Appli) line and launch the debugger I receive an error "Failed to execute MI commad" It worked for me one time but I cannot relpicate the sequence that gave me that result. How do I launch the debugger so that breakpoints in my application will work?
X-Nucleo GFX01M1 not working properly with Nucleo-64, ARM Cortex M4, STM32 L476-Serie Hi, I Got My Hands Recently On a X-Nucleo GFX01M1 and I am now struggeling to get a Proper Connection > Everything I see Is White Screen. I have Simple Code For Testing the Screen :- Just Draw Everything Red On The Screen- Blinking LD2 on the Nucleo to see if the Code Is Running Or Not. So The Code Actuallys flashes correctly with 0 Errors and The LD2 is flashing but Still, only White Screen.https://drive.google.com/file/d/1r8Q8XvllzKyyLXUqnP15iG0EPqi2gGUq/view?usp=sharinghttps://drive.google.com/file/d/1N7JsuQcGA6AmxG5wUAQERqQLjKdWLTWE/view?usp=sharing (screenshot .ioc with SPI2 and warning ?) I am using New Blank Project In STM32 IDE,- SPI2 Full Duplex Master- PB15 > SPI2 MOSI- PB14 > SPI2 MISO- PB13 > SPI2 CLK- PA8 & 9 > GPIO Output- PB6 > GPIO Output- PA0,1,2 > GPIO Output This Is My main.c Looking Forward for your Responses!Btw th
Hello,I download an example GUI from Touchgfx designer, generate code and run on my STM32H735G-DK board, it works well.Then I open the .ioc of this project and generated code with EWARM, open it and build, it has no errors.When I download it to board, the progress seems stuck and report error several minutes later. Here is the debug log,Touchgfx version: 4.25.0IAR version: 9.40.1
I had made a post about fixing OTM8009A video mode printing an extra frame on screen that I had solved with adjusting porch values even more for the horizontal, you can find the information within this post here:Video mode printing another frame on screen - STMicroelectronics CommunityFor this situation I don't think changing porch values are enough to solve this. I have the ST7701 LCD controller running TouchGFX in video mode on STM32F469I-DISCO, the testing screen in TouchGFX Designer is being printing twice vertically across the horizontal screen rather than printing across the screen horizontally, when I have the OTM8009A screen connected the image is printing in the correct direction and shows the testing screen from TouchGFX Designer, I don't have an image of the OTM8009A screen working correctly but in the post above will show the same testing screen working on the OTM8009A but with the frame printing again, the post has a reply by myself saying I solved the issue by raisin
The SVGImage widget is a great tool but, as I understand it can only use SVG images from the SVGdatabase.I may imagine to subclass the SVGImage class and handle directly run time created lists of VGObject as it is done with the SVGdatabase.What is missing is to have the imageconverter tool code to run on the embedded platform. I mean the code that convert XML SVG text files to the VGShape , commands and points like those found in SVGDatabase.cpp.Could this code part be disclosed or a new function like 'dynamicSVGCreate( )' be added to the lib.This function could return a VGObject being given a text string with the SVG content ?Or do someone have an other solution to dynamically decode SVG XML text to bitmap ?BRPierre
Moved from Feedback forum - the Feedback forum is not for product questions. Hello, I have a problem with using TouchGfx, if I create a project with an STM32F429 without adding any code the compilation is ok, if I activate TouchGFX (Graphic application checked) I have compilation errors (see attachment) I don't know how to do it, I would like to start with TouchGFX with this project Best regards Sébastien
I'm seeing "noise" in some objects drawn on the screen. See pic... the yellow circle ("shape") should be solid yellow, but instead includes red-orange horizontal lines. If the circles are rearranged the yellow circle can look correct, but the blue circle may have the lines instead - only lighter blue, not red-orange. Also, the button can include some horizontal lines when showing the "pressed" version. These lines can flicker a bit too.. possibly turning on and off very quickly. What is causing this and what can be done to fix it? There was some improvement when setting the Alpha to 255 (from 127) but problem still exists.Screen is running at RGB565 - don't have enough RAM to run at RGB888. STM32H7a3. No RTOS. Interface is LTDC with DMA2D enabled (but I did try disabling DMA2D). Single layer... what else do you need to know?? Thanks!!
I have a STM32H73G-DK developement kit and I want to interface a custom 7" touchscreen/display with it using TouchGFX to create a basic menu structure. I was able to get the display to show static images by following the guide in these youtube videos (from STMicro):https://youtu.be/yiHjOH7zJP0https://youtu.be/XnSg3UJfSFcFollowing these videos I was able to get a static image to display perfectly however I also need to get the touchscreen functionality to work as well. The development kit comes with a smaller display that uses the FT5336 touchscreen controller but my display uses the GT911. One of the steps in the first video is the comment out the touch screen "sampleTouch" code in STM32TouchController.cpp and type in "return true;" as the only code to execute there. This effectively disables the touchscreen functionality, and if you don't do it the whole project will fail and you get gibberish on the screen. Since my screen uses the GT911 I searched for d
Hello,we previously used the STM32U5G9J-DK2 discovery kit with FreeRTOS and TouchGFX (with hardware-accelerated Vector Font Rendering, etc) successfully.Now we are trying to bring up a custom STM32U5G7VJ based board. We first created the ioc File with CubeMX, configured all the pins and later on enabled FreeRTOS and TouchGFX middlewares. As far as possible, the settings from the discovery board were replicated (except we now use RGB888 instead of RGB565 and a few different LTDC and OCTOSPI settings)After opening the project template in the TouchGFX editor, a hello world screen was added.However, when building in STM32CubeIDE, the following error occurs in TouchGFX/target/generated/HardwareMJPEGDecoder.cpp: fatal error: jpeg_utils.h: No such file or directoryWhen I compared the HardwareMJPEGDecoder.cpp file between the discovery kit project and our own, I noticed it's different: The one from the discovery kit is around 5 KB larger and it has no #include <jpeg_util
I am looking into making an Avatar widget (image inside a non rectangular container).I looked at some of the the lcd.blitcopy, canvas, circles and painters and getting a bit confused where you could apply a mask to an image to only render a section of it.I am sure this would be a great addition to the shared widget.Right now, I am looking into circles and their painters to figure out the paint() and drawn() operations.
Although I have expanded an external flash storage for pictures and fonts.Due to the fact that touchgfx generates a large amount of code, the stm32h523cct6 flash is insufficient. So can I use the address for 0xc000000 flash and address for 0x8000000 flash?I attempted to burn the program separately into these two flash areas. The burning was successful, but the program was not running normally. Do I need to modify or add other configurations? Or is this operation of mine illegal?
I want to control a servo motor with the PWM and I want to have a slider on the GUI to control the position of the servo motor, So I created a TouchGFX project added the slider and the intraction to a virtual function and I generated the code I opened the project in the STM32CubeIDE folder and I configured the pin and I created a header and a source file to develop all the necessary functions to control the servo moto (ie: Init, update of frequency...) When I go back to the TouchGFX Designer to upload the code, I this error that the file is not found TouchGFX/gui/src/screen1_screen/Screen1View.cpp:4:10: fatal error: PWMSer.h: No such file or directory#include "PWMSer.h"^~~~~~~~~~compilation terminated.my question : how to properly add folders and source files to such project ? and if I am doing is the wrong way please show me the correct way to do it.
I have been using STM32N6 to conduct model training and deployment for the model zoo. Now, I want to transfer the generated code to my TouchGFX project for embedded use in the CubeIDE environment. However, when I am transferring several files, before the transfer, the original files did not have this error, but after the transfer, there is this error and it is particularly common, mostly for the official-generated code. As follows: When these files are transferred:After the transplantation was completed, an error occurred:./../../Drivers/STM32N6xx_HAL_Driver/Inc/stm32n6xx_hal.h:893:1: error: unknown type name 'HAL_StatusTypeDef'; did you mean 'HAL_TIM_StateTypeDef'?893 | HAL_StatusTypeDef HAL_SYSCFG_GetWriteQosNP1(uint32_t *pQosValue);| ^~~~~~~~~~~~~~~~~| HAL_TIM_StateTypeDef../../../Drivers/STM32N6xx_HAL_Driver/Inc/stm32n6xx_hal.h:895:1: error: unknown type name 'HAL_StatusTypeDef'; did you mean 'HAL_TIM_StateTypeDef'?895 | HAL_StatusTypeDef HAL_SYSCFG_GetReadQosNP1(uint32_
Hello, I was wondering how can I change the values of each child within a container? For example, I have a container with 4 slider widgets. I want to be able to set the values of each slider using a for loop. Below shows a very simplified example of what I'm trying to achieve within Screen1View.cpp. I want to use array iteration instead of setting each slider value manually because I'll eventually have more than 10 sliders in the container. Screen1View::Screen1View() { } void Screen1View::setupScreen() { int presets[4] = { 5, 10, 15, 20 }; for (int i; i < 4; i++) { // in the container, each of the 4 slider widgets is being set to a preset value from an array containerSliders[i].setValue(presets[i]); } } While looking into this more, I saw that containers have a forEachChild public function, but I am unsure how to use GenericCallback for this use case. If this is the way to go, can a simplified example be provided? Thanks for the help in advance!
I noticed that any example created with touchGfx for the STM32H750B-DK demo board uses the ExtMem_Boot bootLoader that uses a 400Mhz clock instead of 480Mhz, but the strangest thing is that it uses a QSPI clock of only 50Mhz, when from the memory datasheet it could reach 120Mhz.
Hello everyone,I'm currently working on a project with a custom electronic board (still in development). This project includes a 1280x400 display, driven via MIPI DSI by a processor (likely an STM32F429ZG or STM32F479ZG depending on the required pin count). Additionally, I prefer not to use an OS (so no FreeRTOS).To test the display part, I have an STM32F769I-EVAL evaluation board. Initially, I would like to generate a project, display some content using TouchGFX, and interact with it via embedded software (e.g., updating circle progress). Once this is set up, I plan to connect my custom display to the board (we have an adapter board for this).I have tried creating projects via TouchGFX and then importing them into STM32CubeIDE (as indicated on the TouchGFX site on the "Running without an RTOS on a TouchGFX Board Setup" page and in other tutorials) but without success. I also tried creating the project via STM32CubeIDE, enabling TouchGFX in the "Software Packs," and then opening it in
I started with the STM32F469I-DISCO which always places the screen in portrait mode (480x800).Is there a way to change that to landscape mode (800x480) at the start of the design process?It would be much simpler to design that way than to have to rotate it after the fact.Thanks
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.