Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I am creating TouchGFX projects from STM32CUBEIDE. Then, compile it with TouchGFX Designer. Everything seems fine, but ı getting too many errors.
Hi All,This is the first time I am posting on this forum. I am new to cubeIde/cubeMX world. I have recently started integrating the touchGFX capability to my stm32 boards. I followed some online tutorials and youtube videos like these:(https://www.youtube.com/watch?v=g1siKaPox88&list=PL6Fwy7aR3zSlZO3OBppHSzDacE4CGgRqO)However I am having issues in compiling my code. The moment I compile my code I get like 200+ errors in middleware and touchgfx/generate folder. I have tried creating a project using different boards however I am keep getting these errors. I have tried configuring the board in cubeMx and then importing it in cubeIde, also tried creating a project in just cubeide as well but i am keep getting these issues.My cubeMx version is: 6.12.0CubeIde version: Version: 1.16.0TouchGfx version: 4.23.2 I have B-l475e-iot01a2(discovery board) and STM32L073RZ board. Problem is not the board here I tried creating a project using different board but my p
Hi,I have a STM32F779BI on a custom board that communicates with a LCD display using the LTDC interface in 16bits (480x272). I am using a single buffer inside the RAM of the MCU. So far TouchGFX works pretty well but once i activated the Software package for touchgfx inside Cubemx, i see that a "MX_TouchGFX_Init();" is added in the Main init section and i have to manually call the "MX_TouchGFX_Process();" in a task when all my board is up and running and can finally start the drawing process on the LCD.My problem is that i have a task for logging data on a SD card using FatFS. Since i am using FreeRTOS, i had to implement the writes and Reads using the DMA on the SDMMC. This works pretty well too when touchgfx is not initialized ("MX_TouchGFX_Init();") and started ("MX_TouchGFX_Process();").At first i thought it was a problem of NVIC priority for the SDMMC DMA versus the DMA2D interrupt priority. However, i made sure to give the DMA2D a priority less than for the DMA SDMMC and it still
Hello everyone,I've made a project for STM32F746 disco, the project compile and debug fine. The problem is that the screen of my board remains black. All TouchGFX configuration has done right. Project is uploaded in browse section. When I start debugging the screen is white and I see this on the log. STMicroelectronics ST-LINK GDB server. Version 7.8.0Copyright (c) 2024, STMicroelectronics. All rights reserved. Starting server with the following options:Persistent Mode : DisabledLogging Level : 1Listen Port Number : 61234Status Refresh Delay : 15sVerbose Mode : DisabledSWD Debug : EnabledInitWhile : Enabled Waiting for debugger connection...Debugger connectedWaiting for debugger connection...Debugger connectedWaiting for debugger connection...-------------------------------------------------------------------STM32CubeProgrammer v2.17.0------------------------------------------------------------------- Log output file: C:\Users\emanu\AppData\Lo
How do you create a graphical count-down timer in TouchGFX?Are there any example custom widgets that implement a count-down timer that I am not already aware of?It seems that the Model::tick() function's cycle time varies based on the LCD, so I am not sure that I can/want to rely on this for accurate timing.I want to create something that is comparable to the accuracy/quality of the clock widget provided with TouchGFX.
When i run target this message appeared plz help me '' Compiling Utilities/JPEG/jpeg_utils.cCompiling Common/Src/system_stm32h7xx_dualcore_boot_cm4_cm7.cCompiling ASM STM32CubeIDE/CM7/Application/User/Startup/startup_stm32h747xihx.sLinking CM7/TouchGFX/build/bin/target.elfCM7gcc/makefile_cm7:442: recipe for target 'CM7/TouchGFX/build/bin/target.elf' failed/Middlewares/ST/touchgfx/lib/core/cortex_m7/gcc\libtouchgfx-float-abi-hard.a(LCD24bpp.o): In function `touchgfx::LCD24bpp::DecompressorRGB_QOI::blitCopyARGB8888(unsigned char const*, touchgfx::Rect const&, touchgfx::Rect const&, unsigned char)':(.text._ZN8touchgfx8LCD24bpp19DecompressorRGB_QOI16blitCopyARGB8888EPKhRKNS_4RectES6_h+0x328): undefined reference to `touchgfx::paint::flushLine(unsigned long*, int)'(.text._ZN8touchgfx8LCD24bpp19DecompressorRGB_QOI16blitCopyARGB8888EPKhRKNS_4RectES6_h+0x4e2): undefined reference to `touchgfx::paint::flushLine(unsigned long*, int)'CM7/Middlewares/ST/touchgfx/lib/core/cortex_m
I'm using TouchGFX with a custom board that contains a STM32U535 and ILI9341 display. The display also has the XPT2046 touch controller. The issue I'm running into, which ControllerTech pointed out in his video, the touch/refresh is kind of spotty at best. I'm currently just using the TouchGFX gauge and two buttons. Planning for the possibility of performance issues, I put a W25Q128JV (SPI mode) on the board. I haven't got that working yet. Prior to going down that road, will the external flash make the touch/display more performant? Is having the flash chip in SPI mode be a factor as well, would changing it to QuadSPI be a better solution? Or is this display never going to be performant with TouchGFX?Thanks for any guidance.Kindest regards.
This piece of code works if I transfer it to my board, but if I use the simulator in TouchGFX, I get an error: gui/src/model/Model.cpp:7:10: fatal error: main.h: No such file or directory #include "main.h". Screen1View.cpp#include "stm32f7xx_hal.h" // LED Toggle functionvoid Screen1View::ToggleLED(){ if (toggleButton1.getState()) HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);} I am using TouchGFX 4.24BR
I can see from logging that my Presenter's #activate is called after the screen's #setupScreen. This seems wrong. The screen depends on the presenter. There should be an opportunity for the presenter to initialize itself before the screen uses it.Am I misunderstanding something?Thanks.
I am trying to program my RVT70HSSFWC0 Display it fails every time, although the simulation works perfectly. I have not written any extra C++ code, yet, because I want to make sure everything works fine before I do. When clicking on program and run target the compiling fails. I've read instruction on how to flash my display. So far I have,-Downloaded STM32CubeProgrammer-Moved the QSPI_STM32H747I-Riverdi-MICRON_V2.stldr to Program Files\STMicroelectronics\STM32Cube\STM32CubeProgrammer\bin\ExternalLoader-Powered the display while:Running the program through TouchGFXRunning the program through STM32ProgrammerThe ST-Link connects properly to the display.I get this error: Compiling Middlewares/ST/STM32_USB_Host_Library/Class/MSC/src/usbh_msc.c Compiling Middlewares/ST/STM32_USB_Host_Library/Class/MSC/src/usbh_msc_bot.c Compiling Middlewares/ST/STM32_USB_Host_Library/Class/MSC/src/usbh_msc_scsi.c Compiling Utilities/JPEG/jpeg_utils.c Compiling Common/Src/system_stm32h7xx_
I'm trying to use the MVP system in what is hopefully a correct manner. The way I understand it, the Presenter takes the data from the Model and assembles it in a way that the View can display.However, in the present implementation of the MVP in TouchGFX, the view is being configured before the Presenter has a chance to configure this information.For example, when trying to implement a scroll wheel, I'm supposed to override the ScrollWheelUpdateItem as below:void Screen2View::scrollWheel1UpdateItem(ListItem& item, int16_t itemIndex) { touchgfx::TypedTextId id = presenter->getParameterOptionText(itemIndex); std::cout << "Setting text index to:" << id << std::endl; item.setText(id); }However, the call tree for switching to a different view is first initializing the view and *then* initializing the presenter. The following is from the TouchGFX library (MVPApplication.hpp):static inline void finalizeTransition(Screen* newScreen, Presenter* newPresenter, Tr
Hello everyone, I am using a custom board with a STM32H750VBT6 and TSC2046 Touch Screen Controller with resistive screen. Unfortunately, I am experiencing some troubles with the swipe gesture due to the nature of resistive screen (sometimes the touch is not detected). I have tried two methods: 1) Polling Method: TouchGFX's Sampletouch method is called every 20 ms from the LCD IRQ routine when the Back Porch Exit is reached. In Sampletouch method, I communicate with TSC2046 through SPI and I get the raw values for X,Y and Z directions. If Z'value is bigger than a constant threshold, I correct the values of X and Y with a calibration procedure according to Touch Controller's datasheet. Then I set the x and y of sampleTouch method with calibrated values and set a flag to true for SampleTouch's returned value. Otherwise, I simply set to false the flag;2) Mix between Interrupt and Polling (as suggest in every ST demo project for TouchGFX): In this case I don't evalu
Hi, I am currently working with the STM32H7XIH microcontroller and an LCD TFT Type. I have successfully configured the LTDC and displayed a static image on the LCD. Now, I am attempting to integrate the STemWin GUI library into the project. The project compiles without any issues; however, I encounter a HardFault when I use the GUI_DispStringAt function. I need assistance with configuring the GUI library, please.
Hello,I am trying to make a wifi list using STM32H750B-DK. I designed my screen and add scroll list in it. I am receiving the wifi list from the esp32 and I want to show them on my list. I manage the copy it in my container but I got an issue. When I tried to invalidate it, it is not showing the wifi's until I scroll it down or up. Does anybody have an idea? void WiFiScreenView::wifiSSIDListUpdateItem(wifiSSIDContainer& item, int16_t itemIndex) { if(isWiFiListReceived){ item.refreshWiFi(itemIndex); } wifiSSIDList.invalidate(); } Here is my update item code and wifiSSIDList is my scroll list not the container. And this is my container code. void wifiSSIDContainer::refreshWiFi(uint8_t idx) { const char* wifiName = WiFiList[idx]; Unicode::strncpy(textWiFiNameBuffer, wifiName,TEXTWIFINAME_SIZE); textWiFiName.setWildcard(textWiFiNameBuffer); textWiFiName.invalidate(); } If anybody have an idea I am open to try it.
I have a Nucleo-G071RB and GFX01M1 display board.I'm using TochGFX 4.15.0 to generate the project. It generated the files and I then when into CubeIDE, the code compiled and managed to downloaded into the board and all working ok.I now want to add some GPIO pins to the project. I tried to open the .IOC file by double clicking it but it won't open and it give me an error of:Invalid Input: Must be project's active .ioc file.Project's 'STM32G071_test_28-10-20' active one is 'STM32G071_test_28-10-20.ioc' fileHow can I fix this ?CubeIDE is version 1.4.2
I have a TextArea that spans the full width of my screen:I've selected "center" alignment:However, when I dynamically set the text at runtime, Unicode::fromUTF8(merchant_name_data, merchant_nameBuffer, MERCHANT_NAME_SIZE); merchant_name.resizeToCurrentText(); merchant_name.invalidate();It ends up left-justified:? Thanks.
Please tell me about the display issue. There are lines on the display, and they appear to be flickering.This issue occurred when I connected to the Raspberry Pi via GPIO and pulled out without turning off the power of the STM.I have tried pushing the RESET B1 button, unplugging and replugging the power, and writing a new file, but cannot solve the problem.If there is a way to reset the display or something,could you tell me? ↓ There is a vertical blinking line. ↓ After writing a black image file, the afterimage of the previous file is still there.
Hi All,I'm trying to get started with TouchGFX.I'm currently working with a NUCLEO-L496ZG eval board connected to an NHD-2.8-240320AF-CSXP-FT (320 x 240 TFT LCD with ST7789 internal controller.)I've successfully connected up the display via FMC and been able to display colors and images and such to the screen, just using statements like *(__IO uint16_t *)(0x60000000) = command;*(__IO uint16_t *)(0x60020000) = data;to send data to the command and data registers, and everything seems to be working well.Now I'm trying to bring in TouchGFX into the mix and I'm having a difficult time. I've read through the board bring up process, and where I think I'm having trouble is knowing which functions to modify from the generated code to integrate the ST7789 driver code I've written.To give you an idea of what I've tried and what my setup is, here's what my TouchGFX setup looks like in the IOC:After generating the code, I used TouchGFX designer and opened the ApplicationTemplate.touchgfx.
Hi,I am struggling with text alignment. I hoped that I could center aligning a text in a text area vertically. But it seems har to do.I have had som fun in TouchGFX Designer aligning some texts.It is the same text in all fields, and the text areas fills the rectangles. First column is left aligned, center column is center aligned, and the right column is right aligned.First row in text is rotation 0°, second is 180° and third is in 90°.I do not understand the algorithm when choosing a different rotation than 0°. But it seems that the text are aligned in two independent domains:Text alignment in normal reading direction.Field alignment in viewing direction.But how do I align the text in the center of a field in both horizontal and vertical direction? It seems only possible if you choose 90° rotation. (and probably also 270°)If you ask me, there should be independent horizontal and vertical alignment settings. Here is an example from emWin (GUI builder in last century style):BRKasper
I'm using the stm32h750-dk development board and TouchGFX 4.21.4 and STM32CubeIDE. I want to design a circular progress bar with a color gradient. I attached the required circular progress bar as an image. so I want to control the circular progress bar from the main.c using an external variable resistor. I'm Using the 'queue' to communicate between touch TouchGFX files and main.c file. Still, I can control the progress bar using a single color (without a color gradient). anyone can help me to implement a circular progress bar with a color gradient when progressing the bar. this is the code that I use now. void PageHomeView::updatePage(PageState *pageState){ uint8_t index = pageState->buttonsState.index; circleProgress1.setValue(index);} I refer these linkshttps://support.touchgfx.com/docs/development/ui-development/ui-components/progress-indicators/circle-progress https://support.touchgfx.com/4.19/docs/api/class
Hi, We are examining to use either STM32H7S7L8 MCU or STM32U5G9J for a project involving fairly involved graphics, requiring smooth animation and effects such as frame rotations, vertical and horizontal moving scales. Are either of the above a good choice for such application?How far does TouchGFX graphics framework library support the graphics mentioned above?Are there significant new features available in TouchGFX 4.24 to support animation effects such as frame rotations etc.? One of the reasons to examine the above MCUs is that they include advanced graphics accelerators (Neochrom and Vector graphics)? Can the TouchGFX graphics take advantage of the new graphics capabilities of these MCUs? How is the QT support for these MCUs, in case we want to examine QT in place of Touch GFX? Any help on this would be much appreciated. Thanks ---Regards,Shivani Elavena
Hello,I'm currently working on a custom board with a display so I can't use TouchGFX to generate my project...So far I've created a project through CubeMX(6.12.0) that can use TouchGFX(4.24.0), opened it in CubeIDE(1.16.0) and tried to build it but some errors occured (undefined reference of some files of TouchGFX like the HAL.hpp).I then opened my project in TouchGFX and generate code without modifying anything. I refresh and tried to build again my project in CubeIDE but this time I have a bunch of errors (215) that start with an "undefined reference to vtable" error :../Middlewares/ST/touchgfx/framework/include/touchgfx/ConstFont.hpp:35: undefined reference to `vtable for touchgfx::ConstFont'Then it's followed by some undefined reference errors :../TouchGFX/generated/fonts/src/GeneratedFont.cpp:14: undefined reference to `touchgfx::ConstFont::ConstFont(touchgfx::GlyphNode const*, unsigned short, unsigned short, unsigned short, unsigned char, unsigned char, unsigned char, unsig
Hello,I want to create a updating list for my project that adds new text to an area on the screen(preferably scrollable as there can be many texts). I have read around a lot but I cant seem to figure out how to add new text areas with wildcards to a container. I also want to be able to change the different texts and remove them during runtime. What is the best way to solve this problem?Please see attached image for a very rudimentary chart off how I want the UI to look.Regards,Björn
Hi,I am writing here because I need a help.I want to use flex button this way - when I hold pressed button then virtual function is executed, so when I release button then the virtual function stops.I try for example .getPressed() in handleTickEvent, but it doesn't working. I try a sample with CustomButton from this forum but I can't use it enough.Can somebody help me ?I will be very grateful for help.Best regards,Kamil
Good morning,For my new project, I would like to use these 2 development cards.Has anyone already configured these cards (.IOC) or an example?Thank you in advance for your help.
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.