Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I can not find a project and being new to TouchGFX, a working project is best to learn from. I can find the concept of 'ClickEvent::PRESSED' and 'ClickEvent::RELEASED' but not sure if is what I really need and how to get it codded to fulfil the requirement.
Since upgrading from 4.15 I've not been able to create new blank projects or any of the examples when selecting by board. The error message is: "Combination of STM32H7B3I & Blank UI failed" for the blank example the version is v 3.0.7 which appears to be the most recent.
Hi,Master:MCU: STM32H750VB(LQFP100)Application requirements: Requires LCD controller to drive 7" (1024x600 pixels) TFT screen.Power-on initialization to load image resources from external flash to RAM and LCD buff requires RAM, which requires a lot of RAM, so externally expand SRAM and drive through FMC.Problem: Some FMC pins are the same as the LCD controller, but they cannot be multiplexed and mapped to other pins, causing conflicts. For example, PE14 is the conflicting pin of LCD_CLK and FMC_D11Expectation: Without changing the MCU model, is there a way to resolve this conflict and achieve application requirements?thank you very much!
Good MorningI'm developing a custom board derived from STM32F746G-Disco evaluation board as reference design, and using TouchGFX for creating HMI project. This custom board is complete of STM32F746NGH6 micro controller, TFT Display RGB888, SDRAM, 16MB QSPI, OTG-USB, RTC Calendar clock, WiFi module, etc.I completed all customer requested functions, except for last thing that is following:the customer require the possibility to personalize the trademark logo image, loading it from USB and saving on Flash for using later during normal operation.I was able to reading from USB, caching the dynamic image, converting and displaying the preview, but last remaining thing is how can I save it for using at runtime?I was thinking to use last free Flash bank or QSPI that is half free for save it and reload later at runtime, like I did from USB.Please could you suggest a solution for?Thank you very muchAntonino Calarco
Hi,I need to change a screen's look at run time. For example, upon command, change background color of screen1 to a specific color. My problem is that after moving to screen2 and then back to screen1 the new background color is lost since TouchGFX calls the base class that uses the original color. Any idea how to keep new setting also after switching between screens? I wouldn't like to change the base code that is generated and not meant to be updated by user.Thank you,Ari
I was wondering if it was possible to create a momentary button on a touchscreen using touchGFX? I am interested in using it to activate a pump while pressing the screen. For my application, a momentary button would be better suited than any latching switch.Cheers
Hi folks,I'm trying to add a set of objects (in this case: a circle) to the GUI, as soon as the user presses a button. Therefore, I'm trying to execute the following code on the button press:touchgfx::Circle circle2; touchgfx::PainterRGB565 circle2Painter; circle2.setPosition(309, 136, 90, 90); circle2.setCenter(45, 45); circle2.setRadius(40); circle2.setLineWidth(10); circle2.setArc(0, 280); circle2.setCapPrecision(180); circle2Painter.setColor(touchgfx::Color::getColorFrom24BitRGB(255, 255, 255)); circle2.setPainter(circle1Painter); add(circle2); circle2.invalidate();As soon as the button is pressed, the system won't react anymore. The "clicked_button" bitmap is displayed, nothing else happens.What am I missing out? Is it actually possible to add GUI-objects at runtime? Is the buffer to small?Thanks for your help!
..
Referring to application note AN4861https://www.st.com/resource/en/application_note/dm00287603-lcdtft-display-controller-ltdc-on-stm32-mcus-stmicroelectronics.pdfsection 4.5.2 "Optimizing the LTDC framebuffer fetching from external memories" (page 43 on)Performances are improved by not having a frame buffer that is "packed" (i.e. after the last pixel of a row there's the first pixel of the next row), and having instead a frame buffer with appropriate padding between rows.This is because the LTDC reads the SDRAM in bursts of 64 bytes, but SDRAM burst reads cannot cross a 1KiB boundary. If this happens, the LTDC read is slowed down significantly (and it causes artifacts to appear when a significant portion of the screen is being redrawn, because during that time the LTDC is also slowed down by the DMA accessing the SDRAM, and the bandwidth is no longer sufficient to have a smooth, continuous display refresh).To guarantee that this will never happen, each row in the frame buffer must be a
I want to design a modal window to block the screen. Based on the different cases it will display different widgets. I want only to display the widgets without modal window background. But it looks like that the modal window class needs a background to draw its children. Any suggestion? Thanks in advance.
I have a weird issue with ScrollWheel. All the elements are displayed properly. However, it seems to be taking no action when scrolling to the last element, and on debugging, I find that the returned index is skipping the second element (0,2,3,4,5)Screen_TextView.cppvoid Screen_TextView::scroll_languageUpdateItem(Lang_Item& item, int16_t itemIndex) { item.updateItem(lang_names[itemIndex], lang_flags[itemIndex]); } void Screen_TextView::scroll_languageUpdateCenterItem(Lang_Item_Selected& item, int16_t itemIndex) { item.updateItem(lang_names[itemIndex], lang_flags[itemIndex]); touchgfx_printf("Item Index: %i \n", itemIndex); Texts::setLanguage(languages[itemIndex]); text_scroll.invalidate(); }Debug OutputItem Index: 0 Item Index: 2 Item Index: 3 Item Index: 4 Item Index: 5
Hello,I create custom widget base on this tutorial https://support.touchgfx.com/docs/development/ui-development/touchgfx-engine-features/custom-widgets.But it is updated on screen only once at the beginning. How to implement auto redraw when internal widget data is changed e.g. a new data was set to widget in tick() function ?
for example project 'STM32H7BWorkshop2020_labs12345' in zip file 'MOOC - STM32 Graphics Workshop' does not compile under STM32CubeIDE 1.7. TouchGFX 4.17 will build but not simulate.What is wrong?
Hi.Is there any way to save my code in TouchGFX ?Im creating a new project, composing my UI, setting up the actions (writing my own handlers) in ...Base.hpp and ...Base.cpp files.But if i want to add some additional UI elements in my project, im "generating code" again, and ALL MY OWN HANDLERS ARE succesfully :) DELETED :(.Thus, how to save my editions through these "code generations" ?
The ticket in question is: https://community.st.com/s/case/5003W00000BksAFQAZ/ltdc-fifo-underrunPlease share with me the resolution of that ticket.Thank you.
Hi!I am looking for a display for a custom board as above with these overall specs:Size 6 - 10" TFT-touch.High resolution e.g. 800x480, 1024x600.> 1000 nits for outdoor use in sunlight (e.g. industry, marine classed)Preferable coming with plugin connector-cable to attach to boardBuilt in memory (is this possible?)Very small quantity so quality above allAny recommendations would be highly appreciated!Thanks in advance
According to this documentation, lockDMAToFrontPorch has a sense only for double buffer. But in fact for SPI LCD, without a controller, internal memory, and noOS, if it set to true, all stuck with lockframebuffer and flush frame buffer never call... #TouchGFX
Hello,I worked with TouchGFX 4.16.1 fine, because of graph issue in 4.16, i've migrated to TouchGFX 4.17 and also CubeMX 6.3 ... after this updating touchgfx_init() function produce hardfault .... Please help me how can I solve this issue ....I work with STM32H743 ... D-cache enable ... dual buffer , External SDRAM...
1- Does DSI screens work immediately with STM32Fx that support DSI or is driver / complicated programming is required?2- F4 and newer boards support DCMI, what type of cameras would work with this? Is it limited to a set number of cameras? And does it require driver / complicated program to function?I'd appreciate any tips regarding cameras / screens interface and Software.
Hello communityI face the following problemI have a global data structure which contains several member variables, I use this data structure to handle all my global variables needs across my project.Such datatype is delcared in "globals.h", and a variable using this datatype is declared in "globals.c" and exported as extern always in globals.h.I want to assign some of these variables when TouchGFX interactions happen (like moving a slider or pressing a button) in my TouchGFX "view"The problem is, if I include globals.h in my "view.cpp", then the TouchGFX simulator won't build as it cannot find "globals.h".for sake of simplicityglobals.htypedef _myType{ int sliderValue; }myType; extern myType myGlobalVar;globals.c#include "globals.h" myType myGlobalVar;How should I access my global variables then without breaking the interface simulator?Matteo
Hi,we you generate a project start from TouchGFX Designer 4.17.0 for BUG STM32H735G DK boardpin mapping OCTOSPIM_P1_DQS and OCTSOSPIM_P1_NCS are not corretly maps respect to schema.
***SettingsMCU: STM32F405RGCubeMx: 6.2.0CubeIDE: 1.6.0TouchGFX: 4.16.1Firmware Package: FW_F4 1.26.0I am trying to port a program designed in Windows to firmware.STM32CubeIDE was the first time I used it, so I studied it through the community.And, I proceeded the work in the following order.1.Select MCU via STM32Cubemx2. Pinout setting3. Select TouchGFX from software pack4. generate code5. Create 1 page with shapes in TouchGFX6. generate code7. Run STM32CubeIDE8. Run DebugFor reference, I haven't written any user code.Then the following message appeared.TouchGFX/App/app_touchgfx.o: in function `MX_TouchGFX_Init'undefined reference to 'touchgfx_init'Settings related to TouchGFX appear to be a problem, but I haven't been able to find the cause.Could you please let me know the problem?
Dear all,I want to apply touch-gfx gui library on our own board using stm32f446ve and spi-lcd(with st7789v driver ic, 320x170).Today I tried to generate code through CubeMX(plz refer to the attached picture), but I could not generate without error on CubeMX. Anyway I generated sample codes ignoring errors and tried to compile codes, there were errors. Could someone guide me about how to set up gfx lib on my stm32f446ve-board using spi-lcd?Best Regards,Tommy Lim
Hello,I'm new to TouchGFX software.I'm trying to use the display for the STM32H757I-Eval board.I have configured a GUI template using the TouchGFX software. Below is the procedure I followed:Using STM32CUBEMX in the default mode and enabled the TouchGFX and specified the dimensions of the board for the STM32H757I-eval board.Then generated the STM32 cube IDE code.Now from STM32 cube ide I opened the TouchGFX .part file and selected the blank UI and selected some parameters and generated the code.Next when I built the code I am receiving the following errors.14:50:09 **** Incremental Build of configuration Debug for project DEMO_DISPLAY_CM4 ****make -j4 all arm-none-eabi-g++ "../TouchGFX/target/generated/OSWrappers.cpp" -mcpu=cortex-m4 -std=gnu++14 -g3 -DDEBUG -DCORE_CM4 -DUSE_HAL_DRIVER -DSTM32H757xx -c -I../TouchGFX/App -I../TouchGFX/target/generated -I../TouchGFX/target -I../Core/Inc -I../../Drivers/STM32H7xx_HAL_Driver/Inc -I../../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I../../
Errors are:1) C:/Users/info/STM32CubeIDE/workspace_1.7.0/TouchGFX/Gui/gui/src/audio_player_screen/AudioPlayerPresenter.cpp:102:12: error: 'char* strncpy(char*, const char*, size_t)' specified bound 50 equals destination size [-Werror=stringop-truncation]2) C:/Users/info/STM32CubeIDE/workspace_1.7.0/TouchGFX/Gui/gui/src/audio_player_screen/AudioPlayerPresenter.cpp:266:12: error: 'char* strncpy(char*, const char*, size_t)' specified bound 50 equals destination size [-Werror=stringop-truncation]3)C:/Users/info/STM32CubeIDE/workspace_1.7.0/TouchGFX/Gui/gui/src/audio_player_screen/AudioPlayerPresenter.cpp:550:20: error: 'char* strncpy(char*, const char*, size_t)' specified bound 50 equals destination size [-Werror=stringop-truncation]4)C:/Users/info/STM32CubeIDE/workspace_1.7.0/TouchGFX/Gui/gui/src/audio_player_screen/AudioPlayerPresenter.cpp:138:12: error: 'char* strncpy(char*, const char*, size_t)' output may be truncated copying 40 bytes from a string of length 49 [-Werror=stringop-trunc
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.