Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I am looking for a button implementation for the Setting button way to achieve the steps:1. At the start, the Setting button is in OFF state on screen12. Press once, the interaction will change to setting screen for specific settings, this screen will have 2 clicks buttons CONFIRM and CANCEL. a. If the settings is done and CONFIRM button is clicked, the settings are saved and return back to screen1 the Setting button should show the ON state.b. If the cancel button is clicked, there will be no saving and return back to screen1 with the Setting button is in OFF state3. If the Setting was in ON state after successfully CONFIRM the setting, press one more time, the Setting button should go back to OFF state, and NO screen changing.I am be able to use the toggle button to implement the Setting button, and by create the interaction to do the screen switch from the first press, and don't call the interaction on the second press to achieve the OFF, Switch Screen, CONFIRM, Go back t
So Im trying to move heap to my external SDRAM and the problem is that it hardfaults after 3s and do not know why.In startup file before__libc_init_array i call fmc function which init SDRAM.Fmc function looks like this: void fmc(void) { HAL_Init(); SystemClock_Config(); PeriphCommonClock_Config(); MX_GPIO_Init(); MX_FMC_Init(); MPU_Config(); // mark SDRAM cacheable SCB_EnableICache(); SCB_EnableDCache(); } Im using TouchGFX, STM32H743ZIT6 and IS42S16400J-6TLI SDRAM. Ive already changed my sbrk, linker and MPU. I add code fragments: /* ****************************************************************************** ** ** File : LinkerScript.ld ** ** Author : STM32CubeIDE ** ** Abstract : Linker script for STM32H7 series ** 2048Kbytes FLASH and 1056Kbytes RAM ** ** Set heap size, stack size and stack location according ** to application requirements. ** ** Set memory bank area and size if external memory is used. ** ** Target : STMicroelectronics STM32 ** ** Distributio
Hi everyone, I'm using a Riverdi board (STM32 10.1" Rev. 1.2) with an STM32H747XIH6, and I'm having trouble with the UART8 in single-wire mode. I can't get the interrupt callback function to be called when data is received on that port.This board uses TouchGfx and FreeRTOS.I'm using a test interrupt code just for the UART8, but it's not responding.If I use the blocking function HAL_UART_Receive(...), I receive consistent data, so I don't think it's a wiring or pinout issue. I have checked that the signal is coming in with the oscilloscope.I have the global interrupt enabled for the UART8.The code I'm using is this, in freertos.cvoid startUartTask(void *argument) { /* USER CODE BEGIN startUartTask */ memset(rxBuffer, 65, 128); HAL_HalfDuplex_EnableReceiver(&huart8); HAL_UARTEx_ReceiveToIdle_IT(&huart8, rxBuffer, 64); /* Infinite loop */ for(;;) { //HAL_UART_Receive(&huart8, rxBuffer, 128, 120); osDelay(10); } /* USER CODE END startUartTask */ } In mai
We’re enjoying working with TouchGFX, but we’ve encountered a challenge: our projects are stored in the WSL filesystem which uses UNC paths (e.g., \\wsl$\). Currently, TouchGFX Designer doesn’t seem to support UNC paths making it cumbersome to make changes to our project. Right now we have to store a second copy of the project on the Windows filesystem in order to use TouchGFX Designer resulting in extremely slow compilation times due to the virtualized file system boundary.Would it be possible to add UNC path support in a future release? This would greatly improve our workflow and integration with WSL environments.
Hello,I've implemented, using the Designer, a Swipe container composed by 2 pages which are respectively 2 containers (SwipeContainerPage1, SwipeContainerPage2).Each page includes some text and box which are updated on page swipe change and everything works fine.Now I want to command an Action (a page change) when the user presses for a couple of seconds (let's say 2 seconds) SwipeContainerPage1 or SwipeContainerPage2 while maintaing the swiping property of this macro object.Is this possible? I've taken as a reference the "ClickListener_Implementation_longPress" as a reference but with no success...(Edited) I tried doing this and it works for the first page (calls goTo_GUITemperatureSet_Action()) but it blocks the swipe capability and I cannot go to the SwipeContainerPage2://In the .hpp file class GUIMainSwipe_View : public GUIMainSwipe_ViewBase { public: GUIMainSwipe_View(); virtual ~GUIMainSwipe_View() {} virtual void setupScreen(); virtual void tearDownScreen(); virtual void ha
Hi all,we're right now switching from 32F469IDISCOVERY with STM32F469NIH6 (running @180Mhz) to another display board with a STM32U5A9NJH6Q (running @160Mhz).Our UI has one Screen with a SwipeContainer (total of 3 pages). On the second page we're using two DynamicGraphs to display a target curve and a curve with measured data (both Graphs are using a Line as Element).During swiping the animation is very slow and laggy. Of course we can also see some performance decrease on the discovery board but on the new board it is not acceptable- therefore I'm searching for some hints how to improve this behaviour.When the graphs are empty the animation of the swipe container is fast enought. But If both graphs are filled with data (right now we have 480 datapoints for each graph / maximum is 600 for each graph) the animation is very slow. The more datapoints are pushed to the graphs the slower the animation gets.1) Is there a way to improve this?2) Why the Line/Data has such an
I have a custom board. Right now we have a "template project" which is mostly a stripped project and we have a customer project. We periodically merge some changes between them. Instead of copying the template project and modifying it I would like to be able to use it as a board in TouchGFX designer directly. This will be important when we will use the board for more than 1 customer.I followed the instructions, but the board doesn't show up.I followed these instructions: https://support.touchgfx.com/docs/development/scenarios/scenarios-create-atI stripped the project.My project structure is:C:\source\company\company-stm32-touchgfx-hmi-bspC:\source\company\company-stm32-touchgfx-hmi-bsp\.gitC:\source\company\company-stm32-touchgfx-hmi-bsp\DocC:\source\company\company-stm32-touchgfx-hmi-bsp\Source\MiddlewaresC:\source\company\company-stm32-touchgfx-hmi-bsp\Source\TouchGFXC:\source\company\company-stm32-touchgfx-hmi-bsp\Source\TouchGFX\company-STM32-TouchGFX-HMI-BSP.touchgfxI closed
It should be purple, but it shows up as blue. background is svg picture is normal.
I purchased the X-NUCLEO-GFX01M2 with the Nucleo-L476RG eval board.The example project "Hello World" came with six image files (Image1.h - Image6.h).This project built okay, and the canned images appeared correctly.Next, I tried to use my own images instead of the canned images. The images list array must be modified to match the width and height of each new image used.The following are problems that I encountered, or extra tasks required:1) My images are JPG format, but Touch GFX only accepts PNG or SVG. I had to use Photoshop to convert them.2) The images next had to be cropped and resized for the LCD display.3) Touch GFX was next used to generate the proper image string array files for the project in place of the Image1-6.h files.4) Even though the original "Hello World" image files were .H files, and 16-bit (word) arrays, Touch GFX generated .CPP 8-bit (byte) arrays. This also made the text files almost twice as large as a word array file (0x12, 0x34 vs. 0x1234).5) Since
Hi, I'm working on a TouchGFX ( version 4.18.1) project using the STM32F746IGT6 controller.. The issue I’m facing occurs intermittently — the code sometimes fails to enter the while loop inside int main(). During debugging, I noticed that the entire code is executing and suddenly the console repeatedly displays the following message: Target is not responding, retrying... Target is not responding, retrying... Target is not responding, retrying... Target is not responding, retrying... Although the system doesn’t shut down, the display freezes as a result. When I pause the execution and step through the code, it appears to be looping within the ISR, and I see the message:0x080bec0e in touchgfx::ConstFont::find(unsigned short) const () set *(int *)0xE000EDFC=*(int *)0xE000EDFC|0x7F0. For reference, here are the hardware components used: External Flash: IS25LP512M-JLLE-TR SDRAM: NDS63PT9-16IT The screen freeze also happens even when the code is not in debug mode.I
Hello Everyone!I am running TouchGFX with ThreadX. When I add a new object, TouchGFX does not display anything.The settings for TouchGFX are as follows:1. ThreadX2.TouchGFX3.TouchGFX DesignerI just created a box for the background. TouchGFX is working well. TouchGFX doesn't display anything when I add an image to this screen, as shown below. Could you please give me some suggestions? Thanks in advance.
Hi,I would like to manage .bmp (with alpha channel for transparency) stored in flash and show it as it was included in the application via Touchgfx designer.In other words I would like to customize my application with this bitmap simply uploading the bitmap and not flashing the whole applicationAt the moment I am able to load from usb .bmp file and store it in a memory portion of the internal flash working as a storing device.I understand it is possibile to manage dynamical bitmap via the useful tutorial I found in the documentation, but I don't know if it works with .bitmap with alpha channel.Do you have any suggestion for me?Best regards.Davide
Hello I had old build of STM32F469i-disco with LVGL and square line studio interface. when i burn that hex in this board it won't work. But same board when i try with touchgfx it work. if there is any change in LCD pinout ot some other change let me know. to resolve this issue
Hello.I developed a Screen with TouchGFX Designer 4.24.2.In this Screen I put a ScrollList.Is there a way to force the ScrollList to scroll at specific item position ? For example I want to force ScrollList to scroll at the item position that has index = 20 ... is there a way ? Thankyou in advance.
..
i m using STM32303E Eval board. This board has SPI based GLCD (as per datasheet of Board) with is connected through SPI-2. i m using TOUCHGFX for display images and my application has only QR code in it. i have started from STCubeMX, enabled TOUCHGFX and CRC, included QRcode from TOUCHGFX and finally compiled code in IAR workbench. The setting i have used in STCubeMX are attached as an image. But screen is not showing any image (remains white in color). i ve tried to debug and found a function hal.backPorchExited(); is not executing. Void touchgfx_taskEntry() {/** Main event loop will check for VSYNC signal, and then process next frame. * Note This function returns immediately if there is no VSYNC signal.*/ if (OSWrappers::isVSyncAvailable()) { hal.backPorchExited(); } } Now my question is 1. why the statement if (OSWrappers::isVSyncAvailable()) is always false and how to torubleshoot it. 2. IS it right to use TOUCHGFX for this board or i have to work with STemw
Hello everyone,I’m currently facing an issue with my project folder structure when using TouchGFX Designer (v4.21.4) together with STM32CubeIDE.Since the project was originally created with TouchGFX Designer, the generated structure (See below) is a bit problematic: The main project files exist inside the STM32CubeIDE folder (the actual IDE project).However, the Core folder and the TouchGFX folder live outside the root STM32CubeIDE project folder.This makes the structure inconsistent compared to projects created directly from CubeMX with TouchGFX , where everything (including Core and TouchGFX) is properly contained within the STM32CubeIDE root folder.What I want to achieve:Reorganize the project so that Core and TouchGFX are placed inside the STM32CubeIDE folder, making the structure(see below) look the same as if it had been created through CubeMX with TouchGFX enabled. What is the correct way to restructure the project without breaking the build process?Is there
After updating TouchGFX from 4.24.1 to 4.26.0, the Stride setting in "X-CUBE-TOUCHGFX"->"TouchGFX Generator" is readonly (grayed out). I need to set it to the value 832. The generated code uses the value 800, even if I modify the value in the project.ioc file manually.When I change the Stride value in TouchGFXHAL.cpp and in TouchGFXGeneratedHAL.cpp (at call of setFrameBufferSize()) manually, the display works perfectly.I am using:STM32F769BIT uCMxCube 6.15.0STM32Cube FW_F7 V1.17.4 Any advise is very welcome. Thank you!
Hey,I have a confusing error, i have a Riverdi 7" TFT Panel (https://download.riverdi.com/RVT70HSTNWC00-B/DS_RVT70HSTNWC00-B_Rev.1.2.pdf)Actually my LTDC Init is this:static void MX_LTDC_Init(void) { /* USER CODE BEGIN LTDC_Init 0 */ /* USER CODE END LTDC_Init 0 */ LTDC_LayerCfgTypeDef pLayerCfg = {0}; /* USER CODE BEGIN LTDC_Init 1 */ /* USER CODE END LTDC_Init 1 */ hltdc.Instance = LTDC; hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; hltdc.Init.HorizontalSync = 0; hltdc.Init.VerticalSync = 0; hltdc.Init.AccumulatedHBP = 160; hltdc.Init.AccumulatedVBP = 23; hltdc.Init.AccumulatedActiveW = 1184; hltdc.Init.AccumulatedActiveH = 623; hltdc.Init.TotalWidth = 1344; hltdc.Init.TotalHeigh = 635; hltdc.Init.Backcolor.Blue = 0; hltdc.Init.Backcolor.Green = 0; hltdc.Init.Backcolor.Red = 0; if (HAL_LTDC_Init(&hltdc) != HAL_OK) { Error_
Hello,I use a custom board based on STM32H750 (as Discovery board) with a 800*480 TFT (24 bit).I try using the Video widget with the sample_video_1_medium_480*272 but in portait mode it show bad image, not understandable.Next I try a custom video with 480*320 resolution: now i see the rows and columns are inverted.For the first video I think there is also a problem with number of rows (272) since is not divisible for 32.If I change setting in Touchgfx designer with landscape, both 2 video are correct.I need to work in portait mode: I have to modify something in the program or try to rotate the video before compile?Thanks.toma Fabio
I have created a singletone class CommonUtils.cpp because I needed various functions to be used in various part of the code.It is a very simple class like:.cpp#include <gui/common/CommonUtils.hpp> CommonUtils& CommonUtils::getInstance() { static CommonUtils instance; return instance; }.hpp #ifndef COMMONUTILS_HPP #define COMMONUTILS_HPP #include <touchgfx/hal/Types.hpp> #include <touchgfx/Unicode.hpp> #include <gui/model/ModelListener.hpp> class CommonUtils : public ModelListener { public: // Get singleton instance static CommonUtils& getInstance(); // Delete copy constructor and assignment operator CommonUtils(const CommonUtils&) = delete; CommonUtils& operator=(const CommonUtils&) = delete; private: // Private constructor CommonUtils() = default; ~CommonUtils() = default; protected: Model* model = nullptr; };The class has various public function that can be call in various part of the code with CommonUtils::getIn
Hello,I am working on a display using an 8-bit grayscale TFT LCD.The LCD panel itself is grayscale, but the driver IC is a hybrid designed for RGB.Because of this, pixels are grouped in sets of three, each driving RGB subpixels. For example, if the LCD resolution is 36×36, it actually needs to be controlled as 12×36.Currently, I am converting images into hex codes and managing them manually using a hex code editor.Is there a more convenient way to implement this using TOUCH GFX?As far as I know, TOUCH GFX does not provide a way to configure it like this.Thanks in advance.
Currently I am struck with Ethernet communication where I am not able to communicate properly.I have working functionality with static IP. I have implemented functionality to either enable DHCP or Static. Independently both works. When I am trying to call an event to enable DHCP or static my board hangs or freezes. Sometimes I jump into Hardfault_handler error. After debugging I noticed that my memory mapping somehow I am not able to figure out the exact root cause. I am using Touchgfx as an output interface. I followed your F7 videos and tried to fix the solution but didn't work. Maybe I thought of asking for your help. I share my linker script and MPU_config and also Ethernet descriptor. My current script expects to keep assets text, font, extflash related to touchgfx in QSPI memory, SDRAM wants to add Touchgfx_scrollbars etc. I tried to use the QSPI location but failed. RAM memory location where I am currently facing an issue. I attached my linker script for refe
BeforeAfterHello everyone.I am in a tough situation when the LCD shift during display without touching the board as some pictures above:I am using STM32F469ZIT6 and SDRAM IS42S16400J-6TLI. Here is the configuration: static void MX_FMC_Init(void) { /* USER CODE BEGIN FMC_Init 0 */ /* USER CODE END FMC_Init 0 */ FMC_SDRAM_TimingTypeDef SdramTiming = {0}; /* USER CODE BEGIN FMC_Init 1 */ /* USER CODE END FMC_Init 1 */ /** Perform the SDRAM1 memory initialization sequence */ hsdram1.Instance = FMC_SDRAM_DEVICE; /* hsdram1.Init */ hsdram1.Init.SDBank = FMC_SDRAM_BANK2; hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12; hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16; hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4; hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_3; hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE; hsdram1.Init.SDClockPeriod = FMC_SDRAM_C
Hello everyone!I tried to explore TouchGFX for the first time to discover the advantages of it.So in TouchGFX 26.0, I started a project for the STM32N6570-DK.What I did: "Create new", then selected "STM32N6570 Discovery Kit".Before doing anything, this problem appears: "Cannot Run Target" and the "Program and Run Target" button appears disabled.I noticed the "STM32U5G9J DK2 has the "Program and Run Target" button enabled.Is the STM32N6570-DK not supported in TouchGFX?Or what did I do wrong?Thank you in advance for your help.
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.