Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hi. Downloaded the latest 4.16 TouchGFX toolchain; latest STM32CubeIDE; latest STM32CubeMX.Selected STM32F429i-DISC1 kit -> imported the Pool Lights GUI. Nothing else. Ran fine on the simulator; runs fine on the target. Generated Code. No errors. Very nice.Wish to interact with CubeMX using this GUI generated project. Compiles without errors on the STM32Cube IDE.Raises many errors with IAR / Keil compilers.Can post more details later today.Any known issues with these toolchains?Thanks.
I have an application where all the texts are taken from (non-single use) resources. However I still have many (100s) of single use resources in my project from before I converted the text to use a (non-single use) resource. The majority of these single use resources are "New Text". My understanding was these single use resources should be deleted automatically when no longer used. Is this feature broken, or have I misunderstood?Is there some way to manually tidy these no longer used single use resrouces?Using TouchGFX Designer v4.15.0.
Hello,I have a use case where a custom container with a ScrollList of items need to be displayed but grey-ed out and disabled (as in not touchable) at the start of the screen transition and only becomes active once a button on the screen is clicked (e.g. an "Edit" button).What is the recommended way to achieve this?Thanks for everyone's time.
Thank you for helping.environment:stm32CubeIDE Ver1.3.0TouchGFX Ver4.15.0Board: STM32F746G-DISCOWhen I step, it just enters the interrupt handlerI can't move on.With STM32F769I-DISCO, there is no such symptom.Is it a problem with the microcomputer?Please tell me how to solve it.
Hello everyone,I am currently developing a project using the STM32F49I-DISCO board.What I can already do :create a project in TouchGFX and run it on the target,create a project in TouchGFX, generate the code, import it in STM32CubeIDE and flash it to the board, works.What I can't do and want to do :Modify the imported TouchGFX project in STM32CubeIDE because files are as shown on the picture attached (they are duplicated/linked from somewhere and I can't figure out how to properly add for example a .c file for my FreeRTOS task). I also can't have the same integration of TouchGFX in STM32CubeIDE (I can't open the layout from STM32CubeIDE because the TouchGFX folder is not shown).Thank you everyone!
Hi! Given the circumstances, I've finally found time to learn the STM32 dev environment. I have a STM32F769iDisco board.I've successfully used TouchGFX v4.13.0 to start a new project with a simple interface (background and button). I can compile, simulate and run on target.I've also been able to use CubeMX to open the ICO file and to modify board settings and then compiling & running using TouchGFX.The issues begin when I try and debug using STM32CubeIDE. I open the project in a new workspace, build without errors, but when I try and run or debug I get an error.In the console I get:STMicroelectronics ST-LINK GDB server. Version 5.5.0 Copyright (c) 2019, STMicroelectronics. All rights reserved. Starting server with the following options: Persistent Mode : Disabled Logging Level : 1 Listen Port Number : 61234 Status Refresh Delay : 15s Verbose Mode : Disabled SWD Debug : Enabled InitWhile : Enabled Waiting for debugger connection... Debugger connected Debugger co
Hello!I want to click on the touch screen, get the coordinates, then, without releasing my finger, move my finger and get new coordinates continuously.Like slider widget)How do I do this?This codevoid PRINT_PROGRESS_ScreenView::Box3DClickHandler(const BoxWithBorder& b, const ClickEvent& evt) { if (&b == &Box3D) { //Implement what should happen when 'box' is touched/clicked here. // if(evt.getType() == ClickEvent::PRESSED) // { int x = evt.getX(); int y = evt.getY(); // Do something with x and y, such as... // presenter->touchRegistered(x, y); // you write this function in the presenter // } } }gives coordinates only twice time - at pressing and at releasing ....
HI All,I would like to know how is possible block any interaction with other objects when Slide Menu is extended.I have a screen with three big buttons (2nd - center picture). On this screen I enabled an Vertical Slide menu witch cover more than half screen (3rd - right picture). When I press the blue round buttons these ones change status correctly. Instead, if I press in the middle of this buttons (on red cross), I obtain a reaction on the big buttons in the ground (I mean behind the slide menu). When Slide menu is closed, I found the big button with different status (1st - left picture) How I can block all these involuntary interactions?Can I activate some control (on big buttons on Main Screen) when animation of slide menu finish?How is it possible to give precedence to the slide menu?thanks in advance
I've created a tiled image that is 200% the width of the screen. The idea is to make it appear infinite when scrolling either direction. Any ideas on how to accomplish this?
Hello!I have a 3D libray, which generates pixeldata.I didn't found functions or widgets, which allow to draw on it's canvas.So, I want to direct write image to memory.Like thisfor(uint16_t x = 0; x <= 700; x++) for(uint16_t y = 0; y <= 200; y++) *(__IO uint32_t*)(0xD0000000 + (x + y * 1024)*3)=0x0000FF00;How can I get page, which is displayed now (because I need to write to another page) ?functions virtual uint16_t* getTFTFrameBuffer() const; virtual void setTFTFrameBuffer(uint16_t* adr);declared in TouchGFXGeneratedHAL.hpp, are inaccessible
I have a requirement to do this on the command line on Windows 10. I tried to research on Google and on this site but have not been able to find instructions on how to do this.
I'm using the dfu bootloader, but I can't figure out the cause.I entered the address value of the bootloader as well as the address value (0x08010000) of the application and the offset after viewing several posts.It works if you proceed with the following procedure.-1- Download the applicaion (custom software) with st-link.-2- Erase the all memory.-3- Download the bootloader application with st-link.-4- Upgrade the created dfu file with the dfuse program.If you proceed with the above procedure, the execution goes well.However, if you add an image to the application and recreat the dfu file and step -4- is executed, it will not run.Do you have any predictions about the problem?p.s : UI work was done using touchgfx and cpu model is stm32f746g-discovery.
I'm trying to start the Hello World application and the application generates HardFalut when calling the function GUI_DispStringHCenterAt. While debugging it seem that within the library function GUI__GetLineDistX a call to null pointer function happens. As i can see the third parameter stored at r2 points to a non populated function and jump to 0x0000000 happens.Stack call thread is:Thread #1 (Suspended : Signal : SIGINT:Interrupt) HardFault_Handler() at stm32l4xx_it.c:67 0x800056e <signal handler called>() at 0xfffffff9 0x0 GUI__GetLineDistX() at 0x800c7b2 GUI_DispString() at 0x80073ec GUI_DispStringHCenterAt() at 0x80074f4 MainTask() at BASIC_HelloWorld.c:25 0x8000286 main() at main.c:102 0x800038cI've noticed this behavior in using System workbench and import of examples from: STM32Cube_FW_L4_V1.14.0 and then PATCHED to 1.15.0STM32Cube_FW_L4_V1.16.0STM32Cube_master (from github version 15 with latest STemWIN downloaded from STM)Is there any possible cause that is alre
Hello,I use a STM32F429 with touchgfx.From my GUI, I would like to use hardware features of my card like RTC for example, so I activated the RTC on the STM32 and re-generated the code.So from my "Screen3View" file generated by touchgfx, I make an include of #include "stm32f4xx_hal_rtc_ex.h" to be able to use the rtc features on my GUI.But when I compile, I get more than 300 errors.Also, I noticed that if I import any module "stm32f4xx_hal..." then I get exactly the same errors.I don't understand the errors...Here's my code and it's the third line that poses a problemand thats the errors i get...#include <gui/screen3_screen/Screen3View.hpp> #include <math.h> #include "stm32f4xx_hal_rtc_ex.h" Screen3View::Screen3View() { } void Screen3View::setupScreen() { Screen3ViewBase::setupScreen(); dynamicGraph1.clear(); } void Screen3View::tearDownScreen() { Screen3ViewBase::tearDownScreen(); } void Screen3View::handleTickEvent(){ if(++tickCounter % 10 == 0){ //dynamicGraph1.clea
My touchgfx GUI is freezing on my custom LCD running on STM32 MCU. I checked signalVSync is always triggered . What could be the problem ?Here is my OSWrapper code using namespace touchgfx;static xSemaphoreHandle frame_buffer_sem;static xQueueHandle vsync_q = 0;// Just a dummy value to insert in the VSYNC queue.static uint8_t dummy = 0x5a;void OSWrappers::initialize(){ vSemaphoreCreateBinary(frame_buffer_sem); // Create a queue of length 1 vsync_q = xQueueGenericCreate(1, 1, 0);}void OSWrappers::takeFrameBufferSemaphore(){ xSemaphoreTake(frame_buffer_sem, portMAX_DELAY);}void OSWrappers::giveFrameBufferSemaphore(){ xSemaphoreGive(frame_buffer_sem);}void OSWrappers::tryTakeFrameBufferSemaphore(){ xSemaphoreTake(frame_buffer_sem, 0);}void OSWrappers::giveFrameBufferSemaphoreFromISR(){ // Since this is called from an interrupt, FreeRTOS requires special handling to trigger a // re-scheduling. May
folder is model ,main_page_screen, pw_touchgfxactivev_screen.I want to use the variables A declared in the model in main_screen and pw_page_screen. I don't know how to declare variables and how to use them.For example, variable A is declared in model.cpp.In pw_touchgfxactive_screen.cpp, enter 1 for variable A.I want to use variable A in main_page_screen.cpp.Thank you for telling me how to pass the variable A value entered in pw_touchgfxactive to main_page_screen.cpp.
I'm trying to write code for an SNTP clock using the UTIL_LCD routines in the STM32H735G-DK firmware. I'm using lwIP and FreeRTOS for my implementation. I have the clock working with the LCD_TRACE display (the logging display that is used by the webserver demo.)I've tried removing the LCD_Trace code and using UTIL_LCD_DisplayStringAt code.The program crashes when FreeRTOS starts the kernel (the "SVC 0" crash).I suspect I'm running out of memory. Unless there is a CRASH_NON_ST_CODE macro in the libraries, there's no other reasonable explanation.I'm using the STM32Cube IDE. What's the best way to track memory? What special requirements are there for the UTIL_LCD routines? What's different between the LCD_Trace routines and UTIL_LCD? The version with LCD Trace works, but I change one line, it crashes.
I am creating a custom keyboard following the example provided.The code in the example is simple to understand and follow.However, in my custom keyboard the following function behave weirdlygetBufferPosition()I have 2 callback areas in my keyboard, one for backspace, and the other for 'Enter' functionality.When I call the function from the key pressed callback the function return the correct value.However, when I call the same function from the backspace callback it always returns 0.What is going on in here ?please see the attached screenshots.
Hello!I'm starting to build a new TouchGFX project.So, as usual, in CubeIDE I activated XCUBE TouchGFX in Software Packs (V 4.16), defined LTDC interface, etc. and generated a new blank interface starting from ApplicationTemplate.touchgfx.part.The problem is that, after recompiling, an error occurred:Error: Cannot find the specified linker script. Check the linker settings in the build configuration.My board is custom STM32H743 and I used STM32H743IITX_FLASH.ld and STM32H743IITX_RAM.ld from my prev projects.In makefile I have:... # Tool invocations TEST_0_USB_CDC.elf: $(OBJS) $(USER_OBJS) fail-specified-linker-script-missing arm-none-eabi-g++ -o "TEST_0_USB_CDC.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m7 --specs=nosys.specs -Wl,-Map="TEST_0_USB_CDC.map" -Wl,--gc-sections -static -L"C:\Users\TECH\Projects\in_test\TEST_0_USB_CDC_mk3_TouchGFX\Middlewares\ST\touchgfx\lib\core\cortex_m7\gcc" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -u _printf_float -u _scanf
Everything is working fine having the framebuffer in RAM_D1 (0x24000000).This is what I have done trying to move my frame buffer to RAM_D2 (0x30000000):I have setup the "TouchGFX_Framebuffer" in the .ld file to RAM_D2 TouchGFX_Framebuffer : { *(TouchGFX_Framebuffer) *(TouchGFX_Framebuffer*) . = ALIGN(4); } >RAM_D2I'm enabling RAM_D2 clock in the beginning of main() __HAL_RCC_D2SRAM1_CLK_ENABLE(); __HAL_RCC_D2SRAM2_CLK_ENABLE(); __HAL_RCC_D2SRAM3_CLK_ENABLE();Configuring the MPU, setting the RAM_D2 region same as RAM_D1 regionWhat do I miss out for this to work?
TouchGFX seems to mangle all of my .png images. The image is loaded directly into the flash and mapped in BitmapDatabase.cpp. Nothing special going on. Has anyone encountered this or have any troubleshooting ideas?TouchGFX Designer Screen Capture:TouchGFX Designer Screen Capture:Target Picture:
What's the possibility of enabling a keyboard that can enter multiple lines text? Like in a chat app when a message can be compromised from multiple line.The provided keyboard example does not contain the "Enter" key
I'm wondering if there is a way to force TouchGFX to draw an entire screen again. My project uses a DSI display with internal GRAM. To save power, I turn off the display when possible and turn it on only when needed. This of course erases the GRAM so when the display turns on again it is just blank. I've tried adding a function to ModelListener and implementing it in a presenter that calls view.draw(). Unfortunately, this doesn't appear to redraw anything. Also, it isn't ideal as I'd have to implement that function for every presenter in my project.I'm hoping there's a simple way to instruct TouchGFX to simply redraw the most recent screen.
I spent some hours to prepare replicate setup for this, i check all steps between versions from 4.13 to 4.16 and result is upgrade from 13 to any version without IOC file work ok.Folder TouchGFX\target\generated\ is ok when upgrades is over TouchGFXdesigner.Then i start from 4.13 and do upgrade by migration in MX IOC software packs.Regenerating and build same code base result for last 4.16 to bug video.In this version files in Folder TouchGFX\target\generated\ is big different and seems oswrapper, dma , usw work very bad.Now i result with in IOC set 4.15, but touchgfx i can upgrade in touchgfx to 4.16.HERE IS BUG VIDEO HERE IS OK VIDEO https://share.icloud.com/photos/006UdfDWtEWrOgs7uSHsBHl_AEDIT1@Romain DIELEMAN i make next check and create demo project from 4.16 files in target generated seems ok.Next my step import project to cubeIDE open IOC and regenerate code. Result files overwrited with bug. For compare info good file STM32DMA.cpp have 8k and bad 15k. I dont understand th
Hello, I would like to ask if it is permissible to use pointers for data handling through the MPV model. I have valid data stored in a structure defined in the MODEL class. When the data changes, only the pointer to structure is sent from MODEL to VIEW. Then, In the view class are data stored to local variable through this pointer. Thanks for comments.
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.