Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hello!This is written that Touchgfx widget 'Text Area' if has enabled the action 'WIDE_TEXT_WORDWRAP' then the call 'getTextWidth()' will return the width of the widest line but it returns the width of the total text area.Can you please check how to improve this?Thanks in advance!Best RegardsHafsa
Hi ! I am using MT25Q128 on LCD screen with stm32f746 and the image comes out fine.If I use MT25Q128 instead of MT25Q256 in memory, the image is not displayed.The program modification is modified for MT25Q256 in Driver->BSP->stm32746g_discovery_qspi in cubelde.Please help me if I need to modify it in touchgfx as well.
I need a dropbox list widget and can't seem to find one in the toolkit.1. Are there 3rd party vendors that offer this or other UI elements?2. Can the existing widgets be assembled to implement a dropdown list widget? If so, can you please explain the steps to a novice?Thanks,Alan
Currently the blue border masks the pixels on the edge so you cannot see what you are doing.Example:I want to be able to select and edit the widget while also seeing it completely.I also want to be able to zoom in more than 500% and the ability to see a pixel grid. It's easy to be off by one.(edit: removed section about scaling of the simulator window. Moved it to this topic: https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/feature-request-integer-scaling-for-simulator-rendering/m-p/788659#M42727)
Hi,We are trying to setup the GPIO pins for measuring TouchGFX performance. We have defined user labels to GPIO pins as instructed in TouchGFX documentation: https://support.touchgfx.com/docs/development/touchgfx-hal-development/scenarios/scenarios-measure-performance. But so far the only GPIO that is doing anything is the RENDER_TIME signal. The rest of the signals are at 0V. I verified with the debugger that the only pin that is being driven is the RENDER_TIME GPIO in the file TouchGFXGPIO.cpp in the function void GPIO::set(GPIO_ID id). This function is only called with the GPIO_ID of GPIO::RENDER_TIME.What are we missing in the configuration? We are using freertos in this system.
Dear Gfx Team,Could you please make the auto-hiding taskbar in Windows accessible (mouse hits the screen edge) when the Designer is in full-screen mode ?Thanks
Dear Gfx Team,When opening a project from 'My Recent Projects', could it behave as when [File > Open] i.e. opening it in current instance of the Designer.If user wants a new Desiner, that could be done with Ctrl+click Thank you
Dear Gfx Team,Could you please consider showing fonts in a list box instead of combo box ?Thank you.
Hello,I 've been developing one kind of product using various cpus, such as stm32xxx and various blackbox cpu.Each product has similar functions ,but a different cpu and a different GUI code, so a separate effort was required for each modification.To reduce this SW burden, we are trying to increase SW efficiency by implementing GUI side as common GUI library like touchgfx or LVGL to maintain GUI SW compatibility between products using stm32 and products using other cpus.Is there a way or guide to port a common cpu on touchgfx library?Thanks in advacne for your reply.Regards,Tiel
I've made custom simulator skin for my project. My display is 1024*600 pixels (16-bit, rgb565, landscape). Project runs fine in simulator without skin and also on target.When adding the skin the corner of the skin is at the corner of my window, so the top and left part of bezel obstructs the content.https://support.touchgfx.com/docs/development/ui-development/designer-user-guide/config-view#simulator"The X and Y properties determine the position of the simulator on the skin."I found it actually does the opposite. It moves the skin relative to the simulator. So you need negative coordinates to center the simulator.Furthermore the transparent hole in the center is not showing the content. Only at the transition of the bezel to the transparent hole can I see a line where I can make out parts of the content. I can see my desktop through the hole.I tried TouchGFX 4.23.2 and 4.24.0Creating a new project from scratch has the same problem. I created a project using STM32H735G-DK (480*272
My humble apologies, I have seen similar posts on TouchGFX errros in simulate and could not find a relevant post that worked. Using TouchGFX 4.24.2 and STM32CubeIDE. I added to my project .c and .h file and placed them in a directory of App_Support with corresponding sub-directories of Inc and Src. Application >> User >> App_Support. The necessary path was added to the project settings includes. The project will compile under STM32CubeIDE, but when I motion back to TouchGFX, though it compiles, the simulator errors: No rule to make target 'build/MINGW32_NT-6.2/../../STM32CubeIDE/Application/User/App_Support/Src/Main_Support.o', needed by 'build/bin/simulator.exe'. I have the simulator makefile modified as such:ADDITIONAL_SOURCES := ../../STM32CubeIDE/Application/User/App_Support/Src/Main_Support.cADDITIONAL_INCLUDE_PATHS := ../../STM32CubeIDE/Application/User/App_Support/IncI have even tried a variation of ADDITIONAL_SOURCES
I am working with TouchGFX Designer 4.24.2If I assign a different Scrollbar width to a scrollableContainer in Screen1view::setupScreen()after or before the command Screen1ViewBase::setup(); scrollableContainerMainMenu.setScrollbarWidt(50); scrollableContainerMainMenu.invalidate(); the scrollbar is only 50 pixels wide after you click into the ScrollableContainer.What do you have to do so that it is displayed in the correct width from the start?
Hi all,I used another display with exactly the same resolution with my display for my DK. If I change the display setup manually for different display's clock settings, I am able to display the image correctly. Is there a way for me to modify the display's related settings using TouchGFX Designer 4.24.2?Secondly, once the code is generated by the Designer. I can modify the GPIO/Peripheral/Timers using CubeMX, but once the code is generated by CubeMX, there are folder and files related to TouchGFX were deleted. I had to go back to TouchGFX and re-generated the code in order for the deleted files to reinstate.What is the correct process should I follow in order for not losing files from generated by TouchGFX Designer?Thank you so much for all of your helps.
Hello,I use tft screen with touch panel. All buttons react on the touch correct beside radioButton and toggleButton. I used "small version" of toggleButton and medium of radioButton. Screen 240x320. When both of that buttons are on the centrer of the screen it correct reacts to touch. When that buttons are on the left or on the right of screen they not react on the touch. I am sure that touch screen library works correct. Reading of touching coordinates works very well and the measurement is accurate. It looks more like the error lies more with TouchGFX.
Here is what I see as ST's idea of a TouchGfx workflow.Create a GUI project, import that project into an IDE, which in my case would be STM32CubeIDE.Click on the .project file to import into the IDE with the same name as the board. (Disregard and project name provided during the TouchGfx project creation.)Experiment with the project, jump back and forth between TouchGfx and the IDE.Throw the project away and you're on your own as to how to create a standalone GU project with STM32CubeIDE.Nice, for seeing examples but essentially useless for creating a basis for a real project. A real workflow would allow you to generate a TouchGfx project with an .ioc and a .project reflecting a name you want to use rather than the board name. I don't want to use CubeMX to manually adjust many pins and parameters in order to have the board be functional as the base for a GUI. It would provide a way of importing into the IDE, that allowed for the file structure created within TouchGfx to be
Good morning everyone, I need your help.I am developing a custom board in which I mount the STM32H7S7I8x micro and a 7-inch 1024 x 600 LCD.I have already developed the application, the graphics run correctly in the display and everything works fine.For timing issues momentarily I have only used DMA2D for the graphics part and everything works perfectly apart from some slowness in some animations or scroll of big pages.I then wanted to try adding GPU2D to see if the performance would improve, but I am having several problems.Below I am including photos of how I configured it on CubeMX.In fact I am in the situation where it is called once return HALGPU2D::beginFrame(); and then that is it, the code runs but does not give errors. It stays in “loop” in prvIdleTask. It does not flush (HALGPU2D::flushFrameBuffer(rect);) or even HALGPU2D::endFrame();I don't understand how I can move, following the example codes in Demo ST it all looks “identical”.The thing I find strange is that by enabling o
I'm working with the STM32H757 Eval board and I'm using TouchGFX.Using the designer, I created the Dice Animation demo project and got it running on the board.I then duplicated this project and hooked it into our code ecosystem (we use Visual Studios with VisualGDB instead of CubeIDE and have numerous platform submodules that we incorporate into our system). All of that is working. I even have the two environments cross building with each other. Visual Studios will call the TouchGFX makefile and generate assets and build all the UI elements, and then incorporate those files into our build system on our platform. I can then program the board from Visual Studios and it will program the external QSPI flash with the UI data and the Dice Animation program will boot up. I even have it working the other way so that from the TouchGFX Designer when you hit program, it will go out and call the Visual Studios make and build the system that way and then program the bo
Hello , i am using STM32h750B-dk . i took compass image (PNG file) as texture mapper and i want to rotate the compass image according to BNO055 sensor which is magnetometer. this is connected through I2C4 (for I2C4 , STmod+ is used). i have share the codes. Thank you!#Model.cpp:#include <gui/model/Model.hpp> #include <gui/model/ModelListener.hpp> #include <cstdint> #include "stm32h7xx_hal.h" #include <math.h> #define BNO055_I2C_ADDR (0x28 << 1) // Shifted for STM32 HAL #define BNO055_MAG_DATA_X_LSB_ADDR 0x0E extern I2C_HandleTypeDef hi2c4; Model::Model() : modelListener(0) { } void Model::tick() { static uint32_t lastUpdateTime = 0; uint32_t currentTime = HAL_GetTick(); if ((currentTime - lastUpdateTime) >= 1000) // Check if 1 second has passed { lastUpdateTime = currentTime; if (modelListener) { int heading = getHeading(); modelListener->updateHeading(heading); } } } int Model::getHeading() { uint8_t buffer[6]; int1
Hello!!iam trying to read a bin file of my touchgfx project which has along with bootloader code in it. while when we generate the bin the linker script is genarate along with bootloader code.but here i need a only a bin which has application data which will starts from 0x90000000. how can i do this why i need? i need this becouse i wrote my custom bootloader which will read the data using usb and write it in starting address of 0x90000000 and after successfully written then my code jump from the starting address.i have tried removing below parameters from project:BOOTLOADER (xrw) : ORIGIN = 0x08000000, LENGTH = 128kTARGET(binary) /* specify the file format of binary file */INPUT (../../ExtMem_Boot/bootloader.bin) /* bootloader bin file path (relative to the output folder)*/OUTPUT_FORMAT(default) /* restore the out file format */ .bootloader :{. = ALIGN(4);KEEP(../../ExtMem_Boot/bootloader.bin)} > BOOTLOADERafter that build it and i flashed it in my board using my cus
When I touch left side of the button carefully, it shows X coordinate as 592 (Debug "X") but it should have been 614 (TouchGFX "X"). In similar manner, when I touch top side of the button carefully, it shows Y coordinate as 397 (Debug "Y") but it should have been 377 (TouchGFX "Y"). Where does this coordinate difference come from between real application and TouchGFX Designer? Might there be any offset? If yes, is there any solution for this? FT5x06 touch controller is being used on my custom PCB but I am using FT5336 driver that is published by ST for stm32f746g-disco dev-board. So... Using FT5336 driver in FT5x06 ic might be a problem? Display dimensions 800x480. Thank you!
Hi everybody,I have some problems with my project : the function STM32TouchController::sampleTouch(int32_t& x, int32_t& y) is called only the first pressure.What is the reason? I'm using Touchgfx 20 with a 480x320 SPI display: graphic is designing correctly but I don't now the cause of touch system blocking.Is there a problem with graphic design methd? Maybe something wrong can block touch functions?Has someone some tips?thanks
I am using TouchGFX Designer (version 4.24.1).I am wanting to stroll a Text Area across the screen. I can do this with the MoveAnimator selected as long as the text width is less than the screen width. When I attempt to scroll text than is wider than the LCD screen width, then anything wider than the screen is lost.The scrolling code being used is as follows: txtCalibDetails.clearMoveAnimationEndedAction(); txtCalibDetails.startMoveAnimation(240, 299, 480, touchgfx::EasingEquations::linearEaseNone, touchgfx::EasingEquations::linearEaseOut);Please note regarding the x and y values (240, 299): I've created the screen in TouchGFX Designer upside down so that I can have then screen rotated by 180 degrees on the LCD without further processing.How can I scroll text that is wider than the screen width?Thanks
Dear Gfx Team1. Could you consider adding a 'Refresh' button to the Typography ?With GfxDesigner open, when I copy a font to ./assets/fonts, the font is not recognized in Typography. Close/Open of GfxDesigner is necessary.2. Could you make slider bigger and more visible please ?3. Could you add a text field showing an example of the font?4. Could you make the dropdown list searchable so that typing filters the items containing the typed text?Thank you
I need suggestion to implement continous sine wave sound and drive spi based screen. I use DMAs for both operations. However, sound is interrupted while playing. To sync screen I am using 60hz timer interrupt. To create continous sine wave, I create a freertos task and when dma is completed, I send next buffer. Circular dma was not satisfied me. Should I use MDMA or enabling dma synchorozation events? Any suggestion will make me happy. Best regards
Hi all, here with another question:My coworkers and I are looking at the performance of our GUI, to better understand what's going on under the hood. We followed the steps in the Performance Measurement doc and found our system to behave differently than I expected.We have a number of screens and we cycle through them every 3 seconds. I thought that the frame would be updated every VSYNC - no matter what - whether there's new frames to display or not. It seems that it's smart and only conveys information on a change. You can see this in the capture below.This is confirmed to be the case because if we disconnect and reconnect the display, it'll display nothing until we actively change the screen. This isn't something we anticipate doing so it doesn't matter that much, I'm simply surprised that updates don't happen on every VSYNC.Could anyone provide any more insight on this, please?Thanks,Julia
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.