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 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
environmentSTM32H743IIT6 FK743M2-IIT6SRAM IS42S16160J External 16-bit 32M byte SDRAMExternal QSPI driver W25Q64LCD 4.3” RGB043M2-800*480*VI1.2 I have 2 problems with this module if I write a line on line y = 0 ok but if y = 10 see wrong lcd output with many pixels blink if I use the DMA to write on lcd no output If I use 0x24000000 instead of 0xC0000000 like FRAMEBUFFER_ADDRESS both lines are ok but the 0x24000000 address cannot be used to fill oll the 800x480 lcb areaConsider that this BSP_LCD_Clear() is able to fill alll the lcd area without problems. void BSP_LCD_Clear(uint32_t Color){ uint32_t index = 0; // Estrae i componenti R, G, B dal colore a 32-bit uint8_t r = (Color >> 16) & 0xFF; uint8_t g = (Color >> 8) & 0xFF; uint8_t b = Color & 0xFF; // Converte in RGB565 (16-bit) uint16_t color16 = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); volatile uint16_t *pFB = (uint16_t *)0xC0000000; for(
Hi, I have a lot of SVG files in my project, so much so that I had to move them to my external flash. Now, I know I can move SVG files to external flash by adding a section to my linker script: ExtFlashSection : { */SVGDatabase.o(.rodata.*) } >EXT_FLASHHowever it would be simpler to simply set this in TouchGFX Designer itself just like I can choose the location of PNGs.As seen in the image below. I can select a Section for PNGs, but not for SVGs.Is this something that can/will be added to TouchGFX in the future?
Hi,I am trying to flash my STM32U5G9J-DK2 via TouchGFX Run Target button. The mk file returns this error:* STM32CubeProgrammer is not found. Make sure the STM32CubeProgrammer is installed in its default directory. ** You can download it at https://www.st.com/en/development-tools/stm32cubeprog.html * I am 100% sure that STM32CubeProgrammer is installed at the right directory that is required by the mk file.The problem happens even when trying to flash an exemple app after selecting the right demo board in TouchGFX Designer.Anyone encountered this issue?
Hi,We are currently facing serious supply shortage issues with the MX66LM1G45GXDI00 flash memory.As a potential solution, I am considering modifying the design to use an external Quad-SPI flash memory instead of the current Octo-SPI flash.My understanding is that this change may require us to develop or modify the following:Quad-SPI flash drivers for the STM32U5G9 Flash initialization and memory-mapped access configuration Programming/firmware download utilities Production programming support Bootloader and/or application changes, if required TouchGFX/external-memory configuration, if applicableCould you please let us know whether suitable Quad-SPI flash drivers, BSP components, or programming utilities are already available that we could leverage, particularly for the STM32U5G9?I would also appreciate your comments on the key challenges and any guidelines or recommendations you may have for this development effort. In particular, I would like to understand the potential impact on memo
Hi, I am new to TouchGFX Designer and I saw the previous reply in 2023 mentioning that the team was internally discussing the possibility of importing Figma UI designs into TouchGFX Designer.Is there a way to import Figma UI Design to TouchGFX Designer? May I ask if there has been any update or progress on this feature since then?In addition to the Figma import question, I would also like to ask whether TouchGFX Designer currently provides any form of plugin or extension support.Specifically, is there a way to add a custom entry in the Designer menu or integrate a custom code-generation workflow into the tool? Thanks in advance for any information.
The problem described in https://community.st.com/stm32-mcus-touchgfx-and-gui-33/duplicit-include-paths-are-added-to-keil-project-when-touchgfx-project-is-regenerated-151799 ist still there. The topic was closed a year ago and it seems that nothing happened since then.Please provide a solution!
Hello,I am getting a hard fault while trying to integrate TouchGFX into a Zephyr application.The application is secure-only and the screen design is very simple: it contains a single screen with one box. When I debug the application, the hard fault occurs in the touchgfx::Application constructor (so I cannot debug), which is called indirectly through:FrontendHeap& heap = FrontendHeap::getInstance();I have already tried increasing the following Zephyr configuration values (CONFIG_MAIN_STACK_SIZE and CONFIG_HEAP_MEM_POOL_SIZE).CRC is enabled. DMA2D is disabled for now — the “Use DMA2D Accelerator” option is set to No in the X-CUBE-TOUCHGFX package, to keep the setup simple and eliminate one possible source of issues.The framebuffers are aligned and placed across AXISRAM3, AXISRAM4, and AXISRAM5The setup is as custom board with:MCU: STM32N65XXZephyr version: 4.4TouchGFX version: 4.26.1Zephyr SDK: 1.0.1I would appreciate any help, suggestions, or debugging directions.Thanks in advance.
Hi ST Community,We are using the hardware CRC peripheral in our project for CRC computation.During system initialization, we initialize and configure the CRC peripheral ourselves. However, we observed that after calling MX_TouchGFX_PreOSInit(), the CRC peripheral appears to be re-initialized.We would like to understand how TouchGFX uses the CRC peripheral internally.Specifically:Does TouchGFX use the hardware CRC peripheral only during the MX_TouchGFX_PreOSInit() phase? Is the CRC peripheral used by TouchGFX during frame rendering or while processing/displaying frames? Are there any other TouchGFX phases, functions, or background operations where the CRC peripheral may be accessed? If both TouchGFX and our application use the same hardware CRC peripheral, could sharing the peripheral cause any issues?Our concern is that our application relies on a specific CRC configuration, and we want to ensure that TouchGFX does not modify or reconfigure the CRC peripheral after our initialization,
Greetings.I'm a Linux user, I use Windows on a smaller notebook for tools like TouchGFX, but this is quite inconvenient.Is there any plan to release a Linux version of TouchGFX Designer?I saw in the documentation that there's a simulator and that it can even be used with Wine; I'll test it today, but it would be really good to have a native version.Link where I saw information about the simulator: https://support.touchgfx.com/docs/introduction/prerequisitesthanks
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 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 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?
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?
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.