Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Good morning , sorry if i'm not posting in the right place but i'm still learning. I have a problem with an example i saw in the tutorial where you bild an iterface to adjust the hour and minutes . In the tutorial where i built the interface it says to copy the code and put it in two files .... i tired but when i press the buttons mothing happens and in the two text areas thereare two question marks. Could someone kindly help me? Thank you so much.
Hello, Is it possible to create a custom trigger for box shape?I would like to move the box using interaction, but I would like to trig this interaction from source code, is it possible? Thanks,Best regards,Laurent
I'am currently engaged in developing an application utilizing TouchGFX on an STM32F429I microcontroller. The initial setup, including LCD initialization, SDRAM configuration, FreeRTOS integration, and the assignment of the primary TouchGFX task, has been successfully completed with the frame buffer start address designated at 0xD0000000 in the SDRAM, resulting in satisfactory operation.I am contemplating migrating the allocation of the TouchGFX frame buffer from the SDRAM to the internal RAM of the STM32F429I. Could you advise on the procedure to reallocate the frame buffer to the internal RAM? Additionally, considering the internal RAM may already be partially utilized, how might I determine an appropriate start address for the frame buffer in this scenario?
Hello community,I am using NUCELOH7A3 and a 800x320 display. I could fill the screen, display lines and texts using RGB565 and ARGB8888. Now I wanted to use the L8 forrmat with a LUT.Using the the DMA2D mode Memory to Memory works fine (array)! But using the mode Register to Memory does not.BSP_LCD_WritePixel() works fine with the L8 format. But the BSP_LCD_FillRect() that uses DMA2D has some problems.It displays verticle lines, displaying 1 line and skipping 1 line after. So it writes the pixel and skips the one after. Here is the code. int32_t BSP_LCD_FillRect(uint32_t Instance, uint32_t Xpos, uint32_t Ypos, uint32_t Width, uint32_t Height, uint32_t Color) { uint32_t Xaddress; /* Get the rectangle start address */ Xaddress = (hlcd_ltdc.LayerCfg[Lcd_Ctx[Instance].ActiveLayer].FBStartAdress) + (Lcd_Ctx[Instance].BppFactor*((Lcd_Ctx[Instance].XSize*Ypos) + Xpos)); /* Fill the rectangle */ LL_FillBuffer(Instance, (uint32_t *)Xaddress, Width, Height, (Lcd_Ctx[Instance].XS
I'm currently working on a project that involves using an STM32U5 microcontroller to drive a TFT LCD display through the MIPI DSI interface. After managing to initialize the LCD display (which shows the default layer in blue, indicating success), I've encountered a perplexing issue that I hope to find some assistance with here.Despite the successful initialization, I'm only able to get a white image on the display, regardless of attempts to change the screen's color. Below is the approach I've taken, including the function intended to fill the layer0 with a specified color :The function is designed to iterate through the frameBuffer, setting each pixel to a color defined by the RGB888 macro. After filling the buffer, I use HAL functions to update the LTDC frame buffer address and refresh the display. However, the screen remains white, even after executing this function with various color parameters.Here are some specifics about my setup and what I have checked so far:The frameBuffer si
Hi,I tried to install TouchGFX 4.23.0 and 4.23.1 several times. OS is Win 11 pro eng/us region and eng language settings.When executed the run command on windows simulator fail message appears as in attachment.Also fails when creating any discovery board as in other attachment.I installed the TOUCHGFX successfully another Win 10 pro machines. How can I fix this issue for Win 11 pro installation? Best regards,
Hello,I have a problem with a STM32U5G9J-DK2 :If I choose a project with FreeRTOS in GFX designer, I can upload the code in my board from GFX designer : it does work.If I open the project file with CubeMXIde, I can modifiy and then upload the code in my board : it does work.If I choose a project with Azure RTOS ThreadX, I can upload the code in my board from GFX designer : it does work.ButIf I open the generated project with Azure RTOS ThreadX in CubeMXIde, when I build the project, I have some undefined references, even if I do no modification of the generated code : it does not work.It seems that I have a problem with the file HardwareMJPEGDecoder.hpp or .cpp but I am far to be certain.I would like to know if it is a well-know and easy problem to solve with this lack of informationor more information is necessary ? Thank youKind regardsDavid
I've conducted tests on the display driver code for initializing the screen on the Discovery board and successfully displayed images by assigning their data to the specified framebuffer. Now, I aim to integrate the display transfer into TouchGFX without relying on the code generated by the TouchGFX Designer, i have already installed the touchgfx package , configured the ltdc and the rgb ,spi pins ., any guidance regarding this ? thank you
This is an outstanding issue that's been there for a while but since it just got me again, I'm finally taking the time to post about it. When using external buttons and the button controller, the implementation instructions have you edit the ToughGFXConfiguration.cpp file to add the custom button controller instance and pass that instance in the touchgfx_init() function. That whole file is flagged as* This file is generated by TouchGFX Generator x.x.x. Please, do not edit!But, you need to edit it to use the button controller. So, when you do the upgrade of the TouchGFX engine in CubeIDE, this file must get re-generated since it overwrites my edits which then I have to rely on memory to go fix.It would be great if we could add USER CODE BEGIN and USE CODE END sections that Cube uses elsewhere. Or implement virtual or weak functions we can override so this can be implemented without editing a generated file.Thanks,Keith
The range of the default Slider of TouchGFX can be configured by a min and max integer.When the value has changed you can get a callback with the new value as an integer.Still when moving the slider it is possible to set the location of the indicator in between two values, and then you get a callback with an integer (not the in between value)Is it possible to force the indicator to the locations of the complete values?
Title: Seeking Community Assistance: WiFi Initialization Issues on STM32H7B3I-DK with TouchGFX and FreeRTOS Introduction:I am currently facing challenges with initializing WiFi on the STM32H7B3I-DK board following the clock and weather example provided by STMicroelectronics. The main issue arises when attempting to initialize WiFi WIFI_Init() before starting the FreeRTOS kernel (`osKernelStart()`). This results in the program getting stuck in an infinite loop, possibly due to a semaphore-related function `wait_spi_tx_event()` defined in the `net_conf_es_wifi_spi` file. Furthermore, when trying to initialize WiFi within a task, I encounter `NET_ERROR_NO_MEMORY` errors during memory allocation (`malloc()`), even after increasing the heap size. Problem Analysis:1. Infinite Loop Issue: The program gets stuck in an infinite loop, likely due to WiFi initialization occurring before starting the TouchGFX task. This situation leads to problems with the semaphore related to SPI transmission (`sp
Hi Community, I am encountering an unexpected white blank screen issue in my TouchGFX application after configuring the GPIO pins for OCTOSPI1 peripherals. The application was previously functioning correctly, but the problem arose after making changes related to OCTOSPI1 GPIO configuration. I am reaching out to the community to seek assistance in diagnosing and resolving this issue. Following the configuration of GPIO pins for the OCTOSPI1 peripherals, my TouchGFX application now displays a white blank screen upon starting the FreeRTOS kernel (`osKernelStart()`). This unexpected behavior indicates a problem with display initialization or rendering, potentially caused by the recent GPIO configuration changes.I am using the STM32H7B3I-DK development board and have developed a TouchGFX application with FreeRTOS. The application was functioning correctly before the OCTOSPI1 GPIO configuration changes were made. Task Entry Code Function:```cvoid TouchGFXHAL::taskEntry(){ena
Hello,I am working on a project that uses a STM32H7B3I-DK Board and an octospi memory MX25LM51245G. I also use the touchgfx library for the graphical interface.I encountered a hard fault issue that occurs randomly during the initialization of touchgfx. Specifically, the fault occurs in the function Texts::setLanguage(0); which is called by the function touchgfx_init();.I used the cube programmer to analyze the fault and I got the following information (See Image)Could the problem be related to the access to the texts table, which is stored in the octospi memory. I wonder if there is a problem with the configuration or the timing of the octospi interface.I also noticed that before I increased the frequency of the octospi, I had another issue where the octospi got stuck in an infinite loop in the HAL_Delay function. I don’t know if this is related to the hard fault issue or not.I have attached some screenshots of the cube programmer interface showing the hard fault addresses and the octo
Unfortunately the screen on the STM32H735G-DK is configured upside down by default leading to a horrible viewing angle when the display is on a desk. Beyond 45 degrees the screen becomes unreadable (colors become inverted). In the other 3 directions the viewing angle is very good.It's not possible to do this in TouchGFX or in software without a serious performance penalty. But I was wondering if I could configure the display driver chip to flip X and Y axis.According to the schematic of MB1315A the default slave address of the driver chip (RK043FN48H-CT672B) is 0x70 (8-bit notation), I can communicate with this address over I2C4. I also get a response on address 0x34 (8-bit notation), which is the Audio codec.In a datasheet of a different driver chip I found on this forum(OTA5180A) register R0: Direction setting is mentioned. I assume this is for mirroring and rotating 180 degrees. The OTA5180A chip uses SPI with mislabeled I2C pins. But the RK043FN48H-CT672B doesn't have a chip select
Hello,I have a STM32F746-DISCO development board and I use TouchGFX. When creating projects in TouchGFX and saving the project under the name APL1, this project appears in TouchGFX as APL1, but when imported into STM32CUBEIDE, it is imported as STM32F746_DISCO. When I create another design using TouchGFX for the same board, in TouchGFX I have the names APL1 and APL2, but in STM32CUBEIDE they have the same name and it is not possible to import the second type (APL2) without removing the first one. Is it just my ignorance or is it the functionality of the generator in TouchGFX?I made a PS script that renames the project to the name from TouchGFX, but I guess that's not the right solution. After running this script I can import as I like, but I assume I'm probably doing something wrong. # before running the script, you need to enable the PS script to run # This is done from the PowerShell command line like this: # Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMa
When a new project is being created using Touch GFX, the project folder contains a sub-folder ExtMeM_Boot. This folder contains the source files and includes of the bootloader and its dependencies. A pre-built binary is also included (bootloader.bin) which is called by the linker script. The board that I'm using is a STM32H750 Dev - Kit.My requirement is I need to perform some modifications to the bootloader program (main.c) and rebuild it to generate binary. Is there a method to build the bootloader program simultaneously with the main application or should I move all the contents and its dependencies to new project or is there any other standard method.Thankyou.
I'm working on a STM32F469I-DISCO board. My project isn't difficult I think. I want to aquire datas with a radar and display some information on the screen in function (like distance between objects and later draw them at different places on the screen).So now I'm using TouchGFX to configure the screen and I am importing the project in CubeIde to modify it and add my code related to the radar and the different calcul. Then, my objectif is to display information in the screen using "wildcards" that we can parameter in TouchGFX.I've already see many tutorials such as this one https://controllerstech.com/touchgfx-5-data-from-uart-to-ui/ that I thought was exactly what I wanted, but it doesn't work.
Hi Gfx Team,Could Drawable::getRect () in Drawable.hpp const Rect & getRect() const { return rect; } be changed to Rect getRect() const { return rect; } so it can be used as a parameter in e.g. void Screen::invalidateRect ( Rect & invalidatedArea ) const { container.invalidateRect ( invalidatedArea ); } With the current implementation one has to write Screen::invalidateRect ( Rect { Drawable::getRect () } ); If not, could you add a variation e.g. Rect getRectValue() const { return rect; } ThanksFerro
Hi Gfx Team,Could you consider adding an option to screen item in Canvas to exclude a screen from build/code generationThanksFerro
Hi Gfx Team,When I try to call Line::setLine ()touchgfx::Line line {}; line.setLine ( .5f, 7, 5.5, 7 );my MSVC compiler saysError C2672 'touchgfx::Line::setLine': no matching overloaded function found Error C2784 'void touchgfx::Line::setLine(T,T,T,T)': could not deduce template argument for 'T' from 'int' Error C2782 'void touchgfx::Line::setLine(T,T,T,T)': template parameter 'T' is ambiguous Error (active) E0304 no instance of function template "touchgfx::Line::setLine" matches the argument list I tried and it seems to help when Line::setLine () is defined like this:template <typename T1, typename T2, typename T3, typename T4> void setLine(T1 startX, T2 startY, T3 endX, T4 endY) { setStart(startX, startY); setEnd(endX, endY); } template <typename T1, class T2> void setStart(T1 x, T2 y) { setStart(CWRUtil::toQ5<T1>(x), CWRUtil::toQ5<T2>(y)); } etc. Do you think you could change function templates to this form ?ThanksFerro
Hello.I have a SwipeContainer and it works very well. I put a lot of elements in swipeContainer and I don't have low fps. But if I put dynamic graphics and add data to the graphics, the fps drops a lot.I realize that drawing graphics is very computationally demanding. I wonder if there is anything I can do to improve performanceThanks
Hi,I have a question about using SlideMenu. I need this menu on the right side, so I'll set it to West.My button is only 12px, I need the width of the slide out to be 60px. How does this component work? I'm trying to set it up, but it's behaving unexpectedly. There is a gap on the right edge or the entire extended part is not visible. When I change the indentation, the entire item is adjusted. Has anyone described what, where and how to set it up. There is only a brief description in the manual.Thank youJN
Is it possible to change scrollbars design in TouchGFX?
Hi AllI have gone through the Touch GFX project renaming that is on YouTube. I've done this many times on the stm324f29I-DISCO and never had an issue. When using the STM32F469I I am unable to load images correctly to the GUI without them being distorted and pixelated.Has anyone else come across this or am i doing something wrong with the project renaming? I know the board is fone becuase i have a project set up without the renaming done and it loads images fine every time.Kind regardsMark
I have a custom board which is almost an exact replica of the STM32f769-Disco with the main difference being the processor (STM32F777).I created a UI with the TouchGFX F769 Disco template and it works flawlessly. It's about 20 screens with about 5 or so widgets per screen. I then created a custom board that replicates the disco board and now I am seeing issues with the screen not updating correctly. During a screen transition the screen glitches or I see artifacts. When I press a button the invalidated area updates but glitches.My setup is the same as the disco board and my LTDC settings are set to according to the display manufacturers datasheet (NHD-4.3-800480CF-ASXP-CTP).What is interesting is that I have a screen with the animated widget that has about 20 pngs and it's the only screen that has no glitches during any screen transition or touch. For some reason, a screen with just a simple background causes no glitches but as soon as add a button or another widget, the screen 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.