Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hi, now I followed the recommended Instruction. https://www.touchgfx.com/resources/demo-videos/webinar-videos/In Webinar two an example show to hide an image. I create a new project, choose a my Board, not available => choose Nucleo-h636Zi + fgx02zi. Followed the intructions on the Webinar 2 and run the simulator. fine., => "Program and Run on Target" The Code compliled well without error and the update to my stm works without errors. But nothing happened on the Screen. I think because the Hardware Nucleo-h636Zi => Nucleo-F767Zi does not fit. Does someone have an idea to get some content to my Display?regardsCarsten
Hi,I cannot find API to get display height/width. Is there any ? I tried to find something likeint16_t touchgfx::HAL::GetDisplayHeight (); int16_t touchgfx::HAL::GetDisplayWidth (); In GfxDesigner I see 240x320 values: In TouchGFXConfiguration.cpp there is display initialisation:static TouchGFXHAL hal ( dma, display, tc, 240, 320 );SimConstants.hpp containsstatic unsigned short SIM_WIDTH = 240; static unsigned short SIM_HEIGHT = 320; ThanksFerro
I'm trying to start a project using TouchGFX on stm32H743IIT6 and I generated the project with CubeMX, and when I try to build the project with Clion, there are errors about simulator source files.So I excluded all directories about simulators in cmakelists, and compiling seems to work but there are errors of multiple definition of functions, and after checking, I found that all these multiple definition errors are related to functions in OSWrappers.cpp and OSWrappers_cmsis.cpp. Then I tried to open project in CubeIDE and compile with it, and there are no errors this time, everything is fine. I also tried to generate the project in MDK-ARM form and build it in Keil, still no problem. It seems only Clion can't build the project properly and I'm wondering if there's a way to compile in Clion.Here are the changes I made in Cmakelists:file(GLOB_RECURSE excludes "Middlewares/ST/touchgfx/framework/source/platform/hal/simulator/*.*" "Middlewares/ST/touchgfx/framework/source/platform/driver/to
Hi Everyone,I'm using a STM32H747XIH6 board.checking RTC(Real Time Clock), peripheral through generating gui in STM32cubeide and configuring in STM32cubemx . After all the application completion I'm facing this kind of error ;"gui/src/model/Model.cpp:3:10: fatal error: stm32h7xx_hal.h: No such file or directory#include "stm32h7xx_hal.h" in touchgfx run simulator".If I remove the particular header file in stm32 cubeide the code is not working .so anyone can help me out ?Thanks.
Dear Team,I hope this message finds you well.I am currently working on an elevator project and have outlined a few key requirements that need to be implemented. For your reference, I have attached a link to a YouTube video that illustrates these requirements clearly.Ref Video Link : https://www.youtube.com/watch?v=J8rWm0xfuKAHere are the specific requirements:Floor Index Movement: The floor index should move in the manner demonstrated in the video. This includes smooth transitions and precise updates to the current floor display as the elevator moves between floors.Door Animation: Upon tapping on a floor, an animation should be triggered, simulating the elevator doors opening and closing. This animation should be similar to the one shown in the video.Please take a moment to review the video and let me know if you have any questions or need further clarification on these requirements.Thank you for your attention to this matter. I look forward to your feedback and suggestions on how
Hi,Does someone have a suggestion to create a range slider with touchGFX like this Thanks
Is there a way to get/set the coordinate of an image or a Texture Mapper realtive to its center?I think one suitable idea I have is to overload the class with new methods called like getXYcenter where I get the X coordinate and add half of the width (the same with Y and heigh)On the other hand, setXYcenter would take the X coordinate and use setX minus half of the width (the same with Y and heigh)Does it make sense? Or are there something already implemented?
Hi there,I have a GUI demo of TouchGFX on my STM32F429BI board, and it works well when the image is stored in the inner flash.But when I stored the image external Nand-flash by FMC, it could NOT work.It's said that the Nand-flash extended by FMC can't be accessed by memory map mode so that I can get the image data by the API HAL_NAND_Read_Page_8b(), yes?But how to modify the TouchGFX to get the image data by HAL_NAND_Read_Page_8b()?Thank you!
Hello,I wanted to use the TouchGFX as a standalone simulator application which simulates a hardware. Following requirements should be fullfilled,1. TouchGFX should be able to compile an existing FreeRTOS application on PC only and run a frontend GUI which will send values from the user interface to FreeRTOS tasks.2. Consider 2 TouchGFX applications.TouchGFX simulator application 1 should be able to communicate with TouchGFX simulator 2 application using some socket or virtual port concept.As TouchGFX uses MINGW as compiler any FreeRTOS for windows or sockets should compile and run sucessfully. Please confirm if above 2 points are possible using TouchGFXThanks Anuj
Hi All,Actually, I've just started using stm32f4 discovery board. I'm trying to make a Stm32project with custom based monochrome LCD. So, Is it possible to work it using TouchGFX? I have tried to build an empty project in the IAR Workbench, but it fails the build with some errors from the hal folder under the touchgfx library.
11:34:16 **** Incremental Build of configuration Debug for project TouchGFX4in ****make -j4 all arm-none-eabi-g++ -o "TouchGFX4in.elf" @"objects.list" -l:libtouchgfx-float-abi-hard.a -mcpu=cortex-m4 -T"C:\Users\Support-Z440\STM32CubeIDE\workspace_1.14.0\TouchGFX4in\STM32F446RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="TouchGFX4in.map" -Wl,--gc-sections -static -L"C:\Users\Support-Z440\STM32CubeIDE\workspace_1.14.0\TouchGFX4in\Middlewares\ST\touchgfx\lib\core\cortex_m4f\gcc" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-groupC:/ST/STM32CubeIDE_1.14.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/bin/ld.exe: C:\Users\Support-Z440\STM32CubeIDE\workspace_1.14.0\TouchGFX4in\Middlewares\ST\touchgfx\lib\core\cortex_m4f\gcc\libtouchgfx-float-abi-hard.a(SVGImage.o): in function `touchgfx::
Hello there,I want to recognize the digital and character written by hand with STM32F429BI.I think there must be split into the following steps:1. user input(write something in the screen by finger); (what widget I can use?)2. transfer the screen pixel data to MCU from touchGFX; (How to get the partial pixel data in certain areas?)3. MCU recognizes the content with some lib; (Can some Lib be used from ST?)4. MCU sends the result to the screen for display; (I know how to do this only :face_with_tears_of_joy:)Any advice and links are expected.Thanks for your help.
Compilation of any project almost always ends with this post. If you run the compilation several times, sometimes success comes. Basically, an error occurs when compiling images. What can I configure to avoid this error? 0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487AllocationBase 0x0, BaseAddress 0x60EA0000, RegionSize 0x200000, State 0x10000C:\TouchGFX\4.10.0\env\MinGW\msys\1.0\bin\echo.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0simulator/gcc/Makefile:238: recipe for target 'BitmapDatabase' failedmake[1]: *** [BitmapDatabase] Error 1simulator/gcc/Makefile:32: recipe for target 'all' failedmake: *** [all] Error 2
Hi. I am having issues with my TouchGFX application freezing since the semaphore blocking my UI thread is never returned. The screen freezes after running for roughly 10 minutes, sometimes earlier, sometimes after longer times. Based on what I have read in other posts, it could be DMA2D related (?). I am running TouchGFX 4.22 on a custom board using a STM32H750 with DMA2D/ChormeART enabled. Assets are stored in external flash, single framebuffer in SDRAM. System is running FreeRTOS. 480x272 screen running using LTDC.Not really sure how to tackle this issue or how to solve it. Here is what I have tried so far (without any success)I have tried playing around with the DMA2D interrupt priority, but the issue still remains the regardless of the priority is 5, 9 or 15. This seemed to have some effect here.I have tried guarding the endFrame() function as suggested here. I added this solution in TouchGFXGeneratedHAL::endFrame().I tried changing osSemaphoreWait(frame_buffer_sem,
I have added JPEG hardware decoder on STM32H750 and can convert JPEG image to YCbCr data.For next step, I'd like to copy the decoded YCbCr data to bitmap cache with converting to RGB.How to do?TouchGFX should manage DMA2D, so I think it can't be used for converting and copying.Could you please help me?
Hi Gfx Team,Could you comment on this please ?I tried to View.add () heap allocated container and it seems to be working Okay.The container might be statically allocated as well. The key point is, the View is not aware of it at compile time.Before Transition to other screen, I remove the widget from the View and delete it.void ScreenView::tearDownScreen () { if ( nullptr != pWgt ) { remove ( * pWgt ); delete pWgt; // heap allocated pWgt = nullptr; } ScreenView::tearDownScreen (); }I found two (contradicting?) posts by ST team related to this approach.One says this is not possible (should be avoided) @Osman SOYKURT "if you mean that you want to create a new instance of a widget during runtime, it's not possible."https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/dynamic-screens-how-to-create/m-p/593246And second one provides an example (does not say it is not possible) @GaetanGodart "I have made an example that dynamically adds elements to the scrollable conta
Hi,I'm working on stm32h7 controller and also designed GUI using scroll wheel and able to scroll using touch but i need to scroll the wheel up and down using two hardware buttons.I also created the queue in model but how to scroll up and down.Thank you
Right now packaging of widgets is only possible through TouchGFX (by clicking export) and I would like to create a package through the command line.I found the tpkg file format extracts like a zip file, but zipping it again and renaming leads to error when importing it into TouchGFX:Error: Object reference not set to an instance of an object.I used Linux zipinfo utility to compare my zip file to the package. I tried to make them as close as possible by not adding file comments(these are optional zip attributes) and by having the file order the same. The only differences I could find was "non-MSDOS external file attributes" which is set to 0 in the tpkg file, the path separators (the tpkg file uses inconsistent path separators combining windows and linux separators ) and slightly varying compression ratios and file dates. Even a binary comparison of the files did not show large differences.I also looked up http://tpkg.github.io/ . But it appears this tool is no longer maintained and I w
Hi, Working with the latest version (4.23.0) for some time now. Luckily for now I have the generated code tracked in git.When generating the code using TouchGFX Designer, I notice that sometimes some interactions of my custom containers are not generated. For now it is always related to the triggers of the Custom container that are used on my views (that use the custom container). The callback method (for the trigger) on the view is missing (in the ...ViewBase.cpp file): finished.setButtonClickedCallback(buttonClickedCallback); Often only after I open the related view in the designer and then regenerate the code, this missing callback method is added to the generated code. Does anyone else have the same issue?First it was only for one specific callback, but today I see three missing callbacks..Very interested to the cause of this issue, so I can choose how to work around it until the next release- Project too big for the generator?- Too many interactions on a singl
I’m using the STM32H750B-DK board to explore FD CAN integration with TouchGFX and have encountered an unusual error. When debugging, the screen begins to tear and fails to display any of the TouchGFX visuals. However, when I compile and run the program, it encounters no errors but again fails to display anything, although it doesn’t exhibit screen tearing. When the program is run in simulation mode, it displays and acts as expected with all the TouchGFX visuals working correctly. What could be the source of this issue, and are there any potential workarounds? Included below are the main.c and screenshot of the ioc.
Fresh Windows 11 install, fresh TouchGFX install. Started up fine, until I tried to open one of the sample projects. Now the tool won't start at all, and I just get a dialog "Failed to load native freetype library / Could not open file".I did find: https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/touchgfx-crashes-on-project-creation/td-p/578159Unclear exactly what was the suggestion. Someone said "install a newer version of VC++", but I don't have that installed and I don't want to have it installed. There is a link to the C++ redistributable in that thread, which I did install, but it made no difference.
I'm updating a text field (textArea with wild card) every tick (only for testing, in practice it will be updated less, and only when invalidated when changed). It updates the field just fine, however the old value remains in the other frame buffer. So the value alternates between the new value and the old value. But only if new text is smaller than old text.Here was my initial code: void Screen1View::updatePowerState(const char* str) { touchgfx::Unicode::strncpy(textAreaPowerControlStateBuffer, str, TEXTAREAPOWERCONTROLSTATE_SIZE -1); textAreaPowerControlState.resizeToCurrentText(); textAreaPowerControlState.invalidate() } But this code didn't work when increasing the size. So I tried to invalidate by rectangle instead: void Screen1View::updatePowerState(const char* str) { Rect invalidatedArea = textAreaPowerControlState.getRect(); invalidatedArea.x=0; // convert to relative rect invalidatedArea.y=0; // convert to relative rect touchgfx::Unicod
Running my application in the Simulator, after a few seconds on a screen with a ScrollList I get this assertion. Can anyone tell me what components use excessive amounts of these timer objects, so I can try to work around it?The same code running on the target runs fine.The ScrollListItems have several MoveAnimators, but only a few of them are running an animation. Do MoveAnimators use TimerWidgets?
Just came across this in one of my pet projects.https://support.touchgfx.com/docs/development/ui-development/ui-components/containers/list-layoutvoid Screen1View::setupScreen() { Screen1ViewBase::setupScreen(); //listLayout1.setWidthHeight(0, 0); // Remove excess space in List Layout for (int i=0; i < 3; i++) { TextArea *textArea = new TextArea(); textArea->setWidthHeight(100, 25); textArea->setTypedText(touchgfx::TypedText(T_RESOURCEID1)); listLayout1.add(*textArea); } listBackground.setWidthHeight(listLayout1); }Surely the fact that textArea pointer is not recorded anywhere indicates a memory leak.Three dynamic allocations happen in the loop, and pointers are passed to listLayout1.add()There is no way these three memory blocks can be de-allocated. The listLayout cleanup function could not possibly do the delete of added textArea objects, given it cannot assume blocks were dynamically (and not statically, or on stack) allocated. In fact I tried that (adding globally
Keil projects shows an error when I add more than 65 screens in the project (works fine with less than or equal to 65 screens). I checked this multiple times by creating multiple new projects and even multiple versions of cubemx and touchgfx designers still no luck. I have tried cubemx 5.3, cubemx 5.6, cube mx 6.0 basically every version since 5.3. I even tried diffrent touchgfx designers from 4.10 to 4.15. When I create the same project with more than 65 screens for STM32cubeIDE it works perfectly fine. Here's the procedure I followOpen touchGFX designerSelect my board STM32F469i-DISCO and Blank uiAdd 66 screen and 2-3 buttons Generate projectOpen cubemx file of project and select MDK ARM 5.28.0.0 Keil IDE and generate project for keilOpen project in keil Compile errors in meta.h file which is part of touchgfx framework and not a user fileIf if follow above steps for less than or equal to 65 screens It works fine. And everything works for STM32CubeIDE even 66+ screensYou can easi
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.