Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
HI,I´ve to design a solution with a custom 5 and 7 inch color displays for a more or less static graphics (just some values and maybe some charts).Which interface / MCU would you recommend? MIPI-DSI? Would be fine to have a quite small MCU (preferrable no BGA or WLCSP)Best regards,Achim
I have questions:Which C++ std used when building code in TouchGFX Designer? c++11, c++14, c++17?Which C++ std used when building code in MSVC simulator? c++11, c++14, c++17?Which c++ std ST used to verify and release TouchGFX?Can user change and modify the std? Any risk/ side effects to consider?
Hello!I'm working with the flexButton tool and wanted to change the color via eye-dropper. But once I turned on that option, I was unable to turn it off, I can't disable the color picker and it continously changes the color even after deselecting. Isolating the cause a bit I realized it only happens when I move my cursor off screen into another window and click, operating the tool normally (staying within touchGFX window) correctly turns off the tool after selecting. Just a bug I noticed,Thank you
Hello I have a problem compiling TouchGFX for Keil. My procedure:1/ Run TouchGFX Designer 4.252/ Create New project3/ Go to tab – By Partners – select board Riverdi STM32 121STM32H74/ Click to Create5/ Add Button ( for example)6/ Click Generate CODE7/ Go to project Folder and open ioc file Riverdi_121STM32H7_1_6.ioc STM32CubeMx v6.58/ Go to tab Middleware and Software pack Select FreeRTOS M7 Select tab Advanced settings USE_NEWLIB_REENTRAND ← disable !!! ( for keil it must be turned off )9/ Go to project manager Switch toolchain IDE to MDK keil 10/ Save and Generate CODE11/ After generate code by STM32CubeMx I'm going back to Touchgfx Designer and click generate code again TouchGfx generate code for keil.12/ Run project in Keil13/ Go to Option for target Go to tab OUTPUTand uncheck Browse information14/ Project build target15 / Keil linking problem Not enough information to list image symbols.Not enough information to list load addresses in the image map.Finished: 2 information, 0
hi,I am currently using BMP + rgb565 LTDC display for GUI icon creation without Touch GFX ( Everything is on "" C"" only and Manual preparation icon using hex converter ).Already known one is ! for a small size ,BMP is OK but large size BMP icon will increase the size and processing time . Above Picture size is 6.30KB in BMP Above Picture size is 2.03KB in JPEG Visually i could not see any difference BMP and JPEG in my laptop .Now i am using internal memory for small icon (Now working with stm32h723zgt6 and plan to upgrade to stm32u5 series )Please clarify my doubts. 0. Can i use Hardware Inbuilt JPEG decoder for JPEG GUI icon creation with rgb565 format ? . 1. Do you think i can achieve best frame rate by Hardwa
Hi together,I want to use the Video Widget with the STM32U599 and TouchGFX version 4.25.0, but I can't activate video mode in STM32CubeMX.Are there any new details about this problem?Or is video usage not supported with the STM32U599?
Subject: TouchGFX Custom Application FLASH Overflow Issue & QSPI Memory SetupGreetings Team,I’m new to STM32 TouchGFX and trying to create a custom TouchGFX application following How to integrate TouchGFX in a custom board (The long way round) - YouTubeAfter setting everything up, I encountered the following error during the build:`.text' will not fit in region `FLASH' region `FLASH' overflowed by 296512 bytes I understand that my MCU has only 128KB of Flash, which is insufficient for TouchGFX. I want to configure TouchGFX to use only SDRAM instead of Flash. How does TouchGFX utilize SDRAM, and how can I correctly set it up for this purpose?Additionally, when comparing my custom application to the STM32H7 Dev Board example, I noticed different memory configurations in the Cortex-M7 section under System Core. Specifically, I don’t fully understand how QSPI Flash is mapped as two memory regions starting from 0x90000000.I've attached a screenshot for reference.
I have added digitalTime (digitalClock1), textArea (T_DATE_DISPLAY),,BoxProgress (tankLevelA), CircleProgress (valveOpenA), and button (buttonWithIcon1). Please find the code and the errors of the last trial (please note I have wandered through lots of modifications in vain, I must be doing something fundamentally wrong):ERROR:: Please see Reply due to excess charactersmain.c please see the 2nd. reply due to number of charaters model.hpp#ifndef MODEL_HPP #define MODEL_HPP #include <touchgfx/hal/Types.hpp> #include <touchgfx/Model.hpp> class Model : public touchgfx::Model { public: Model(); void tick() override; // Demo mode methods float getTankLevel() const { return tankLevel; } float getValvePosition() const { return valvePosition; } bool isDemoModeActive() const { return true; } protected: // Demo mode variables float tankLevel; float valvePosition; bool tankIncreasing; bool valveIncreasing; void updateDemoData(); }; #endif
Dear STM Community,Over the past while, I have steadily (and successfully) progressed through many STM32/TouchGFX tutorials - with the ultimate aim of sending/receiving data over an RS485 link. Most of these tutorials are produced by Controllerstech. All has been going well until one particular tutorial.I am using the very latest software:TouchGFX Designer 4.26.0STM32CubeIDE 2.0.0STM32CubeMX 6.16.0When I build the design in STM32CubeIDE, I get the error message:make: *** No rule to make target 'C:/Users/XXX/Desktop/TouchGFX-projects/TouchGFX-UART-Control/TouchGFX', needed by 'Utilities/jpeg_utils.o'. Stop."make -j16 all" terminated with exit code 2. Build might be incomplete. One thing I have noted is that this directory doesn't exist: C:/Users/XXX/Desktop/TouchGFX-projects/TouchGFX-UART-Control/TouchGFXCould this be a path length truncation - and hence the error I have spent days trying to drill down to why this error appears.I have loo
HiI'm trying to make a text that gets bigger automatically with smooth animation.Is there any way to make it happen using touchgfx?I tried, but I couldn't find a good way to implement it.I tried to make two typed text (one bigger, one smaller), but switching these two seems too unnatural and awkward.Is there any way to dynamically change font size with animation?
I have the need to access items of a scroll wheel that are not visible on the screen (but that are already initialized)For instance, I have a scroll wheel with each items a toggle button.With the ScrollUpdateItem I'm able to set the correct index to the item withScrollUpdateItem(alarmsItem& item, int16_t itemIndex) { item.setIndex(itemIndex)where setIndex is a function that set the index in the itemNow, this works but, I've got the issue when it comes to the callback of each toggle.For instance, once a callback is called, I need to process items different from the one selected so, I need to access the SelectorScrollListItemsFor some reason, despite setting SelectorScroll.setNumberOfItems(6); I'm seeing TouchGFX generating touchgfx::DrawableListItems<alarmsItem, 5> SelectorScrollListItems; so, when I try to access SelectorScrollListItems[5] I'm seeing the call to the assert TYPE& operator[](int index) { assert(index >= 0 && index
I wrote the following code in TouchGFXHAL.cpp__attribute__((section(".ram_d2")))uint16_t cache[144*1024]; //288KB cachevoid TouchGFXHAL::initialize(){ // Calling parent implementation of initialize(). // // To overwrite the generated implementation, omit the call to the parent function // and implement the needed functionality here. // Please note, HAL::initialize() must be called to initialize the framework. registerTaskDelayFunction(&OSWrappers::taskDelay); setFrameRefreshStrategy(REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL); TouchGFXGeneratedHAL::initialize(); GFXAdapter::gfx_adapter_lcd_init(); Bitmap::setCache(cache, sizeof(cache)); Bitmap::clearCache(); Bitmap::cache(BITMAP_ELAINA_ID);}bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes){ // If requested data is located within the memory block we have assigned for ExtFlashSection, // provide an implementation for data copying. for(uint32_t i = 0; i < numBytes / 2; i++) *((uint16_t
I was examining the .ioc file from TouchGFX project and found out that LTDC_G0 is on PF5. However in the schematic provided for STM32N6570-DK (MB1939) LTDC_G0 is on PG12. I suspect the provided schematic is the correct one, and an error in the .ioc was never spotted as it is the LSB, but can somebody confirm this is the case?
Hi fellas,(I am using a Riverdi touchscreen-> i have a dual core stm32) (i am working on the GUI part with TouchGFX Designer)Basically I am wondering if there is a way to execute a function in ScreenView.cpp, perhaps call a function in the presenter to interact with a peripheral, and force manually a refresh of the screen.I tried using presenter->foo() expecting TouchGFX to be a good boy and do a detour by the refreshing part before actually going in the function of the presenter, but it is apparently not. Ngl i haven't tried calling a function in the Model as i expect the same result.My question is therefore: Am i forced to make my application dual-core with one core handling the refreshing of the GUI and the other handling interactions with the peripheral?If not, what other ways are there? I tried manually calling TouchGFX::tick though i am convined it is not a good idea as ScreenView is already in the thread fathered by TouchGFX::tick, and if that's the solution i don't know w
Hi all,I managed to move my fonts to external serial flash.Now I want TouchGFX 4.25 to retrieve and use them but it doesn't seem to work.My question is this. Is it possible to do so, and if yes, is there some kind of appnote on this?Thanks
Hi, I'm using a custom board based on STM32U5G9J-DK1.I am using DSI Video mode with double buffering, but i had some issues in the DSI video mode.I am using CO5300 driver-based 466 X 466 Display which supports DSI video modeI successfully got a display displaying the actual GUI but it is slightly shifted from the left and from upper and bottom side as well I am attaching images here; the first image is the simulator, and the second is the actual display.Simulator Image:Actual Hardware:My configuration for clocks are as given belowMy MX_DSIHOST_DSI_Init() function looks like belowstatic void MX_DSIHOST_DSI_Init(void) { /* USER CODE BEGIN DSIHOST_Init 0 */ // Power up sequence HAL_GPIO_WritePin(PWR_EN_GPIO_Port, PWR_EN_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(BACKLIGHT_EN_GPIO_Port, BACKLIGHT_EN_Pin, GPIO_PIN_RESET); HAL_Delay(10); HAL_GPIO_WritePin(PANEL_RESET_GPIO_Port, PANEL_RESET_Pin, GPIO_PIN_RESET); HAL_Delay(10); HAL_GPIO_WritePin(VCI_EN_GPIO_Port, VCI_EN_Pin,
../Middlewares/ST/touchgfx/framework/include/mvp/MVPApplication.hpp:22:10: fatal error: new: No such file or directory how to solved this? cubeide 2.0.0 GNU Tools for STM32 (14.3 rel1)
I am using STM32H750B-DK (DK32H750BSAT1). Following st tutorial in:https://www.youtube.com/watch?v=dx7xHRH9YXg The project built and ran successfuly on the board. Unfortunately upon implemeentig the updateDate on a textArea the update stopped completely for both time (was originaly uopdating before adding the text widget) and date. I have then deleted the textArea widget and commented out the relevant lines in the script, the update returned normally. I suspect the typogrphies is the root cause of the problem (I need advise on that. MyGFX is 4.26.0 , I couldn't get my way around Texts smoothly).
I have designed a board with STM32H750B-DK With exact same pin configuration with QSPI amd SDRAM connected exactly to the reference board.QSPI is running properly by viewing using STM CUBE Programmer (External loader selected)But when I am using touchg GFX sample code it gives Hardfault error I believe that SDRAM is failing. (I have removed the touch screen routine to check the flow of code)
Hello. I'm using STM32H747XI with touchgfx designer 4.24.2 and Free RTOS 10.3.1. In this RTOS I setup some threads(with osPriorityNormal 24) and a Periodic Timer at 400ms. I notice that when I start this thread void threadEntryPoint() { // Pulisco la FIFO del'RX USART __HAL_UART_FLUSH_DRREGISTER(BARCODE_UART); char msg[BARCODE_LENGTH+1]; while (;;) { memset(msg, 0, sizeof(msg)); // Appena vedo il primo carattere ... if ( HAL_UART_Receive ( BARCODE_UART, (uint8_t*)&msg[0], 1, 50 ) == HAL_OK ) { // ... ricevo gli altri HAL_UART_Receive ( BARCODE_UART, (uint8_t*)&msg[1], BARCODE_LENGTH - 1, 50 ); if (strchr(msg, BARCODE_SUFFIX)) { queue.put(msg); } } } } Timer will not trigger. Is the reason that I have no osDelay ? Or a priority question ? Thankyou in advance.
Hello I'm using TouchGFX on the STM32H757I-EVAL board and facing D-Cache related issues. The framebuffers are in SDRAM, other data is placed in AXI SRAM. D-Cache is enabled, the caching policies setup in the MPU are: SDRAM: Normal Write Back AXI SRAM: Normal Write Through The cache maintenance operations in TouchGFXGeneratedHal.cpp invalidate the entire cache, which seems a bit heavy handed, but work fine so far: void TouchGFXGeneratedHAL::InvalidateCache() { // Because DMA2D access main memory directly, the DCache must be invalidated // becuase it could hold a wrong image of the framebuffer. That's done // using the function SCB_CleanInvalidateDCache(). Remember to enable // "CPU Cache" in the "System Core" settings for "Cortex M7" in CubeMX // in order for this function call to work. if (SCB->CCR & SCB_CCR_DC_Msk) { SCB_CleanInvalidateDCache(); } } void TouchGFXGeneratedHAL::FlushCache() { // If the framebuffer is placed in Write-Back cached memory (e.g. SRA
It turns out the GDB shipped with TouchGFX 4.25.00 has an issue where it can't set the breakpoint in VSCode when the software is running.The only workaround is to set the breakpoints before launching the debug.The issue is reported it https://github.com/microsoft/vscode-cpptools/issues/13191#issuecomment-2787932838To fix the issue you can use the GDB shipped with the latest version of MYSYS2 https://packages.msys2.org/packages/mingw-w64-x86_64-gdbYou just run on the terminal pacman -S mingw-w64-x86_64-gdb In the launch.json you set "miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe", (or the location where it has been installed) and in the task.json in "env": {"PATH": "C:/msys64/mingw64/bin;"}
I am using the STM32F469 development board to output MIPI video to a custom screen (GC9503CV), and the screen shows tearing.The left side of the screen displays normally, while the right side shows a jagged appearance. How should I locate and resolve the issue?
Hello, I'm currently building an application with TouchGFX that has many screens. We don't have a touchscreen, and only use hardware buttons. My application requires that if a trouble code is detected on the vehicle bus, relevant information should popup on the screen. The popup takes over the screen, and button presses that the user enters are handled by the popup instead of the previously open screen. The user can acknowledge the trouble code by pressing a hardware button which will make the popup go away and return to the screen that had been previously open. If multiple trouble codes are active simultaneously the highest priority trouble code will show up first. Pressing the acknowledge button will cause the next highest priority trouble code to show up until all active codes have been acknowledged, at which point the popup will go away and return to the screen that had been previously open. I've thought through two possible implementations for this problem and neither works p
Setup:TouchGFX v4.23.0STM32H747Scroll wheel with selected item template Issue:I dynamically set the number of items in the scroll wheel using the function setNumberOfItems() so in the TouchGFX designer I set the Number of Items to 0. As an example, I am displaying 4 items but have 8 to choose from. When the scroll wheel is first shown, the first 4 items (index 0 - 3) are rendered correctly. When I push down, the screen correctly shifts and shows items 1 - 4. When I push down again, the first item (index 2) is shown in the first, selected position and is shown in the 4 position as well. As I continue to navigate down in the list, sometimes there are other duplicates, sometimes the list is correct. Workaround:I tried a few different things but setting the Number of Items in the designer to 2 (I didn't try any other value) solved the duplicate glitch. So it seems, that having the Number of Items set to 0 is what causes this issue in 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.