Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hello, I am working on a Riverdi Screen RVT101HVSNWC00 using STlink2, and I am trying to display colors using touchgfx designer.This is a screenshot from my Touchgfx designer ApplicationAnd this is the output on screen:I don't understand the logic of displaying colors...I thought at first that it is read as BGR instead of RGB but it's not the case because blue is displayed as black for example and red is displayed as green instead of blue.Do you have an explanation of this behavior?Could you help me resolve this issue?Thank you !
Good evening!I'm implementing a keyboard that looks like the three mockups below (you can ignore the fourth, "Numbers Compact"). I'm manipulating the basic "Keyboard Example" provided by TouchGFX.I have implemented two keyboard layouts - `alphaLayout` and `numLayout` and I programmatically switch between the two when the ABC/123 button is pressed. I am finding myself reaching for a third layout simply so I can have different icons for the SHIFT key between the lowercase and uppercase versions: uppercase version lowercase versionThat seems silly, but I can't find any other way to change the icon on that one particular button for the unpressed state. Am I missing something?Thanks,Julia
Hi again,I'm looking to implement a character limit on a keyboard, as seen by the red 30/30 text in the screen below. In CustomKeyboard.hpp I added: /** * The buffer used to hold the ASCII representation of the key count (e.g., "5/30"). */ Unicode::UnicodeChar keyCountTextAreaBuffer[KEYCOUNTTEXTAREA_SIZE]; /** * Used to display the count of the characters entered / total allowed. */ TextAreaWithOneWildcard keyCountTextArea;And in CustomKeyboard.cpp there's some logic to add that textArea to the screen:CustomKeyboard::CustomKeyboard() : keyboard(), keyCountTextArea(), modeBtnTextArea(), enterBtnTextArea(), capslockPressed(this, &CustomKeyboard::capslockPressedHandler), backspacePressed(this, &CustomKeyboard::backspacePressedHandler), modePressed(this, &CustomKeyboard::modePressedHandler), enterPressed(this, &CustomKeyboard::enterPressedHandler), keyPressed(this, &CustomKeyboard::keyPressedHandler), alphaKeys(true), uppercaseKeys(false), f
I have a new STM32H757I-EVAL board. The examples that can programmed on it ran perfectly. I want to compile and debug the TouchGFX example myself but I only managed to kill the app that is running on it. I've created the TouchGFX example from within STMCube32IDE by selecting the evaluation board, and then the example. It builds without errors. In Debug Configuration, on Debug tab under External Loaders, I've added MT25TL01G_STM32H747I-DISCO.stldr with Enabled set to true and Initialised set to false. When I select debug, it starts to program but fails after a while. Below is the output from Console. What is wrong, and how can I fix it? STMicroelectronics ST-LINK GDB server. Version 7.10.0 Copyright (c) 2025, STMicroelectronics. All rights reserved. Starting server with the following options: Persistent Mode : Disabled Logging Level : 1 Listen Port Number : 61234 Status Refresh Delay : 15s Verbose Mode : Disabled SWD Debug : Enabled InitWhile : Enabled Info :
I am developing a TouchGFX user interface on a STM32U5G9 with a 24bit RGB LCD screen. I have developed the user interface on the STM32U5G9J-DK2 development board, where it works fine. I imported the TouchGFX project on my custom board the framework stops after the first full screen is displayed.As a test I have added a start-up screen with two colored boxes and a image in internal flash. I have configured interactions to jump to the main screen after 3 seconds. When I set a breakpoint inside model.tick(), it triggers before 25 ~30 times before it stops triggering. The other threads of the application run as intended (ThreadX). If I look at the thread list in CubeIDE, the TouchGFX thread has state ready, and it's run count stops increasing after the first frame is displayed on the screen. I compared both projects of the devboard and my projects in cubeMX, and I can't find any differences. I compared both IDE projects with winmerge, but also nothing found which could cause
Hello STM32 Community,I am using the STM32H753 microcontroller in a project with the following setup:Display: 10-inch RGB display (1280x800 resolution).External Memory: Parallel NOR flash and SDRAM.TouchGFX: For GUI development.The system is configured to use external SDRAM for the framebuffer and NOR flash for storing images and other assets.Problem:When switching screens in the GUI, the display flickers briefly. The flickering is particularly noticeable during transitions with animations or large screen changes.What I Have Tried:Double Buffering: Enabled double buffering in TouchGFX to reduce tearing and flickering.LTDC Configuration: Checked the LTDC clock settings to ensure proper synchronization.DMA2D: Verified that DMA2D operations are correctly configured for image transfers.External Memory Timing: Adjusted the timing configuration for the NOR flash and SDRAM to match the datasheet specifications.Despite these efforts, the flicker persists.Additional Information:LTDC and DMA2D:
I am trying to update a text area called textTestArea with a string and I want to be able to format the string with a newline character. Ex "I went to the store \n to buy food" I created a texts called genericText that uses a default font that has wildcard range 0x00-0xFF , I also tried having range 0x20-0x7e and wildcard character 0x0A (/n)here is the text and typography: Here is the screen with text area:in baseview.cpp it creates: textTestArea.setPosition(397, 26, 237, 55); textTestArea.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); textTestArea.setLinespacing(0); Unicode::snprintf(textTestAreaBuffer, TEXTTESTAREA_SIZE, "%s", touchgfx::TypedText(T_GENERICTEXT).getText()); textTestArea.setWildcard(textTestAreaBuffer); textTestArea.setTypedText(touchgfx::TypedText(T___SINGLEUSE_E1ZC)); add(textTestArea);So now in my view.cpp: static const uint16_t TEXTBUFFER_SIZE = 64; Unicode::UnicodeChar textBuffer[TEXTBUFFER_SIZE]; U
Post edited by ST moderator to be inline with the community rules for the code sharing. In next time please use </> button to paste your code or a script. Please read this post: How to insert source code. Hi This is something very easy that I am missing or impossible. I am using a nucleo-l476 to drive an RA8875 with a flash memory attached. This is using touch gfx to drive the RA8875 LCD. I am switching in/out of memory mapped mode to rewrite part of the flash memory so I can load different images into the flash memory and touch gfx will load the new images from the nor flash (This all works beautifully). what I am trying to do is have touch gfx load an image to a different part of the nor flash using partitioning. see linker below. MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 96K RAM2 (xrw) : ORIGIN = 0x10000000, LENGTH = 32K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K QSPI_NOR (xrw) : ORIGIN = 0x90000000, LENGTH = 8M QSPI_NOR_P (xrw) : ORIGIN = 0x9
Hello to everyone,I'm using a custom board based over STM32H743XIH6.I'm developing a project that need to use TouchGFX, FreeRTOS and LWIP over ethernet. My first goal it's to be able to PING the card while TouchGFX is running, but i'm having lot of problems (hardfoults) If I enable only TouchGFX + FreeRTOS all run wellIf I enable only LWIP + FreeRTOS I can PING the cardIf I enable all (LWIP-FREERTOS-TouchGFX) I have lot of problems (HardFAULTS).Someone could share a simple project that can use all of them?I'm using a Custom board but i could try to a NUCLEO H743ZI KIT too.Best Regards.Roberto
Hello allDo we knoiw for the example like ( https://support.touchgfx.com/docs/development/scenarios/running-graphics-from-external-ram ) but for the STM32H750B-DK board where the bigger LCD is used?Any comments are more than welcome!Best.
Hello.I try to get the nema-gfx working on a STM32H7S78-DK.But there's a bug in the NEMA library, or a bug in the ST toolchain. When I try to call the library function nema_cl_create() in my function nema_gfx_init(), according to the STM32H7RS GPU2D document (page 6), stm32h7rs-system-gpu2d.pdf the stack is overwritten with values, so the return address on stack (0x7002AEFB) is no longer available (0x00000000) and the cpu goes in hard fault. I suspect it's a bug in the NEMA library. The correct version for the H7 series was used. The error occurs with both versions: libnemagfx-float-abi-hard.a and libnemagfx.a. I looked inside the function in the disassembler, and at the end of the function, registers r0-r3 are written to the stack, but much too far! (See images) Stack bevore calling nema_cl_create. Return-adress: ok Stack after calling nema_cl_create. Return-adress: 0x00000000 Dissass. inside der nema_cl_create: overwriting behind actual stack en
a F407 developer board in hand, it don't fit to touchGFX project, No OS, think to use DMA rise color data send speed,color data in external sram be to send LCD interface, a lots of trying, lost! DMA poll amd interrupt mode had test!for guiding
Hello,I developed a product,but customer wants that if no touch detected in 10 seconds the device will go in home page. I believe that the only way is to manage STM32TouchController.cpp in the point I have higlighted Is it the best way ?Thankyou for your patience.
STM32H7S78 Software:TouchGFX Designer + STM32CubeMX + STM32CubeIDEProblems observed:- Screen flickers randomly especially during screen transitions.- UI text disappears or becomes invisible after returning to a screen.- Mixed or corrupted screens — elements from previous screen appear on the next one.- Sometimes partial or outdated frame buffer content is displayed.These issues occur consistently when navigating between screens, I attached video for your reference. TouchGFX Environment:- LTDC enabled, RGB interface, external display 7” TFT- TouchGFX task priority: Normal- TouchGFX task stack size: 4096 bytes- Running under FreeRTOSWhat I have already tried:- I have tested the following but issue still persists:- Increased TouchGFX task stack (4096 → 8192)- Ensured LTDC clocks are correct- Ensured invalidate() is called after UI updatesLooking forward to your further guidance.Best regards,Mehul Rana
Hi all, My goal is to develop a personal STM32 + TouchGFX project.I’m reaching out to you because I’ve gone through all the tutorials, YouTube videos, GitHub repositories, ChatGPT, etc., without finding a solution.I followed the tutorial ''https://www.youtube.com/watch?v=__wggrTcx_0''. It works at the end of the video,but when I reproduced it step by step exactly as shown, the result was a white screen. Let me explain:Here is my project: STM32F429I + SDRAM + FLASH N25W128 + RIVERDI RGB888 LCD with framebuffer management.My STM versions: CubeIDE 2.0 - CubeMX 6.15 - TouchGFX Designer 4.26. ST recommends starting a project with TouchGFX Designer.But since my project is custom,TouchGFX Designer does not offer a “custom” template. So how do I start my project? I therefore started with CubeMX, but after integrating TouchGFX into IDE with a background image (TouchGFX),the screen remains white. So I’m looking for a step-by-step method to successfully complete my project, namely, as a first st
Hi,I am working on a pretty simple GUI and everything is working nicely so far.As soon as I add a video I am getting a compilation error. See below. If I take the video out, everything works.Since TouchGFX needs mjpeg format, I had to convert my video file into mjpeg. The file works fine in windows. I don't know if it could be from an issue with the format or if there is an actual problem with TouchGFX itself.What do you guys recommend to generate or convert mjpeg files? Run Simulator Generate Done Generate Assets make -f simulator/gcc/Makefile assets -j8 Reading ./application.config Reading ./target.config Done Post Generate touchgfx update_project --project-file=simulator/msvs/Application.vcxproj Done Compile make -f simulator/gcc/Makefile -j8 Reading ./application.config Reading ./target.config Compiling generated/gui_generated/src/screensaver_screen/ScreensaverViewBase.cpp Compiling generated/gui_generated/src/standby_screen/StandByViewBase.cp
I am currently trying to follow the Designer Generated Code tutorial with `button1Clicked`. However, whenever I try to Run Target it says the function is not declared in the scope. I declared it in the MyView class as a public virtual function. Not sure if I am just missing something simple. If you think it is more complicated and I should add all the details for the situation, feel free to let me know. I am just thinking it is something very simple. Edit:Thank you for your reply Alexandre, I can definitely provide more information: The board I am using is the STM32F469 Discovery Kit. I am trying to implement a function called `user_button_clicked()` that is called when `button1` is clicked. Necessary code is below. Include file startup_screenView.hpp:#ifndef STARTUP_SCREENVIEW_HPP #define STARTUP_SCREENVIEW_HPP #include <gui_generated/startup_screen_screen/startup_screenViewBase.hpp> #include <gui/startup_screen_screen/startup_screenPresenter.hpp> class start
hello, I need to use both touchgfx and usb msc host with stm32h743 in my project. they work fine separately , but when I add usb to my touchgfx project it does not work(all my usb implementations are based on controllerstech video). Do I need to do any different thing when they are used together? thank you for your help.
Hi all,I would like some ideas/help with designing an interface for a large multi-level menu. I need the user to be able to get to specific information about a vehicle make, model and year. My first thought was to use a scroll list or wheel for the user to select the make. That would take the user to another screen with a scroll list/wheel with the list of models for that make. The user would select the model and that would take them to a screen with a scroll list/wheel for the different years for that model. when they selected the year, the information needed would be displayed.I had some success in doing this, but I am realizing that this method would require hundreds of screens. Is there a more elegant method of doing this? Like would having multiple layers of hidden lists and making the list visible for the models that the user selected in the make screen?To add another layer of complexity to this, the database will need to be updated every year or two. It would be good to be able
Hello All, I am using touchgfx for one of my application using on STM32757I-Eval kit.I am facing issue with running the application after successfully flashing the application, first time if I load from STM cube programmer, I can see the Program is running on display, but as I remove the Power from usb stlink and reconnect it back the Application is not loading and running.Could you please help me to understand why it happens and how can I rerun the application so that I don't have to program it again and again.Please let me know how to resolve it ? Regards,Shiv
As the subject says. searches over many hours have resulted in several different ways to do this, none of which work.The CLOSEST ive gotten to a reaction out of a textbox outsode of some event is to break the rules, and *** with the autogenerated code. All that resulted in was getting the box to change to "??" which as crazy as it sounds, progress, because I have yet to figure out what methods to call to do this seemingly simple thing.From the documentation: touchgfx::Unicode::strncpy(textArea1Buffer, "string", TEXTAREA1_SIZE); textArea1.resizeToCurrentText(); // optional, will resize the box to fit the text if it is too small textArea1.invalidate(); This does absolutely nothing. Again, from the documentation: // With int/double/UnicodeChar* touchgfx::Unicode::snprintf(textArea1Buffer,TEXTAREA1_SIZE,"My numbers %i %i", my_var_1, my_var_2 ); // With float touchgfx::Unicode::snprintfFloat(textArea1Buffer,TEXTAREA1_SIZE,"My float %f", my_var_float ); textArea1.in
Hi, In my UI project I need a vertucal boxProgress while all available backgrouds and images are horizontal while w&h are greyed out. When I create a custom background, the progress bar is not working. Same for circleProgress (size control). Can you help please.
Hi,using TouchGFX, I get the following error when I run the code.How can I fix this?Thanks***************************************************************Compiling simulator/main.cppCompiling touchgfx/framework/source/platform/driver/touch/SDL2TouchController.cppLinking build/bin/simulator.exem.AllocationBase 0x0, m.BaseAddress 0x60EA0000, m.RegionSize 0x370000, m.State 0x10000C:\Programmi2\TouchGFX\4.26.0\env\MinGW\msys\1.0\bin\rm.exe: *** Couldn't reserve space for cygwin's heap (0x60EA0000 <0x1A90000>) in child, Win32 error 0generated/simulator/gcc/Makefile:160: recipe for target 'build/bin/simulator.exe' failedmake[2]: *** [build/bin/simulator.exe] Error 1generated/simulator/gcc/Makefile:155: recipe for target 'generate_assets' failedmake[1]: *** [generate_assets] Error 2simulator/gcc/Makefile:32: recipe for target 'all' failedmake: *** [all] Error 2Failed
Hi everyone, I have an display driving issue causing some unwanted artifacts. Some context information about my platform. I'm running an STM32H7B0. My binary is stored on an external octospi (quad mode) memory (not just the resources of TouchGFX). My frame buffer is entirely in internal RAM. I have configured the LTDC to drive a 480x800 display at 16bpp. I have also enabled DMA2D with a M2M configuration. Finally, my system is running FreeRTOS as an OS. This all is set up with the CubeMX generator. The issue I am facing is that some image elements on my display seem to sometime flicker when invalidated. These elements will have some black lines through them. See attached image for the black lines though the round image objects on my display. Some points I have looked at so far: I am invalidating my cache after the generated hal performs the flushFrameBuffer. I have my MPU setup to avoid speculative accesses on my OSPI memory range. Any sugges
Hi,Using Designer 4.25, I copied a font to ./assets/fonts folder but it is not in the list"Solido Compressed W00 Bold.ttf"Name displayed by OS is "Solido Compressed W00 Bold" when open in FontForge Any idea how to make the Designer to recognise the font ? 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.