Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
We wish to always improve our documentation. The best reviews and critics always come from the people that read it, so we would like to use this post to collect your thoughts and feedbacks. Please share what you like, dislike, what you think is missing, etc ... /The TouchGFX team
TouchGFX 4.26.1 is now out. Please follow this link to download it.This version is a patch release and includes bugfixes of issues seen on TouchGFX Designer 4.26.1 version, as well as adding support of the new STM32H5F5 and Chrom-ART 2.Please visit our dedicated website for STM32H5 graphics to know more about high performance graphics on our most powerful Cortex-M33 MCU. Release details: Release date: March 2nd, 2026 New TouchGFX Designer Features Allow selecting a CMakeLists.txt file as the project file without requiring a STM32CubeMX .ioc file. Bugfixes in TouchGFX Designer Fix caching issue when changing text configurations and re-generating code. Fix outdated timestamp on files when importing a GUI. Fix faulty code generation when a Shape widget has two identical end points. Fix faulty code generation when a Shape widget uses an "interaction ended" callback. New TouchGFX Generator Features Support for STM32H5F5/E5 and STM32H5F4/E4 series with the
When creating a UI project, you may need widgets that are not part of the TouchGFX library. To create your own graphical element, the TouchGFX team suggests using the Custom Container approach. Since TouchGFX 4.20 it is possible to export and import Custom Containers into different projects. The TouchGFX team is working on developing new custom containers that could be useful for our own projects. You will find them under this post. The first widget is a keyboard. We hope that the idea will please you and that it will be useful for your projects ;)! We invite you to do the same. In the guide attached you will learn how to create your own widgets and how to export them. We wish to create a space where the community can find and share custom widgets. To keep this space a good place for collaboration between all of us, we invite you to share your project in a zip format which includes you widget (.tpkg) and a short document explaining your widget. Your post needs
I want to get the scroll position of a ScrollList widget in the view, and also set the scroll position in the view.However, the `setOffset` and `getOffset` functions of `ScrollBase` are protected.How can I get and set the scroll position of a scrolllist?
I am trying to use touchgfx and gfxmmu on H7R7 with a round lcd panel,but failed. So ,Is there a demo of this kind?
I would like to learn TouchGFX development using the STM32H7S78-DK board. Could you please guide me on the recommended way to get started? any example?
HelloI’m using TouchGFX 4.26.0 on a STM32H747 and want to use RGB compression of the bitmaps to get the size of the firmware image smaller. To prevent performance loss, all bitmaps are loaded into the cache at startup. I have enough free SDRAM for the cache, so this is the easiest method and doesn’t require manual maintenance when adding / removing bitmaps to the project.Because the displays native orientation differs from the application orientation, image rotation is set to 90° by default.The code to load the bitmaps is shown below. This function is called at the end of TouchGFXHAL::initialize()void loadAllBitmapsIntoCache(){ const uint16_t totalBitmaps = BitmapDatabase::getInstanceSize(); for (uint16_t id = 0; id < totalBitmaps; ++id) { touchgfx::Bitmap bmp { id }; auto format = bmp.getFormat(); bool ok; if (format == touchgfx::Bitmap::BitmapFormat::COMPRESSED_RGB565 || format == touchgfx::Bitmap::BitmapFormat::COMPRESSED_ARGB8888 ) { ok = touchgfx::Bitmap::decompressR
The above Logic analyzer and debugger show a correct touch register If the simple GT911 library is used in bare bone STM32F429 but when the Code is integrated with the touchgfx and freertos of the sample STM32F429ZI Disco board then the I2C seems to get stuck and no I@C Communication happens as shown below. Touchgfx and Freertos integration This is the initial power on this is zoomed view of packet 1zoomed view of packet 2After this the interrupt is generated periodically and I2C Communication halts indefinitelyBare Bone Codehave been attached and the Touchgfx freertos main.c/* USER CODE BEGIN Header *//** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics. * All rights reserved.</center></h2> * * This so
I’ve implemented a sort of dynamic menu where there are 6 positions and you can resize the menu item to become 2x1 or 1x2 (see screenshot for a better understanding)It is achieved by a custom widget class built on top of ShapeThe elements can be dragged and moved around and I’m using handleDragEvent to achive that. When dragging around there’s a method that re-position the element to avoid overlapping.For some reason, sometimes, not always, when the elements are moved automatically around, some strange artifacts. Is there a reason for that; where should I watch?(at the moment I’m only using the simulator)artifactshow it should render
Hi,I am using STM32H747I-DISCO with MB1166-A09 (NT35510) and Zephyr + LVGL with MIPI DSI Video Mode.I am facing a diagonal/slanted tearing line when the display is configured in landscape mode.Portrait mode: works correctly Landscape mode: diagonal/slanted tearing appears during screen updates Hardware: STM32H747I-DISCO + MB1166-A09 / NT35510 Software: Zephyr + LVGL PROI have found several related discussions about this issue, but I haven't found a clear solution for landscape DSI Video Mode.Is this a known limitation/issue with the display/DSI configuration? Is there a recommended solution for running this display reliably in landscape Video Mode?Any guidance from ST or anyone who has solved this would be greatly appreciated.
In official schematic MB1248 Rev-04 on SDRAM page:SDNE Connected to MCU pin PH6,SDNWE to PH5,SDCKE to PH7,When I create prject using TouchGFX template and open .ioc file in CubeMX or open SDRAM driver in CubeIDE the pins are connected as follows:SDNE to PB6SDNWE to PC0SDCKE to PB5My question is which is correct: Schematic or Code/.ioc file?
I am struggling to get TouchGFX running on my custom board. The processor is the STM32H7A3RGT and I am driving a 320 pixel x 960 pixel LCD display. I have allocated a frame buffer in internal RAM and have LTDC producing PCLK, DE, VSYNC and HSYNC. I have configured my firmware using CubeMX to use FreeRTOS. I added a call to MX_TouchGFX_Process in my default task but it gets stuck on an assert. Specifically here:Call StackThe reason it gets stuck is because pxQueue->ixItemSize is not zero !ASSERT in xQueueSemaphoreTakeWhat am I missing ?Andy
My MCU is H7R7, the image type in touchgfx designer only have RGB565 and ARGB8888, no L8 type.Framework features can not be changed.What is wrong with that?
You can currently set tick rate using setVsyncInterval().I want to be able to get the tickrate using getVsyncInterval(). This would make timing things in the gui easier (blinking cursor, animation speed, boot logo, etc.). I made a topic about this earlier, but it got closed.
Dear community, I’m sharing an application that has been highly requested recently: a demo running TouchGFX on the STM32N6570-DK with a camera module.Please note that this demo is NOT yet finalized. We plan to significantly enhance it over the coming weeks, and once it is ready, it will be directly available in TouchGFX Designer as a board-specific demo (under the Demo tab).In the meantime, since there has been strong demand, here is an early draft that you can already use and draw inspiration from.Another note, we’ll provide only limited support for any questions about this draft, as we are aware of the application’s limitations and are working on a much better version. Again, this demo is not final and does not reflect the quality of an official demo.The project works with TouchGFX 4.25.0 and with STM32CubeIDE. We advise NOT to regenerate code from STM32CubeMX (because there is a limitation here). You can use the flashing scripts provided in the project to flash your board.
Hi ,I'm developing a product on an STM32N6 using TouchGFX. I need to display the image coming from the camera input on the product on the TouchGFX. During our tests, we were able to directly print the image from the DCMI input to the screen and it worked. However, we need an example that takes this image and displays it on the TouchGFX. The AI example prepared for the N6 actually includes this type of work, but the code is not accessible. Could you please share the relevant project or the relevant part so I can integrate it into my project, or could you provide an example project for this?
Hello ST Team,I am working with the STM32N6570-DK board and trying to display the live camera feed on a TouchGFX application.I cannot find any ready-to-use example that integrates DCMIPP (Camera) and TouchGFX.Current Situation:TouchGFX Designer: I have created a UI with a transparent area in the center (Alpha = 0) to display the camera feed. (Please see the attached screenshot).Cube IDE Firmware: I found the DCMIPP_ContinuousMode example and confirmed that it works fine independently. However, merging it into a TouchGFX project manually is quite difficult for me.My Question:Is there a simple, official example or Application Note demonstrating Camera Preview (maybe on Layer 0) + TouchGFX UI (maybe on Layer 1) for the STM32N6570-DK?Since I am new to the STM32N6 series, a detailed, step-by-step explanation would be very helpful.I would appreciate a quick guide or a GitHub link.Thanks.
I have a scroll list lightSoundSelectorScroll made by several items from the container lightSoundItem. In the view I call lightSoundSelectorScroll.setVisible(false); or lightSoundSelectorScroll.setVisible(true); but, when calling this->isVisible() inside void lightSoundItem::handleTickEvent() I always have true even if I called lightSoundSelectorScroll.setVisible(false); before Why is that?
This account only shares restored community content posted by members between May 22 and June 9, 2026, who did not register for the new community.Is there a function to get the currently set ID in the SVGImage widget?
Hey I came across this thread: Rotate text at any angle, where @Romain DIELEMAN mentioned a custom widget called TextArc (TextArc.cpp/hpp) demonstrating arbitrary text rotation.Unfortunately, the original demo files/links seem to be missing or broken. Does anyone still have a copy of this TextArc widget, or can ST re-upload the sample project?If this demo is no longer available or compatible with recent TouchGFX versions, what is the recommended approach to render/rotate text at arbitrary angles today?Thanks in advance!
I made a custom board with STM32H7S7 , Touchgfx without OS, 2 framebuffers in psram(aps256xxn). At first ,after startthe debugging ,the display is normal,but after a while (random time),display is freezing. Then I pause the program,I foundit stuck at nema_wait_irq_cl. This is my screen:This is information when stuck:This project is a test project,the touchgfx code is simply rotate textureMapper1 and move red box on each frame
In TouchGFX/target/generated/OSWrappers.cpp at row 38 & 39 the lines : static TX_SEMAPHORE frame_buffer_sem = { 0 };static TX_QUEUE vsync_q = { 0 };will produce a GCC compiler error when the compiler settings are set at -Werror. error: missing initializer for member 'TX_SEMAPHORE_STRUCT::tx_semaphore_name' [-Werror=missing-field-initializers]Compiled with these relevant flagsarm-none-eabi-g++ "../TouchGFX/target/generated/OSWrappers.cpp" -mcpu=cortex-m7 -std=gnu++17 -g3 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -Wextra -Werror
I want to make the CustomScrollTimeTextCenter fully visible, without being cut off by anything else, and without leaving any extra gaps.But it's this kind of effect, I've tried adjusting all sorts of parameters, and I still can't get the effect I want.I want this kind of effect:Here's an introduction to the problem:I have two custom components of different heightsCustomScrollTimeTextCenter 70CustomScrollTimeText 44
Hello ST Community,I would like to share an improvement I made to one of my TouchGFX projects.BackgroundMy previous implementation used a login screen to demonstrate an on-screen keyboard. The login screen was created only as an example application to showcase the keyboard and its functionality.To provide a more familiar user experience, I also implemented features that are commonly found in modern desktop and web applications, including: Custom on-screen keyboard Password input field Show/Hide Password button Password masking User authentication flow Although these features worked well for the login example, the keyboard implementation was tightly coupled with the screen.The ProblemThe original custom container included: Keyboard Text area Input buffer Buttons Password controls Whenever the custom container was added to another screen, all of these UI elements were created together.This reduced flexibility because many applications only need the keyboard while using th
Hello everyone,I'm trying to interface a Waveshare 4.0" TFT Touch Shield (SKU13587) with an ILI9486 LCD controller using an STM32F767ZI.The display communicates over SPI, and the SPI bus is shared with the XPT2046 touch controller. At this stage I am testing only the LCD. The touchscreen is completely disabled and is not accessed by the software.HardwareMCU: STM32F767ZI Display: Waveshare 4.0" TFT Touch Shield (SKU13587) LCD Controller: ILI9486 Touch Controller: XPT2046 (not used during testing) Interface: SPI Current statusI wrote my own low-level ILI9486 driver.The following basic operations work correctly:LCD initialization Setting an address window Writing commands Writing data Drawing a single pixelA single pixel is always drawn at the correct position.ProblemThe problem appears only when I draw a filled rectangle (or any larger filled area).The rectangle itself is drawn correctly, but additional unwanted pixels appear beside the rectangle.The artifacts have some interesting cha
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.