Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
This has happened multiple time where when I try to delete a Text object while in the Search Results screen of TouchGFX Designer an error occurs. It does seem to delete the entry but gives an error. Attached is the error popup that occurs. Here is the Log file entry... 2022-10-05 10:23:21,060 [1] ERROR TouchGFXDesigner.App: Sequence contains no matching element System.InvalidOperationException: Sequence contains no matching element at System.Linq.ThrowHelper.ThrowNoMatchException() at TouchGFXDesigner.Main.Project.Texts.TextTab.TextTree.TextTreeViewModel.TextSelection_SelectedTextsChanged(Object sender, NotifyCollectionChangedEventArgs e) at TouchGFXDesigner.Main.Project.Texts.TextTab.TextSelection.RemoveTextFromSelected(Text text) at TouchGFXDesigner.Main.Project.Texts.TextTab.TextGrid.TextRowViewModel.set_IsItemSelected(Boolean value) at TouchGFXDesigner.Styles.Behaviors.TextDataGridBehavior.SelectItem(ItemContainerGenerator root, Object item, Boolean isCtrlDown)
i wanted to view 10 adc data from UART and display it on 10 text area , can i use a simple for loop or any other methods, i wanted to change the text area from 1 to 10 while recievingon every tick
..
Hello,I am using the STM32H7B3I-EVAL evaluation board with a code generated by TouchGFX 4.20.0. My goal is as follows:Using a button (in this case, the Wakeup button on the evaluation board), change a PWM's duty cycle in stages (0% -> 25% -> 50% -> 75% -> 100% -> 0% -> .....)Display the current PWM duty cycle as a percentage on the displayTo do this, I am using a timer (TIM2) set to PWM Generation CH1. The code below is how I initialize this timer.static void MX_TIM2_Init(void) { /* USER CODE BEGIN TIM2_Init 0 */ /* USER CODE END TIM2_Init 0 */ TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_OC_InitTypeDef sConfigOC = {0}; /* USER CODE BEGIN TIM2_Init 1 */ /* USER CODE END TIM2_Init 1 */ htim2.Instance = TIM2; htim2.Init.Prescaler = 280-1; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 1000-1; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABL
Hello,I've found a bug during code generation using STM32CubeMX on STM32H725AE MCU.STM32CubeMX doesn't generete correct code for DMA2D using RGB565 format. In function:void MX_DMA2D_Init(void) { /* USER CODE BEGIN DMA2D_Init 0 */ /* USER CODE END DMA2D_Init 0 */ /* USER CODE BEGIN DMA2D_Init 1 */ /* USER CODE END DMA2D_Init 1 */ hdma2d.Instance = DMA2D; hdma2d.Init.Mode = DMA2D_M2M; hdma2d.Init.ColorMode = DMA2D_OUTPUT_RGB565; hdma2d.Init.OutputOffset = 0; hdma2d.LayerCfg[1].InputOffset = 0; hdma2d.LayerCfg[1].InputColorMode = DMA2D_INPUT_RGB565; hdma2d.LayerCfg[1].AlphaMode = DMA2D_NO_MODIF_ALPHA; hdma2d.LayerCfg[1].InputAlpha = 0; hdma2d.LayerCfg[1].AlphaInverted = DMA2D_REGULAR_ALPHA; hdma2d.LayerCfg[1].RedBlueSwap = DMA2D_RB_REGULAR; hdma2d.LayerCfg[1].ChromaSubSampling = DMA2D_NO_CSS; if (HAL_DMA2D_Init(&hdma2d) != HAL_OK) { Error_Handler(); } if (HAL_DMA2D_ConfigLayer(&hdma2d, 1) != HAL_OK) { Error_Handler(); } /* USER C
Hi,I am working on a TouchGFX project, which connects my STM32F429IIT6 with a custom board with 2.4" TFT display. The Display include a ST7789vi chip and uses the 16-bit (RGB-5-6-5) input. I have found the STM code for the st7789h2.How do I get the right format for transferring the pixels from the framebuffer memory to the display?Thanks
Hello,I am running a TouchGFX compiled code and am attempting to display a value from my code onto the LCD screen. I used the Tutorial 2 format for using the Unicode:snprintf function, but I am getting an error."TEXTLED_STATUS_SIZE" was not declared in this scope. "textLED_StatusBuffer" was not declared in this scope.I have included a screenshot of my TouchGFX Designer properties, showing that the name textLED_Status is correct. Additionally, I have included the snippet of my code:void Screen1View::UpdateLED(uint32_t value){ Unicode::snprintf(textLED_StatusBuffer, TEXTLED_STATUS_SIZE, "%d", value); // Invalidate text area, which will result in it being redrawn in next tick. textLED_Status.invalidate(); }I ran Tutorial 2 separately and this issue did not occur.What would cause this?
Hello,I'm implementing an application with touchgfx, i use wildcards with buffer, and two buttons that increse or decrease the value in the wildcard.When i go back to previous screen, and re enter the screen with wildcards, those resets to initial value "0" that i set in touchgfx designer, then when i press the buttons to increase or decrease the value, this updates correctly to the value where it last was set, but only after changing it.How do i keep this values shown after i change and re enter the screen, without them changing to zero?Thanks a lot.
Hi,I want to transfer DCMI data using DMA into SRAM and then process this with the CPU.I'm using the STM32H743.What will be faster:A:Using DMA1 or DMA2 to transfer data into SRAM1 or SRAM2 and access it with the CPU.B:Using DMA (MDMA?) to transfer data into AXI SRAM and access it with the CPU.Which DMA transfer will be faster?Which CPU access (SRAM1/2 or AXI SRAM) will be faster.I will access the data with the CPU mostly sequential. So cached data would be a pre.Will accessing SRAM1/2 be cached?WIll accessing AXI SRAM be cached?
Hello, I have been following this tutorial to enable touch screen on my STM32F469-Discovery board for STemWin.I have done all the things shown in article. Code compiled successfully. But I can see only blank screen.In extra to the tutorial, I need to add stm32469i_discovery_lcd.h, Utilities/Fonts/fonts.h and stm32469i_discovery_sdram.h.By adding these task I got an error on redefining the DSI_IO_WriteCmd function which already defined in STemwin_wrapper.c. SO I removed defination from stm32469i_discovery_lcd.c and compiled.Can Anyone help ?
Hello,we try to display graphs as performant as possible. Unfortunately the rendering takes a long time. Especially when several are integrated in ScrollWheels.The CacheableContainer should be made for this.We put a graph and more widgets in the container.But we don't get the caching to workThe short explanation in the documentation doesn't help much:https://support.touchgfx.com/docs/development/ui-development/scenarios/achieving-better-performance-with-cacheable-containerThe hpp of our CacheableContainer:#ifndef CACHABLE_CURRENT_VALUE_HPP #define CACHABLE_CURRENT_VALUE_HPP #include "appinclude.h" #include "guiinclude.hpp" #include "basicinclude.h" #include <gui/common/FrontendApplication.hpp> #include <touchgfx/containers/CacheableContainer.hpp> #include <touchgfx/widgets/graph/GraphWrapAndOverwrite.hpp> #include <touchgfx/widgets/graph/GraphElements.hpp> #include <touchgfx/widgets/canvas/PainterRGB565.hpp> #include <touchgfx/widgets/graph/Graph
I am using a TM32429i-EVAL1 and TouchGFX 4.20.0, and cannot use any of the example projects. I am getting this error message.Furthermore, I am trying to run some old projects I have on TouchGFX but the 'simulator' button appears grayed out. Could it be that the files I'm trying to run are file version 4.16?
When I created the TouchGFX project, I set it up to 800 *480.However, the LCD has been changed, so we have to change the things we have worked on so far to 854*480.I am trying to change the resolution in TouchGFX, but the setting part is not allowed to be modified.We need to change 800*480 to 854*480. If anyone knows how to do it, please ask
Hello,I am preparing a much larger code that handles a slew of tasks (gathers CAN data from up to 5 different nodes, reads ADCs, sends GPIO PWM signals and ON/OFF signals, LCD display screen via TouchGFX). I have interrupts for specific tasks (when a CAN message is received, timer interrupt, etc.). Additionally, I will want to periodically send information to different CAN nodes. I understand that it is considered a good practice to minimize the amount of code in the interrupt functions, so I picture the code sequence being as follows (for the CAN receive portion, for example):CAN Message is receivedInterrupt is enabled (enter interrupt function)Read RxData and store it in the the variables relevant to the data sentDo arithmetic or logic based on data received <------------------------------What I want to know is the best practice to do step 4. The arithmetic and/or logic could be a fair bit of code, so I know I shouldn't do it in the interrupt function, but the TouchGFX display por
Hello Everybody, I am trying to create a TouchGFX project for my custom board. I follow embryonic.dk's video on Youtube. However I couldn't manage to build a project. I received errors in the first image. It says No such file or directory for app_touchgfx.h. However, It is in the project. The interesting thing is when I check it's properties the exclude resource from build option was selected.I deselect it. But I receive more errors. I tried to deselect exclude from build option for every folder in the project manually but it didn't work. How can I create a TouchGFX project for my custom board? I was not expecting that it's gonna be that hard. I don't have much knowledge. I am using STMCubeIDE version 1.10.1, TouchGFX generator version 4.20 and TouchGFX Designer version 4.20.
Hi there,I am using TOUCHgfx_4.19.1 and STM32CUBEIDE 1.9.1 to customise my STM32F429I-DISC1 board (E01 Version). I built a very simple button press project from Touchgfx, however, press cannot be detected on this touchscreen after I debugged and loaded this code in STM32CUBEIDE. I did many attempts including loading the demo firmware back to my board to check whether problem occurred due to the board damage, but touchscreen functioned perfectly when I it through TRUESTUDIO (Original code doesnt have CUBEIDE version). I converted this demo project version from TRUESTUDIO to STM32CUBEIDE, it still can be deployed on board successfully and touchscreen worked functionally. Therefore, I concluded that my board wasnt damaged. I also suspected whether it's because of the version mismatch between two software: touchgfx and cubeide, so I tried different version combination and found:Touchgfx 4.20 works fine with cubeide.1.10.1, however, my demo code converted by TRUESTUDIO cannot be run.Touchgf
Hi All,I am running a docker container on an M1 macbook to build an application that uses touchgfx.I got everything building natively on M1 macbook, except touchgfx tools (e.g. imageconvert) as in that case I get error: qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directoryWould it be possible to get the Touchgfx framework tools that are compatible to run natively on M1 macbooks?Best regards,Bilal
Hello there, for some reason, I TouchGFX 4.16.1 is the last version that would connect and download examplesfrom 4.17 version onwards, I get no I have internet, I don't know why the app thinks I do not have internet, I would use TouchGFX 1.16.1 but unfortionaly it does not have any examples for my STM32F769i DISCOvery 0I found out that it tries to download: sw-center.st.com/touchgfx/pacman/packages.json.zipbut for some reason it still thinks it has no internet, is there any folder I can manualy download packages.json.zip so I don't need internet for TouchGFX? Does this app have any log, so I could figure out why it cannot connect to the internetThanks for Anwsering and Best Regards
I've created a project using STM32H7B3I-DK eval board with all settings default, unmodified, taken from TouchGFX. UI menu is working fine with some resources stored in OSPI Flash memory.Now I wish to store some data in this OSPI memory. The procedure should be to disable Memory Mapped Mode, erase, write and enable Memory Mapped Mode again. All this I do with task switch disabled so that TouchGFX doesn't access OSPI Flash during the process. But BSP_OSPI_NOR_Erase_Block() returns error.Ccalled are MX25LM51245G_BlockErase()then HAL_OSPI_Command()then status = OSPI_WaitFlagStateUntilTimeout(hospi, HAL_OSPI_FLAG_TC, SET, tickstart, Timeout); and here timeout is reported.I've tried to erase OSPI Flash even before TouchGFX is started and it fails too.Here is my simple code called from main with just one modification:static void MX_OCTOSPI1_Init(void){ /* USER CODE BEGIN OCTOSPI1_Init 0 */ /* USER CODE END OCTOSPI1_Init 0 */ /* USER CODE BEGIN OCTOSPI1_Init 1 */ /* USER CO
I'm using a NUCLEO-L476RG with a X-NUCLEO-GFX01M1 (MB1642-DT022CTFT-B01). With X-CUBE-DISPLAY v2.0.1, it works fine, but with v2.2.0, after reset, the display just flickers. Any ideas?
I am not able to use both USB (CDC or MSC class tested) and touchgfx (GUI) in my device which consist of: STM32F746, 800x600 touchscreen, external qspi flash for assets, external sdram and other peripherals like spi or i2c. Firmware is based on freertos. The main problem is that usb communication cannot work in parallel with gui interface, in separate they work properly with other device functionalities. Right now I handle it by switching device to usb or gui mode during startup but it cannot be final solution. void StartDefaultTask(void const * argument) { /* init code for FATFS */ MX_FATFS_Init(); /* init code for LIBJPEG */ MX_LIBJPEG_Init(); /* init code for USB_DEVICE */ if (device_mode == USB_MODE) MX_USB_DEVICE_Init(); /* Graphic application */ if (device_mode == GUI_MODE) GRAPHICS_MainTask(); /* USER CODE BEGIN 5 */ /* Infinite loop */ for(;;) { osDelay(1); } /* USER CODE END 5 */ }When I try to launch them together the screen freeze
I am working with a STM32F767 with an LTCD panel but the image it is displayed on the panel weirdly mirrored.Current configuration and checks that I have done:I have located the frame buffer in external RAM. I have checked that the initial values of the frame buffer on rame contain RED colors ( which should be displayed on the top left corner)Checked that the panel orientation is correct (according to datasheet)Working with RGB565From what I understand it looks like TouchGFX is fillinf the frame buffer correctly but it is being incorrectly displayed. Any ideas of what could be causing this flipping?I have already worked with this panel with an evalboard and the STM32F769 and everything as working as expected.
A simple screen with one TextArea and one wildcard:Below is the code that updates the field in the wildcard and displays the total width of the text on the terminal.The problem is that in the simulator the getTextWidth() function works correctly, while on the target PCB (STM32L4P5) the data is read incorrectly. Below is a screenshot from the terminal and the PCB.void Screen1View::tick() { counter++; if (counter > 10) { counter = 0; param++; Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE, "%d", param); #ifdef SIMULATOR touchgfx_printf("param: %d, getTextWidth: %u\n", param, textArea1.getTextWidth()); #else TRACE("param: %d, getTextWidth: %u\r", param, textArea1.getTextWidth()); #endif textArea1.invalidate(); } }Anyone had a similar problem? What could be the reason for this behavior?
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.