Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I have found a number of soulutions for this, but they all seems to be "old" and the make file that thes sugest changing in is regenerated every time one open the simulator.In the simulator/gcc file there are an parameter ADDITIONAL_INCLUDE_PATHS. If I add one path here it's ok, but I need to add 2 path:s. I have some aditional drivers on a different path then the main application in stm32cubeIDE. I guess I also have to add path:s to freertos later on.Do anyone know how to add multipple include path's?My make file looks like this... if I add anything behind $(core_path) it dosen't work... My core_path works OK.´´´project_path := $(call qs,$(abspath $(call sq,$(makefile_path)../../..)))core_path := $(project_path)/Core/Inc freeRtos_path := $(call qs,$(abspath $(call sq,$(project_path)/Middlewares/Third_Party/FreeRTOS/Source/include)))driver_path := $(call qs,$(abspath $(call sq,$(project_path)/Drivers/STM32F7xx_HAL_Driver/Inc)))ADDITIONAL_INCLUDE_PATHS := $(core_path)´´´
Is there any way in TouchGFX to get any identification/handle/etc. of the current View?I have one View that is accessible everywhere, and from that I want to return to the previous View.How can store the previous View? Is a custom variable required for this + implementation in every single Presenter to store that custom variable?
Question 1:We are developing a custom board based on STM32H750B-DK.We have a “custom touch�? on it, so I have to adapt the “component�? to CubeMX-TouchGFX structure.The question: in the STM32H750B-DK project template we find files stm32h750b_discovery_ts.h / .cThis component will be initialized by TouchGFX part, using BSP_TS_Init.This will call MX_I2C4_Init(); but this is also already called by main.c generated from CubeMX itself…How should I procced to make a “clean�? implementation? I should not activate I2C4 on CubeMX, so that it is not generated?Question 2:We have a project for our board where we can modify CubeMX and TouchGFX part, and regenerate it, keeping our own written code.This was OK until I worked with TouchGFX 4.15.0. After I upgraded it to 4.16.0, I have problems, loosing my cone in TouchGFX part, and nothing more comes on displayAlso I needed to correct by hand static TouchGFXHAL hal(dma, display, tc, 480, 800);(it was generated as static TouchGFXHAL hal(dma, displ
Hi,I have been working on implementing external flash driver integration with TouchGFX on STM32G474-eval board, in memory mapped mode. I have configured the QSPI in Bank 1 with Single/Dual lines. I have attached an image of my CubeMx configuration.I am getting hard fault while accessing any memory area of external flash. But, while in debug mode, I am able to access the memory address, for example: 0x90000000.Below are my QSPI initialisation sequence :uint8_t CSP_QUADSPI_Init(void) { if(CSP_QSPI_Erase_Chip() != HAL_OK) { return HAL_ERROR; } if (QSPI_AutoPollingMemReady(HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) { return HAL_ERROR; } if (QSPI_WriteEnable() != HAL_OK) { return HAL_ERROR; } if (QSPI_Configuration() != HAL_OK) { return HAL_ERROR; } if (QSPI_AutoPollingMemReady(HAL_QSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) { return HAL_ERROR; } return HAL_OK;}uint8_t CSP_QSPI_EnableMemoryMappedMode(void) { QSPI_CommandTypeDef sCommand; QSPI_MemoryMappedTypeDef sMemMappedCfg; /* Enable Memory-M
I am using normal buttons and I set an interaction like thisI saw this function will be called when button is released in this link -> https://community.st.com/s/question/0D50X0000BKAnAV/is-there-a-way-to-have-button-trigger-on-the-press-of-the-button-and-not-the-releaseand I want to have event when it is pressed. I went AbstractButton.cpp for this and I did some changes but I couldn't see any effect. I added printf but couldn't see anything on the screen, I commented out functions but it is still firing callback. Here is the callbackIn this callback I tried to use getPressedState() function to see if released or pressed but TouchGFX IDE always deletes what I write.Can you help me to solve this problem?
In my previous post (Calling different functions when a button is pressed or released (Partially Solved): https://community.st.com/s/question/0D53W00000Wa1k2SAB/calling-different-functions-when-a-button-is-pressed-or-released-partially-solved ) I partially solved my problem by modifying the handlePressedUpdated() function.But now I noticed a strange behavior: if I press/release the button all is OK, but if I press the button, swipe my finger out from the button area, and release, the button image become "unpressed" as soon I exit from the button area, but the "action on release" wasn't called.I probably need to hook or modify the function that calls the changing of the button image by adding a function call, but I wasn't able to find that function (and I'm not sure it is the right way...).Have a good day,
Hi,I amp developing a touchgfx application on a custom board with a STM32F3. I have got the STM32G0 example as inspiration and i have modified the display driver in order to work with my Ili9341. In first place i am trying to run a short application without an external spi flash. The problem is that everything runs fine, and boxes and colors are shown well, but the images from a button for example, or any other bitmap gets corrupted. I have configured, like in the STM32G0 case, a partial framebuffer with vsync enabled. The only difference with the STM32G0 is that i have no external flash, and the method for calling "touchgfxSignalVSync()", as i dont have a tearing signal from the display i have configured a timer and i call this function from the timer interrupt:void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ TE++; (&htim6)->Instance->CR1 &= ~(TIM_CR1_CEN); (&htim6)->Instance->CNT = 0; touchgfxSignalVSync();}I really dont use
Hi,Is there any example project for keyboard implementation through TouchGFX tool.
Hi,I though that I can save a lot of work by bypassing Presenter when fetching data from the Model, like this:class FrontendApplication : public FrontendApplicationBase { public: FrontendApplication(Model &m, FrontendHeap &heap); virtual ~FrontendApplication() {} //added this Model& getModel() { return model; } ...Is there any problem with this approach, when fetching/setting Model data?View <-> Presenter <-> Modelvs.View <-> ModelIf I use Presenter, I need to implement viewPresenter.cpp and viewPresenter.hpp for every single variable, which seems crazy amount of work, for seemingly 0 purpose.I could just use application().getModel().getVariable(), right? Thanks!
Is it possible to turn textareas upsidedown without having to use texturemapper?
Hi,We have this odd requirement due to LCD mounting limitations on our product. I can run touchgfx UI application with DisplayOrientation set to rotate90. But we want it to be rotate270 to match the lcd mounted on the product. Based on my understanding this should not be an issue for graphics engine. I mean rotating 90 or 270 (-90) should not be any issue in terms of performance. STemWin supports this feature. Can you please suggest if there is a way to achieve 270 (-90) rotation in touchgfx?
Hi All!I'm testing LCD Controller to upload image at LCD Panel.And I finally upload image but disappeared fast.Does anyone know why??
Generate Code Generate Done Generate Assets make -f simulator/gcc/Makefile assets -j10 The system cannot find the path specified. 'B' is not recognized as an internal or external command, operable program or batch file. The system cannot find the path specified. The system cannot find the path specified. The system cannot find the path specified. Failed Failed
Hello,As TouchGFX does not support STM32H745, I tried the demo program for STM32H750 on this board. It works properly when it is programmed and also after reset (soft reset with button or software). But when I disconnect the power from st-link USB port and connect it again, it does not work and also st-link does not recognize the MCU. The connection problem can be solved by setting the boot0 pin as high, and it is not a problem.For the program, I believe the problem is related to the bootloader script. I tried to write my own boot loader, but It does not work as well. It cannot jump to the program in the external flash memory. What I tried is:initializing FMC (external SDRAM)initializing qspi and external flash memory and putting it on the memory-mapped modeinitializing LTDC and loading a test image on it for 3 seconds (just for test)disabling cache and sysTick intrruptsetting MSP (QSPI address 0x90000000)jumpting to the application address (QSPI address + 4)after uploading the complet
hii..i am using STM32G474 MCU with Touch GFX Tool for TFT Display Drive and i want to access Other Screen Image/Widget in Present Screen, so please suggest beast way, i have try many times to fill Present Screen container with other Screen Image using Add() Function but not working,Thanks
Hello !I'm actually using an STM32H745 dual Core with touchGFX and CubeIDE. I know that the dual cores aren't supported yet, but I kind of love challenges.So I managed to make it work using :Partial BufferCustom drivers (FMC)no hardware acceleration no OSRight now my GUI works , but when I try to add DMA2D, the screen turns black, and I'm not really familiar with DMA2D, so I don't know where the problem might be.Any ideas ?Thanks !! :D
..
Hi,for my app I would like to implement a feature to swipe to change a screen. That would probably contain a combination of GestureEvent, a handler, callback and a listener. However, in 3 hours of reading TouchGFX docs, searching through the forum and browsing through TouchGFX framework source code I was not able to come up with anything. I simply did not know where to start.So I would like to ask you to add a description to documentation how to use handlers, event listeners and other structures that are available in TouchGFX framework. I see that STM invested a lot of time and resources into TouchGFX which is great. Sadly, it has become a very large project and thus very complex and I believe that the relatively poor documentations limits a lot of users. You should also definetely add some more tutorials.
TouchGFX 4.16.0 generated code can/will crash in HardFault if D-Cache is not enabled.This happens at least in those CPUs where there is data cache (STM32F7...).This behaviour is something new that was introduced in 4.16.0 version.This change is undocumented and not mentioned in changelog.txt for 4.16.0.When updating a working design from 4.15.0 to 4.16.0, made the system fail (crash in HardFault).The problem was resolved by enabling data cache in CubeMX (enable CPU DCache).The problem is in TouchGFXGeneratedHAL::flushFrameBuffer() invalidating D-Cache even when not used.There is nothing in STM32CubeMX or TouchGFX designer that would warn about this.I suppose this change was done to achieve some increased performance and cache coherency.What about systems that don't use or need data cache, will they still crash?Maybe this behaviour (data cache flush/invalidate) should be optional?
LCD_CLK that runs XGA (1024 x 768)Thank you for helping.environment:STM32CubeIDE Ver1.5.0MCU: STM32F769BIBoard: CustumIt seems that this microcomputer supports up to XGA, but LCD_CLK for XGA is not output.Create LCD_CLK with PLL using a 25MHz crystal.The XGA LCD panel is instructed to use a 65MHz clock with a Typ. Value.If fps is 60 in XGA, I think that a clock of about 65MHz is required.When I try to set 65MHz in the Clock configuration of the IDE, the output is DC.I haven't looked at it in detail, but it seems to be output at around 10MHz or 30MHz.GPIO_SPEED_FREQ_VERY_HIGH is selected as the GPIO speed.How can I output a 65MHz LCD_CLK?Also, what is the maximum frequency of LCD_CLK that can be output by STM32F769BI?Thank you.
Have anybody QSPI loader algorythm for Keil?I can't create workable code....
Hi!I am using STM32L496 on Nucleo 144 board CubeMX 6.1.1 CubeIDE 1.5.1 TouchGFX 4.16.0.After generating code with TouchGFX using DMA2D error occurs during MX_DMA2D_Init. ../Core/Src/main.c: In function 'MX_DMA2D_Init': ../Core/Src/main.c:249:14: error: 'DMA2D_InitTypeDef {aka struct <anonymous>}' has no member named 'BytesSwap' hdma2d.Init.BytesSwap = DMA2D_BYTES_REGULAR; ^ ../Core/Src/main.c:249:27: error: 'DMA2D_BYTES_REGULAR' undeclared (first use in this function); did you mean 'DMA2D_RB_REGULAR'? hdma2d.Init.BytesSwap = DMA2D_BYTES_REGULAR; ^~~~~~~~~~~~~~~~~~~ DMA2D_RB_REGULAR ../Core/Src/main.c:249:27: note: each undeclared identifier is reported only once for each function it appears in ../Core/Src/main.c:250:14: error: 'DMA2D_InitTypeDef {aka struct <anonymous>}' has no member named 'LineOffsetMode' hdma2d.Init.LineOffsetMode = DMA2D_LOM_PIXELS; ^ ../Core/Src/main.c:250:32: error: 'DMA2D_LOM_PIXELS' undeclared (first use in this function); did you mean 'DMA2D
HiI am trying to include a custom Header file "LCD1602.h" along with its source file "LCD1602.c" in my project. I have also added the respective path in Project>Properties>C/C++ General>Paths and symbols. But when I build the project, the macros declared in the LCD1602.h seem to be unknown to the LCD160.c file. One of the error can be seen in the below image.I am not able to figure out where the problem exactly lies. Is there any issue with the hierarcy of folders? Cause I planned to follow the same structure for other components as well. Also, I noticed that the icons of my custom .h and .c files are different from that of main.c and main.h
Hello,I'm using an L073Rz.I was wondering if it was possible to use the VLCD as a measurement pin by using the ADC channel reserved for it, without enabling any LCD pin (for communication) and functionalities.LCD_CR->LCDEN = 0; (lcd controller disabled)LCD_CR->VSEL = 1; (setting the external source, so VLCD act as an input)ADC_CCR->VLCDEN = 1; (reading circuitry enabled)The LCD clock enable seems also mandatory.Through Cube MX it seems not possible as is, you have to enable LCD in order to get VLCD measurement in ADC.If I modify it myself should I be getting the possibility to do what i'm looking for.Best Regards,Valentin
Bonjour,Since this morning, I can't create touchGFX projects with my card anymore.I have this wonderful error message.My internet connection has no problems.I reinstalled touchgfx but still the same problem.
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.