Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Task Description:I'm trying to update a text on the screen when a button is pressed. I want to achieve this using the event functionality in FreeRTOS.The control flow is more or less like this:Button pressed -> External Interrupt -> Callback function sets event flag -> Task waiting on the event flag 'wakes up', sends a message to the GUI using a message queue. -> Model::tick() polls queue and sees message -> Model updates its state, notifies Listener -> Listener notifies view to update the text -> View prints new text, invalidates text area to be redrawnProblemTouchGFX/build/STM32H7B3I_DISCO/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.o: In function `osEventFlagsNew':d:\tum\tufast\learning\FSMDemoNew/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c:1135: undefined reference to `xEventGroupCreateStatic'd:\tum\tufast\learning\FSMDemoNew/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c:1141: undefined reference to
Hi,I noticed on the GUI Silicon Portfolio that the SPI is used by quite a few micro families for resolutions of up to 480 x 272.I was wondering:1. Do you know if SPI for those micros allows refresh without the tearing effect (i.e. refresh of the whole screen at once)?2. If so, at what colour depth? Do they assume 8 bits per colour?3. Finally, are small animations supported without seeing the tearing effect?Thank you
I've been trying to get the TouchGFX Project work for the above configuration. I have followed the following steps:1) Choose the demo project for the setup mentioned2) Generate code3) Open the project in STM32CubeIDE4) Build Project5) Add the generated external loader under the ExternalLoader folder for the STM32CubeProgrammer.6) Restart the application and "Program and Run Target"After step 6, I get the following errorProgram and Run Target Generate Done Generate Assets make -f simulator/gcc/Makefile assets -j8 Reading ./application.config Reading ./target.config Done Post Generate touchgfx update_project --project-file=simulator/msvs/Application.vcxproj Done Post Generate Target touchgfx update_project .cproject file: ../STM32CubeIDE/.cproject Writing STM32CubeIDE project file: ../STM32CubeIDE/.project Writing STM32CubeIDE project file: ../STM32CubeIDE/.cproject Done Compile make -f ../gcc/Makefile -j8 Reading TouchGFX/application.config Reading TouchGFX/target.co
Hi,I am using a STM32U5G9VJT6Q on a custom PCB with a custom DSI round display and QSPI NOR Flash (MT25QL128ABA1EW9-0SIT) holding the graphics.Below are the screenshots for the configuration of the various modules.But when I tried configuring the FMC but it is greyed out. How do I enable it?Is there a step-by-step video to setup MIPI-DSI with custom board and custom display? I have been looking but didn't find any.If not a video at least some step-by-step guide?Thank you
In TouchGFX Designer, images can be easily be stored in external flash by designating the Section to ExtFlashSection within the program itself. As far as I can tell there is no way to do this for videos using the user interface. I know the images are designated to external flash using "LOCATION_PRAGMA("ExtFlashSection")" within the image's .cpp file. Is this the appropriate statement for video files and where should the statement be placed? There is no video.cpp file, there is a video.bin file and a reference to it in the VideoDatabase.hpp file. Thank you.
I get the following error every I try to to run my simulator. The same generated code is compiling fine on my target.I keep getting an error related to static const touchgfx::FontId HUGE = 2;.Compiling gui/src/pages/views/SettingsCommunicationView.cppIn file included from C:/TouchGFX/4.24.2/env/MinGW/i686-w64-mingw32/include/_mingw.h:12:0,from C:/TouchGFX/4.24.2/env/MinGW/i686-w64-mingw32/include/crtdefs.h:10,from C:/TouchGFX/4.24.2/env/MinGW/i686-w64-mingw32/include/assert.h:15,from ../Middlewares/ST/touchgfx/framework/include/touchgfx/hal/Types.hpp:22,from ../Middlewares/ST/touchgfx/framework/include/touchgfx/canvas_widget_renderer/Cell.hpp:21,from ../Middlewares/ST/touchgfx/framework/include/touchgfx/canvas_widget_renderer/CanvasWidgetRenderer.hpp:21,from gui/src/main_screen/MainView.cpp:1:generated/fonts/include/fonts/ApplicationFontProvider.hpp:18:35: error: 'constexpr' needed for in-class initialization of static data member 'const FontId* Typography::_imp___HUGE' of n
Im new to TouchGFX. Im goung to create my first demostration on a custom setup.I got a NUCLEO-L4A6ZG board with a display shield using an MCU interface.This works:Internal frame buffer 320x240x2 bytesDriver for display, bit banging GPIOs for display controlTask that maps the frame buffer to the display periodically.When I alter the frame buffer manually it is is shown correctly on the display.I have no touch controller on the hardware, expecting to use hardware buttons.This should have been the hard part. But now I have to get TouchGFX working. I got:Two screens defined in the TouchGFX designer with buttons that alters between the screens.Works on simulatorGenerates code with no warnings/errors.Everything compiles in STM32MXCube IDE.From the main function MX_TouchGFX_Init and MX_TouchGFX_PreOSInit is called, and returned.A second task calls the MX_TouchGFX_Process which does not return ast it should not.In the project browser I can see code generated for the screens and the buttons on
Board STM32H7474I-DISCO, TouchGFX V4.24.2.If you keep the analog/digital clock examples running (in the evaluatation board) for (say) 10 minutes then the clock on the LCD screen will be more than 15-25 seconds behind your watch. This is a massive delay: 15-25 seconds delay during 600 seconds is not nothing.Probably reasons (my ideas)The SystemTick (VSYNC = 60Hz, 16.6667ms) is not accurate and it is not generated by an MCU Timer. Hard to believe it.All the examples update the hour/minute/second display (on the LCD) from the TouchGFX's handleTickEvent() interrupt service routine. The update runs once in every second. I can imagine that updating the LCD takes more than 16.6667ms so when the next system tick interrupt occurs the interrupt service is still in service. This way we can miss a couple of system ticks.It would be nice to know which statement is right and how to resolve this issue.I tried to open TouchGFX Academy Tutorial3 example in STMCubeMX and create a new, dedicated timer wi
Hello,I’m using the RVT70HSSNWC00-B from Riverdi and STM32H757XIH6 (datasheet: https://download.riverdi.com/RVT70HSSNWC00-B/DS_RVT70HSSNWC00-B_Rev.1.3.pdf ). After generating the project, regardless of the TouchGFX version (4.24.2, 4.24.0), I encounter the following error: CM7/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)' C
Hi,I tried downloading TouchGFX but even after following the instructions and using the same browser and validating the email and using the same browser, it displays the message below. Where else can I download the latest TouchGFX from?Also:- what is the difference between X-CUBE-TOUCHGFX and X-TOUCHGFX-MPU (second screenshot)- does the latest version include TouchGFX, TouchGFX Designer and all required libraries and code generator in one single package/download?Thank you
Hai, First let me be clear I'm working on STM32F746ZGT7 customized board so I have to bring up the Display of the board now give me some reference video or documentation. Thanks.
Hello,I am working on a TouchGFX-based project using STM32CubeIDE. However, I have encountered an issue after modifying the .ioc file in STM32CubeMX and regenerating the code. Specifically, the .project file inside the STM32CubeIDE folder does not get updated.For example, when I add peripherals such as SPI through the .ioc file and generate code, the corresponding file (stm32g0xx_hal_spi.c) is not added to the project. This results in reference errors during the build process as the newly added HAL files are not included in the project.Is there a way to ensure that the .project file gets updated automatically after generating code?Are there additional steps or settings in STM32CubeIDE or TouchGFX Designer to resolve this issue?If manual intervention is required, what is the recommended approach to add missing files to the project?Thank you in advance for your support!
..
Hi Everyone I have a some difficulties with bringing up the HD40015C40-Y display with TouchGFX or even at all:1. I used the init code provided by adafruit, I set up my SPI with 9bit words and sent it to the display as per the datasheet for the NV3052CRGB datasheet.2. TouchGFX is already setup and LTDC is setup to the timings described in the https://www.adafruit.com/product/5793 init code. 3. I have very strange rainbow lines behaviourCurrently I am running a 35Mhz clock. The 35Mhz clock was derived from the linux device tree overlay for the HD40015C40-Y display. 4. Things I do know: SPI transmission definitely works. There are physical signals for the LTDC pins coming from the STM chip as I checked with an oscilloscope. Interestingly if you read the Circuit Python code from Adafruit, they only have 16Mhz frequency.I have no idea if this is a software problem, hardware problem or a combination of both. void Wrt_Reg_3052(ui
HI,I have a Touch GFX-based application with External Quad SPI flash integrated for Assets, such as images and font. The Application code has more than 150 Screens Due to this internal flash is running out of memory, Even though we are using 0s optimization for GCC there is internal flash memory scarcity. Is there any way I can place the Application code of Touch GFX in the External Flash using keywords like Place part of code on external flash ____attribute__((section(".name") Thanks and Regards JIJO
I'm working with touchgfx using C++ in Visual Studio 19 and I'm trying to configure the simulator environment. I would like to write an additional command program to configure the touchgfx simulator and simulation environment. However, the conflict between Winsock2.h and windows.h kept happening while enforcing socket communication. I tried to find and apply a solution, but to no avail. For example #define WIN32_LEAN_AND_MEAN, #define _WINSOCKAPI_ was written before #define windows.h but failed. I also tried changing the order of #include <windows.h> and #include <winsock2.h> , but it failed.So, if there is an example code that works normally, I would like to refer to it.Please help meThanks
my project use u599 and enabled gpu2d,but after powerup,it rendered one frame then goes into hardfault,this is debug info.what is the problem?
Hi, I'm currently developping an application that need a tactile screen to run, i'm using the STM32F746G-Discovery board, and the project was in a finished state by June 2023. I re-used it now, and I saw that when flashing my old code into new board, the screen was all glitchy (a complete pixel non-sense of all color without any special logic). From the debugger, the program is crashed and called a Hardfault callback. The stack trace indicate clearly that it comes from the touchgfx part.I tried then to create a blank touchgfx project in the version of my old project (4.23.0) and to flash it, the bug occur. And when I create a project from the 4.24.2 version (the last one then) it work as intended. So I concluded that this was just an update problem, but when I do the full touchgfx update procedure according to the guides, the problem still persist. I do the following :- Open my old project in TouchGFX Designer 4.24.2 to update it, generate code through it- Go to STM32Cube ioc file
In my main screen there is a scroll wheel which scrolls the contents of a custom container. The custom container has 5 wildcards. Now I intend to dynamically update those wildcards with my text resources. But I'm unable to do so. Please find my codes attached. Screen1View.cpp #include <gui/screen1_screen/Screen1View.hpp> #include <texts/TextKeysAndLanguages.hpp> void TextUpdate::updateText() { Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE, "%s", touchgfx::TypedText(T_NAT_EVE1).getText()); textArea1.setWildcard(textArea1Buffer); textArea1.setTypedText(touchgfx::TypedText(T_NAT_EVE1)); add(textArea1); } // Screen1View constructor Screen1View::Screen1View() : tickCounter(0), targetItem(0), scrollCompleted(false), digitalHours(0), digitalMinutes(0), digitalSeconds(0), textUpdateIntervalCounter(0), textUpdateObj() // Initialize textUpdateObj { } void Screen1View::setupScreen() { Screen1ViewBase::setupScreen(); tickCounter = 0; // Reset the tic
Hi I was wondering the recommendation on dynamically loading containers a screen vs pre populating the screen with containers. Here is the situation, when the display loads up, is receives data from a controller. The screen for the display displays x amount of container A according to what the controller sent to the screen. This can be anywhere from 0-4 instances of the container. The user may also add/remove instances of the container. So now, according to this situation, I was thinking of dynamically populating the screen with x amount of container A. However. I am not sure whether this is recommended or not.The other option would be to put the max number of containers possible on the screen and make them invisible. Then only make x number visible once the screen loads.
Hello sir, For my project using the STM32F429I-DISC1 board, I need to implement English, Spanish, and German keyboard layouts. Are these layouts pre-configured, or do I need to customize them? If customization is needed, what is the process?
Hi everyone,I’ve been trying to implement a mechanism to save two matrices (each containing values of type Unicode::UnicodeChar*) and an errorCount variable using the Model-View-Presenter (MVP) architecture in TouchGFX. The issue arises when transitioning from one screen (Screen1, Screen2, etc.) back to the main screen (Screen), where the matrices are not saved correctly, although errorCount is successfully stored.Here is the application structure:The main screen (Screen) contains buttons leading to Screen1, Screen2, ..., Screen5, where each screen represents a separate Sudoku game.Each of the Sudoku screens (Screen1–Screen5) has a button to return to the main screen (Screen).The goal is to ensure that, when navigating from any Sudoku screen back to the main screen, the following data is preserved:NumberMatrix (matrix storing Sudoku numbers)NoteMatrix (matrix storing Sudoku notes)errorCount (number of mistakes)I have successfully implemented the mechanism to save and retrieve the error
Hi,I'am a beginner of STM32F469 DISCO-AU1. In the Next week,I will use STM32F469 to light up a external screen. This external screen's driver IC is GC9503CV.It can only work in video mode(In my opinion). In order to do early prepare,So I am trying to let STM32F469I DISCO-AU1 work in video mode,use TOUCHGFX tool,but I failed. I have view a lot about F469 vedio mode,download and rewrite and try for 1 month ,but finally failed. Does now have a STM32F469 DISCO-AU1&TOUCHGFX&Video mode example? I upload two project ,one is video mode failed project named "M1-H800",one is cmd mode succeeful project named "M1-H800-OK" I want to know the key error of my DSI video mode setting. Thanks a lot. This is now a part setting of MX_DSIHOST_DSI_Init:VidCfg.VirtualChannelID = 0;VidCfg.ColorCoding = DSI_RGB565;VidCfg.LooselyPacked = DSI_LOOSELY_PACKED_DISABLE;VidCfg.Mode = DSI_VID_MODE_BURST;VidCfg.PacketSize = 800;VidCfg.N
Good morning,we are trying to program a RVA15MD + NUCLEO-C071RB display. When loading the TouchGFX Demo 4 the programming is not successful (see errors in the attachment). While with the TouchGFX Demo 8 everything loads correctly and the demo works.Can anybody shows me a solution?This demo contains a circular slider, where can I find a similar circular slider that I can process?
Hi Everyone.I use STM32F412G-DISCO to custom TFT 320x240 and set up the touchGFX the same.But when I generate the code it shows me the error "STM32F412G-DISCO.elf section `FramebufferSection' will not fit in region `RAMFB'I checked in the flash file. the RAMFB is configurated 128KI don't know how to fix this. Can anyone help me advice in this case?
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.