Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I usually use a Mac, but don't hold that against me.First, no Mac support. You're making me fire up windows, TouchGFX better be good. Fine, move on.I've gone through the videos and created a few screens and have them running updating values, buttons working, so I'm not a COMPLETE noob, just going through the motions to figure out what a noob might run into.Create a new project in TouchGFX Designer for STM32F429i-DISC1, call it fu429Disco for a 429 discovery board. Rotate the display by 90 degrees. Generate code and save. (I put 'fu' at the beginning of project names that are throwaway and okay to delete without thinking)Go into CubeIDE, <File><Open Projects from File System...>. Search around for my project. Go back into Designer and find out that the project was stored in a directory in c:\ instead of my home directory. Why? That's an odd decision, isn't Windows a multi-user OS? Aren't you supposed to keep your files out of the root directory? That was a rule 20 years ago.
So I've been messing with TouchGFX for a while now using the designer to construct the various GUI portions on my application. However I am now at a point that I need to add additional C++ classes to my project and I am having a hard time figuring out how to make them part of the TouchGFX project.I have a STM32CubeIDE project named "Project" inside of which I have the "TouchGFX" folder that was generated when I configured the project for my target. I can successfully build and run my TouchGFX application on the target. Additionally I can also run the application using the simulator with out any issues.I have added a new folder inside the "TouchGFX" folder called "additional" that contains a "src" and "include" folder for header and source files that I need to be included in the project (note the "src" and "include" folders also have sub folders in the to organize my files).How can I make this "additional" folder and all its contents part of the project so they are compiled when I build
How can I scale buttoms and sliders at TouchGFX 4.20?I am using it to code an app for the STM32F746G-DISCO and I want to resize buttoms and sliders.Is it possible?
Hello, Normally when i have to handle clicks or drags on a screen I just check where the clickEvent happens and if it has happened in the scroll with buttons inside it i cancel the event if its a scroll and do list.handleClick/Drag/Gesture event and if the click was somewhere else (sliders, buttons...) i do ScreenViewBase::handleClick/Drag/Gesture event.But now I have this situation inside a container that at least to my knowledge if do CustomContainerBase::handleClick/Drag/Gesture event it doesn't make it's buttons or sliders handle it, So my idea was to (from the screen class) redirect all the clicks directly to ScreenViewBase and if my container was visible redirect all drag/gestures to the container, This almost works, the button clicks and the drags of the list in the container work fine but the slider doesn't work, as it also needs the drag/gestureEvent I redirect to the list, i tried the following in my container code but the drag is done much lower tha
I have a scrollwheel with cicular function working on my screen. The list is variable depending on how many pages are required on the screen. At the moment I have 3 numbers exposed to show the next and previous pages in the list. This creates 5 drawables in the Base file. If I have less than 5 pages in the list I get gaps in the list (ie Page 1, 2, 3, , ,).I could load in the spaces with the next number but then that makes it illogical because it will then end up 1,2,3,1,2. Can I reduce the number of drawables or is there a way to fill the gaps to keep it logically moving continuously
I tried adding it to wildcard characters but it always displays Fallback character "?". If I try to copy “⌫” to wildcard ranges i get a warrning "unexpected character ⌫". I want to display this as a character and not as an image. Is this achivable?
I create interfaces using the TouchGFX application and export them to CubeIDE. However, when attempting to upload the file to the microcontroller, an error occurs, even though the TouchGFX application can upload files successfully.
https://support.touchgfx.com/docs/development/ui-development/touchgfx-engine-features/mixinsHi, I used the documentation here and attempted to get the problem from the title working, but the issue seems to be the clickHandler is not registering the click. I think this is because the container on which I set the ClickListener on is comprised of a flex button, which has its own click interaciton. Is there any way to fix this? I set the clickListener from the screen page, not the container page. void Formulas1View::formulaClickHandler(const Formula& f, const ClickEvent& evt){if (&f == &formula1){Unicode::UnicodeChar* formulaName = formula1.getFormulaName();presenter->setEditingFormula(formulaName);}}I ran breakpoints and realized on the button click this was never being hit.
The following sequence leads to invalid code being generated:1. start a new project in TouchGFX (simulator or board)2. add a custom container3. add a static graph element named 'graph' inside the custom container4. generate code - code is fine and compiles good both in simulator and target5. close TouchGFX and re-open the project6. generate code without any modificationGenerated code is buggy both in CustomContainer1Base.hpp and CustomContainer1Base.cpp: the string "graphLine1" is missing anywhere in code.7. delete 'Line' element from graph8. add a 'Line' element on graph9. generate code - code is good again TouchGFX v.4.24.1 Not a blocking bug (I can revert generated code from git), but it is annoying...Alessandro
Hello,It's quite easy to manipulate the CLUT for an L8 uncompressed Bitmap but how could we find the CLUT entries when the Bitmap is compressed with either RLE or LZW methods?When looking at the .cpp generated for such an image around the extra_data definition, the extra data starts with a 4 bytes header giving the format (here 0x00,0x03 for an LZW compressed image) then the CLUT size (0x100 or 256 entries) ... BUT ... the following bytes are not the CLUT but, I guess, some dictionary entries for the LZW encoder... the actual CLUT is at the end of the extra_data section ... but there is no obvious mean to know where the CLUt starts ... LOCATION_PRAGMA("ExtFlashSection")KEEP extern const unsigned char image_worldmap_extra_data[] LOCATION_ATTRIBUTE("ExtFlashSection") = { // 256 ARGB8888 CLUT entries.0x00, 0x03, 0x00, 0x01,0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x32,.....0x00, 0x00, 0x3a, 0xa2,0x00, 0x00, 0x3a, 0xd4,0xf8, 0xfc, 0xf8, 0x00, 0xf8, 0xfc, 0xf8, 0x04, 0xf8, 0xfc, 0xf8,
HiMy project is using an alientek 4.3 inch TFTLCD screen, which is driven by FMC (Flexible Memory Controller).And ,The display effect of the button control does not meet my expectations after I load it.“next text”is my button,that there are many horizontal dots or speckles inside。thank you
Hi, I am using the STM32H757-EVAL kit and TouchGFX with IAR Workbench. I have opened up the STMH747-EVAL kit project within TouchGFX and used it successfully with the DSI LCD. I however need to use a parallel RGB LCD for my needs. I have created a converter cable to interface the RGB LCD to the EVAL kit. I have modified the code to use the LTDC peripheral and can control the RGB LCD (turn it on, change background color etc). However when I use it with TouchGFX I encounter issues:Open project in TouchGFX and create background color (Yello) and a simple text box.Run Target with DSI LCD installed on EVAL kit.EVAL kit runs ok.Replace DSI LCD with RGB LCD on EVAL kit.Program modified code (IAR) using STProgrammer onto EVAL kit.At this stage the RGB LCD shows the background screen and text box exactly as shown on TouchGFX. If I reset the EVAL kit (using boards' reset button) the screen comes back. However if I unplug and plug back in the power cord to the EVAL kit, the screen doesn't show (L
HI Team,I am working on project, in which we used touchGFX based UI animation. there is one requirement, that we need to run animation on screen just using HAL_ LCD calls but not any touchGFX .It might be confusing, but I will try my best to explain this. we have default task in which GRAPHICS_MainTask is running. there is one requirement that in one point of time we have to stop showing screens running by GRAPHICS_MainTask and render the animation the one we have manually created by taking array of RGB values and sending it to LCD using HAL function. once particular events happen, again we have to revert back to animation from GRAPHICS_MainTask. could you please help me to do this more efficient way? Thanks in Advance.
Dear STMicroelectronics Support Team,I am currently working on a project using an STM32 microcontroller where I need to display a 12-lead ECG waveform. The display layout is configured in a 3x4 grid format, along with an R-1 waveform shrink. I have implemented an RTOS for managing the GUI rendering and data handling efficiently.For the GUI, I am using the TouchGFX framework and have integrated dynamic graphs to plot the 12-lead ECG waveforms in real-time. The ECG module communicates with the STM32 via UART using interrupts to handle data reception.However, I am facing issues with accurately plotting the ECG waveforms on the screen. The waveform representation seems to shrink or misalign, particularly in the R-1 section. Despite configuring tasks with adequate priorities and stack sizes for the GUI and ECG data, and ensuring the refresh rate is set to 4 ms, I am unable to achieve a stable display.Could you please provide guidance on optimizing the dynamic graph display using TouchGFX or
I have W95Q64 flash memory and STM32F429 custom board. I want to load Touhgfx files to external flash memory. For this purpose, firstly I added below declarations into FLASH.id file as;SPIFLASH (r) : ORIGIN = 0x9000000, LENGTH = 8MandExtFlashSection : { *(ExtFlashSection ExtFlashSection.*) *(.gnu.linkonce.r.*) . = ALIGN(0x4); } >SPIFLASH FontFlashSection : { *(FontFlashSection FontFlashSection.*) *(.gnu.linkonce.r.*) . = ALIGN(0x4); } >SPIFLASH TextFlashSection : { *(TextFlashSection TextFlashSection.*) *(.gnu.linkonce.r.*) . = ALIGN(0x4); } >SPIFLASHafter compilation in CubeIde, the memory is created as shown below;My problem is that I dont know how to download all those files to my board. As far as I know, I need to use external loader in debugger section but there is no convenient option in the tab which is exactly match with my configuration.it will be appreciated if someone explain what to do additionally and explain all procedures step by step.N
I am using STM32h747 MCU, CubeIDE my question: My controller is dual core, So .cproject file is created inside each core folder. So for touchgfx i have to copy .cproject from inside CM7 to outside, otherwise touchgfx is not able to find. Is there any other way ? Related to https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/touchgfx-issues-with-dual-core/td-p/727642
I am using STM32h747 board, CubeIDE Is FreeRTOS mandatory for touchgfx? Can we use touchgfx withous RTOS?
I am currently experiencing issues with the TouchGFX tool, as there is no option to select the RVT121HVLNWC00-B (STM32H757X) controller. Could you please provide some details regarding the interfacing of this controller with the display? Actually I'm having STM32H747x demo projects but it doesn't work.
Dear Gfx Team,GfxDesigner generates header files with line "using namespace touchgfx;"Code still compiles without it. Could these be removed ? Thanks
I’m working on drawing a .bmp image (480x800) during the bootup screen. Initially, I used the GUI_DrawPixel() function, but it resulted in a significant delay. To improve performance, I tried switching to GUI_BMP_Draw()andGUI_BMP_DrawEx() functions with the following code. However, the function returns 1, and the image is not being drawn.Has anyone encountered this issue or can provide guidance on why GUI_BMP_DrawEx() might be failing and how to resolve it?Thank you in advance for your help!code: static void _ShowBMP(const TCHAR* sFilename){int XSize, YSize, XPos, YPos, result;FIL hFile;FRESULT res;res = f_open(&hFile, sFilename, (FA_READ | FA_OPEN_EXISTING));//GUI_GET_DATA_FUNC *funcPtr = _GetData;if (res == FR_OK){GUI_ClearRect(0, 0, 480, 800);//XSize = GUI_BMP_GetXSizeEx(funcPtr, (void *)&hFile);XSize = GUI_BMP_GetXSizeEx((GUI_GET_DATA_FUNC*)_GetData, (void *)&hFile);YSize = GUI_BMP_GetYSizeEx((GUI_GET_DATA_FUNC*)_GetData, (void *)&hFile);XPos = (XSize >
i have created a user interface using touchgfx when i go to the second page sine wave has to be generated and parallelly display has to work is it possible to do this using controller or should i go for mpu
Hello,I got a screen including 4 text areas with wild card and a 4 flex buttons on top. Clicking a flex button trigger a keyboard that allows to change the content of the corresponding text area.When any flex button is clicked, I manage to identify which button is clicked thanks to an action defined (area_clicked) that is fed with the ident number (value) of the button. This value is manually defined for each button.I got a lot of code for a given couple (text area)&(flex button) that looks generic so I decided to give try defining a corresponding custom container until I bumped into the problem of the said value.Does a variable or symbol exist that would define the future number of the instance of my custom container which could be used in the container definition ?Thanks for help.
Hi,We built a custom board using STM32L4R9AI MCU. The board contains a display with following specificationDisplay driver: RM69330Connection Interface: MIPI DSIDisplay Size: 454x454We can initialize the display properly because the all pixel can be turned on.When we tried to integrate the display with TouchGFX 4.23.2, we have faced some issues. I have attached here the pictures of what we want to display and what we are getting. Could you please help me by providing some insights why is this happening? I am sorry for the bad resolution of pictures.1) Screen we designed in TouchGFX2) Screen we got from display
Hello,I am working with STM32F469 DISCO with IAR and TouchGFX and I am getting a hardfault exception when doing a screen transition from one screen to other one.When the screen has few widgets, this hardfault does not occur. When the screen has more widgets the hardfault is triggers when requesting to move to other screen. I am working with TouchGFX V4.24.0 with FreeRTOS based and I am storing the assets on the external flash within the DISCO board.Did anyone face this issue and or have a solution for it?
Hello everyone, I'm working with a STM32F429 Discovery team right now. The unit receives/receives a stream of data by interrupting the UART_5, in which the ';' character selects one data field from another within the stream. , all data fields are 6 bytes long and ASCII encoded. The problem is that the display has more texAreas, Screen1 contains five textAreaa, while screen2 contains four textAreas. TouchGFX editing is as easy as possible ,Box as background ,wildcards ,textArea nothing else. The problem is that the text is "blurry" when refreshed and appears here on the display, and unfortunately not according to the correct texArea position. I was thinking that Model:tick() and HAL_UART_Receice_IT() "interfere" with each other's tasks. If there is a possibility to attach files here on the forum, I would attach main.c, screen1View.cpp and screen2View.cpp files. I was thinking that I should stop the interrupt for the time of the display ---and this is the question of how do I do t
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.