Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hi, I'm trying to use a scroll wheel with a custom container to select the number of seconds an output will be on. The scroll wheel is on it's own screen which is accessed from a main screen. The scroll wheel index information is used as a system initialization/setup variable and needs to be able to be retained in the model when switching screens, so when the scroll wheel screen is reopened, the scroll wheel(s) show the previously selected value. In the view I'm using the following base scroll wheel functions. //Zone 1 Purge void PurgeSetupView::scrollWheelZone1PrePurgeUpdateItem(textScrollContainer& item, int16_t itemIndex) { item.updateText(itemIndex); presenter->userSetZone1PrePurge(itemIndex); } void PurgeSetupView::scrollWheelZone1PrePurgeUpdateCenterItem(textScrollCenterContainer& item, int16_t itemIndex) { item.updateText(itemIndex); presenter->userSetZone1PrePurge(itemIndex); } void PurgeSetupView::setZone1PrePurge(int16_t itemIndex) { zone1prepurge = itemInd
Good afternoon. I made a working project on CubeIDE for a railway timetable (LWIP, FreeRTOS, DSI, HDMI). The project was created in the repository. But the management has a requirement to add a symbolic part (JPG or bmp image). There was a problem when docking the JPEG part to the project (Error 2). How do I remove the problem? With respect. Alexander
Dear all, I bought a ILI9341 TFT from the TRU components with an Arduino connection. So the LCD board is compatible with my Nucleo STM32F446RE. It is my first project with a TFT. My first issue is that I dont' find easly the driver to use with STMCubeIDE. where can I find them?Can I configure my LCD with TouchGFX software? thanks in advanceFausto
Hi Everyone, the TouchGFX team wishes you a happy new year.If you haven't noticed by now, X-CUBE-TOUCHGFX 4.16.0 is out, available from CubeMX 6.0+ and from st.com as a zip (Also installable through CubeMX).Here is the documentation for 4.16.0: https://support.touchgfx.com/Main features:Built in support for a Gauge widgetNew screen transition called "Block Transition"New invalidation algorithm for improved performancesYou can see all the bug fixing and improvements in the changelog./Romain
Hello,I failed in changing the Color depth for a simple custom application from RGB565 (16 bit) to RGB888 (24 bit). The image was flickering during an animation (e.g. screen changes or scrollWheel scrolling)So I flashed an example from TouchGFX ("Animation Texture Mapper Example") with the Application template for the STM32F746G-DISCO (using Version 3.0.0), which has a default color depth of 24 bit and it worked flawlessly. Then I tried the same example with the Application Template Version 3.0.4 (which I used for my custom application), with a default of 16 bits. I changed the framebuffer size and LTDC settings accordingly and expected the generated code of CubeMX and TouchGFX to work, but it also flickers with artifacts of the animated image drawn on the outside of the screen.I just can't make it work by changing the parameters in the .ioc. What did I miss out on? Is it not possible with the lates Template versions (if yes, that sounds like a bug to me)?
Hi all,I'm trying since 2 days to get my f469i-discovery running on CubeIDE 1.5.0 and touchGFX 4.14.Are there any working examples for this board ?Embedd wizard is working like a charm in combo with CubeIDE 1.5 but not touchGFX.Seems to be quite complicated....Is there anybody who can help??Regards,Chris
Hi all,I want to use TouchGFX without STM HAL. In my project that uses STM32L476, the code was just written with another library (libohiboard on GitHub). Our customer asks to add a display to this project, and I would use TouchGFX but without ST HAL. I try to generate a project with CubeMX, but I can't find the glue layer between GFX and HAL where I can change the HAL call.Can you help me? Is it possible?ThanksBest regardsMarco
So in TouchGFX designer, when we choose Dynamic Graph widget, we can input the number of data points. Let's say originally we set as 100 data points, but later we want to increase this, can we do this?Also, is it really possible to increase X axis range without increasing the data point?
It seems in Dynamic Graph widget, the only way to plot data is by:addDataPoint(float y)which automatically just add a data point to the next index from previous plot. But this might not suitable for real time monitoring.In real time monitoring, we want to position the data according to timeline of x axis. So if for some reason say we miss acquiring data for two beats, then the next plot should not be on next index, instead it should be on next index + 2. Is there anyway we can do this? i.e. plotting the data given index so like:addDataPoint(int index)
I have seen this thread https://community.st.com/s/question/0D53W000007XLbHSAW/why-does-animating-an-l8-image-take-significantly-longer-than-a-standard-image which states that RGB565_L8 transformation is completely handled on the cpu without dma2d assistance , indeed the reference manual of my mcu states that dma2d only handler RGB888_L8. So I was wondering which of the following solutions is better for my case :I am currently using 4.16.1 and I would like a catch up to know if there is an official solution/patch to the problem above. As people mentioned it should have been up on 4.15.*Furthermore just to be sure I would like some insight for the usefulness of each feature on my usecase. I have an stm32h743vit custom board, an external flash of 16Mb with quad spi and an spi screen 320*240 rgb565 . As expected I would like to add as many images as I can to the flash and I would like to do most of the computations on the chrom-Art dma2d instead of the cpu (the second part is mo
I installed TouchGFX Designer in both CubeIDE and CubeMX.How do I actually start it?
Dear Engineers,I wonder if there is any example code available with Touchgfx on how to 1) Catch data and compute calibration coefficients?2) Have a calibration page with the "TouchscreenCalibration.hpp" file functions?My question has been hard for me to answer since I have not found strong documentation about them. So far I have been able to do so by hand. But I am looking for some automated method.Your help is really appreciated.
..
Hi,I noticed that there is a touchgfx::memset implemented in Utils.hpp.Any reason to use touchgfx::memset over the one from string.h?Thanks.
In terms of memory, performance, etc., is it preferable to implement a button or clickable icon? I assume that since a button is made of two images that a clickable icon is marginally more efficient. In my specific application, due to some constraints, I am using something other than a clicked image to indicate a clicked state, so storing two different images in memory is not a concern. All of the action would happen when the clicked widget was released.Thanks.
Hi all,I want to use TouchGFX to manage a simple display with STM32L476. I generate the code with cubeMX and TouchGFX 4.16, but when I try to compile it a lot of errors comes up!There is any tutorial or guide on how setup touchGFX with this microcontroller?ThanksBest regardsMarco
HiUse the buttons to set the sec and min. Use the START button to switch to ScreenCurrent. Press the STOP button to go to the ScreenSet. After switching to ScreenSet, I want sec and min to be automatically reset. How to set it up? greetingsAndrzej
Hi everyone,I have some datas that I'd like to display inside a table on my screen without creating a new control for each rows of datas.Is there any workaraound to do that ?Thanks !
I have been experimenting with animating an image onto the screen. Because I want to reduce the amount of FLASH space required, I would like to use an L8 image (I do appreciate adding this format to the TouchGFX framework, by the way).I am placing the image in a container and I have selected the MoveAnimator Mixin for that container. However, I notice that the amount of time it takes to animate this container from off the screen to on the screen takes significantly longer when the image is formatted as an L8 (either L8_RGB565 or L8_ARGB888). When I say significant, I am saying it takes up to 50mS as compared to 12mS.Am I doing something wrong? Is it possible that the DMA2D (ChromART) not working correctly for L8's?I am using TouchGFX 4.13.0 and my processor is an Stm32H743.
Hi, I configured LTDC and TouchGFX properly without using os,I created internal framebuffer and linked it with this code:__attribute__ ((section(".TouchGFX_Framebuffer"), used))uint32_t framebuffer[400*200];However this is not working if I try using it with CMSIS OS, I have no idea why this is working without OS and not with it. I am calling MX_TouchGFX_Process() in one task properly.Thanks for any help!
Hi, I wanted to configure my F746G Discovery board with LTDC and TouchGFX using framebuffer in internal RAM from scratch. So I configured LTDC based on scheme provided and it works perfectly fine. I am able to display and switch solid colors, display static image from .h file.Then I wanted to make TouchGFX work, but after calling MX_TouchGFX_Init() it will just display dark grey screen, without calling it I can display at least static content normaly.LTDC_IRQHandler is being called periodically and framebuffer is declared and set this way:uint16_t framebuffer[480*272];HAL_LTDC_SetAddress(&hltdc, framebuffer, LTDC_LAYER_1);Something is probably miss-configured with TouchGFX and I can´t figure out what it is. Thanks for any help!
Version: Touch GFX Designer 4.16.1Project is attached.My question is similar to:https://community.st.com/s/question/0D50X0000AFpwBx/can-you-call-a-method-on-view-from-a-custom-containerI looked at the ContainerCallback example that Martin posted and I think I understand what he is trying to show.In that solution though, the View register itself to a known custom container name (i.e. customContainer11)Screen1View::Screen1View() { customContainer11.setPtr(this); }If my custom container is an element inside a Scroll list, where is a good placeto call setPtr()? from inside ListUpdateItem()? or is there a better place?essentially I am looking to have the onGroupLightLevelChange() in my example to notify the View -> Presenter -> Model of a value change.Also, if the backend want to influence how many items are displayed in the scroll list (e.g. item 1,3,5,8 in sequence) is there a good example on how to do that?I am able to use lightGroupListUpdateItem() in my example to dynamical
version: touchGFX Designer 4.16.1I generated a ScrollList to contain 8 itemsIn the .touchGFX project (attached) I can see the expected lines"Type": "ScrollList", "PaddingBefore": 0, "PaddingAfter": 0, "Snapping": false, "IsHorizontal": false, "IsCircular": false, "ItemTemplateName": "lightSliderGroup", "NumberofItems": 8,However in the base class of the generated code I see this:touchgfx::ScrollList lightGroupList; touchgfx::DrawableListItems<lightSliderGroup, 6> lightGroupListListItems;The odd thing is that 8 items actually got created, however in my case the slider value of the last 2 items always follow the value of the first 2 items in the list?Hacking that line to change it from 6 to 8 does not fix the issue either.Am I missing something or is this a bug? If so, is there any workaround?
Repro steps (using TouchGFX Designer 4.16.1):Create a custom container class with a solid box background, named `background`Renamed a custom container class from `background` to `Background`This results in gui_generated base files of `backgroundBase.[hpp/cpp]` (incorrectly done using camelCase)however, inside `backgroundBase.cpp`, it has this line:#include <gui_generated/containers/BackgroundBase.hpp>This breaks compiling in our case-sensitive environment.I realize TouchGFX Designer is windows-OS centric and that is case-insensitive, but the code it generates is often used in case-sensitive environments.
Hi,I'm experiencing a curious issue with the Real Time Clock of an STM32F746BGT6. When running a legacy project, the RTC is every bit as accurate as I'd expect it to be. When running a new TouchGFX template I've generated for the hardware, the RTC loses about 5s for each minute. I've combed through the startup code and the data sheets and there doesn't seem to be a good explanation for why this is. In both cases I am setting up the clock to reference the LSE in the RCC initialization, and in both cases I am using the same values for the synchronous and asynchronous divisors within the RTC registers. In both cases the time is being read using calls to HAL_RTC_GetTime(&hrtc, &currentTime, RTC_FORMAT_BIN); HAL_RTC_GetDate(&hrtc, &currentDate, RTC_FORMAT_BIN);//necessary for next readI can post more code if this would be helpful, but the RTC seems pretty uncomplicated so I'm not sure what I've missed. I
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.