Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
hiwhen i use Keil V5.39 and generate project by STM32CubeMX, program run whitout any problem but when i do same work by Keil V5.40 or V5.41 program dont runwhen i debug in V5.40/5.41 step by step program dont inter main functionSTM32CubeMX 6.12.1TouchGFX 4.24.1STM32H743ii
Hi,I'm looking to print value as "32.45 degC" or "90.41 degF"(based on other function output to print degC or deg F) in textArea2 but not able to print using Unicode::snprintfFloat. Can you please help me in printing float value and its units in textarea2. If the value is in decimal, I'm able to print using below logic and print the output as 32 degC or 90 degF:Unicode::snprintf(textArea2Buffer,TEXTAREA2_SIZE,"%d %s",tempValue, tempUnit); Thanks ,Bhavya
Hello,I'm trying to make a project using a scrollWhel. I put in my scrollWhel a container containing 8 sliders and I put 64 items in my scrollWhel.I'd like to change the values of the sliders dynamically each time the page changes, but I can't manage to update them in real time, only at startup. Could you please tell me how to do this?Sincerely PS: I can't use a swipecontainer because it's impossible to make 64 pages and I absolutely must have 64.
In TouchGFX version 4.18.0, after modifying the screen Designer output and using STM32CubeIDE for compilation, an error occurs after flashing, as shown in the attachment "error". I only modified the text definitions. Before the change(Correct_settings),allows for correct flashing, but after the change(error_settings),shows an error flashing.How can I check the permissible limit for text definitions? Is it related to memory size?Is it possible to make the changes so that flashing works correctly?Please assist, thank you.
Hi,I have a project with about 10 screens implemented and the requirement is that an animation needs to be displayed during bootup of the device.Is there a way to go ahead and add another extra screen with animation and call that during bootup?Or Should I create a new TouchGFX project with only animation screen and bootup code alone and run this project first and then call the 10 screens project?Please guide.Thanks & Regards,Keerthi
Does anyone know if Touch GFX is slated to support the MP line of micros? Thanks
Hello,i am working on a board that is redrawn from the H745I-Disco which originally has the FT5336 as touch controller. My Display has the FT5426. On an earlier board that recreated the F746-Disco (which also has the FT5336) i noticed that the FT5426 worked right away. This was not the case on the H745 but was fixed after changing the Device ID. So touches are detected and deliver the proper values for x and y in sampleTouch() but nothing reacts to it. It is like there is no touch functionality at all. Any recommendations? Thanks in advance!Martin
Hi there,I have a project with a display, and I want to show several screens.All the screens have a time text at the top-left corner.I know I can put a TextArea on all the screens, which means each one needs some memory to store the time value.Is there any way, I can store the time in just one time, and display the time on any screen?Thanks for your help!
I Started my project with touchgfx designer and have added in many hardware files. After adding the files to c and c++ compiler paths in CubeIDE they project works fine. However, when I Program and Run Target from ToughGfX Designer, none of the files are found ie."c:\TouchGFXProjects\CustomWheel/Core/Src/main.c:1094: undefined reference to <everything not in main.cpp>"I have tried changing $projectName/TouchGFX/simulator/gcc/Makefile to the following but it does not work. ADDITIONAL_SOURCES := ../STM32CubeIDE/Application/User/Encoder.c ../STM32CubeIDE/Application/User/CarrierFuncs.c ADDITIONAL_INCLUDE_PATHS := ../STM32CubeIDE/Application/User I have gotten it to work after modifying $projectName\gcc\Makefile and adding the c files individually to the list of "board_c_files". However, I have many .c and .cpp files and it is unrealistic to add each individual one.Where is the indended location to add these files so that touchgfx designer can see them?
Dear Community!I'm using an STM32F746G Discovery Kit, and just getting started with TouchGFX. I saw, that when you make a TouchGFX project, it automatically creates the project with FreeRTOS. Now on, I don't need OS right now, so I made some changes in the IOC, (disabled OS, deleted OS dependecies) and now it compiled perfectly and everything is fine, so I can still make screen changes in TouchGFX and it works in a simple while() loop.In the STM32CubeIDE, I enabled some USART and I2C, because I am using a MAX30102 pulse oximeter sensor. I have a lot of experience with it, so when I saw it's output signal, I knew instantly that something is wrong with the setup. The while() loop which controls the sensor read is simple: After that, in the PC serial plot program, I see a "noisy like" sensor output, which is (I think) caused by some TouchGFX thing... The IR and RED signal should be a smooth "line" in idle state if I do nothing with it, but now it has this fancy noise :) : The li
Good evening (o;Google and this forum didn't return much information regarding accessing a GPIO port directly in 8-bit mode for read/write...for example to control a 8-bit TFT module...The HAL library also has no function for it....I assume it is possible..but only when digging more into low-level direct register access?thanks in advancerichard
Hi, The TochGFX builder appears to provide for more than one variable to be plotted on a single graph: But looking at the API for both types of graph there is no way I can see of specifying which line to use for the data. I seems obvious that the data would have to have a common x and Y range as there is no provision for mult-range scaling. If you cannot have more than one variable why does the designer provide for them?In past projects I have overlaid multiple graphs to plot additional variables, but this is extremely tedious to build and maintain.Kind regardsRob
Working with a custom STM32U5F9ZJT6Q board that has an ISS66WVH8M8 (Octo-SPI 166 MHz 64 Mbit PSRAM) that we would like to use for the framebuffer to a 1024x600 RGB888 LCD. The RAM sits on the HSPI1. With that as a reference I was able to configure the PSRAM in memory-mapped mode. A basic test of filling the RAM a pseudo-random pattern and reading it back convinced me the device is functioning. However, when I try to use it with DMA2D and LTDC, I just get garbage on the screen. When I use internal MCU RAM as the framebuffer, the setup shows my TouchGFX screen as expected.Project is setup in CubeIDE 1.16.0. TouchGFX Designer 4.24.0 generats the user interface.I've read the following:Section 30 (Hexadeca-SPI interface) of the RM0456 (STM32U5 Series Reference manual).AN5050 Application Note on XSPI interface.STM32U59xxx STM32U5Axxx Errata sheet.I can share any setup or memory initialization code if it is helpful. I have conc
Hi there TouchGFX team!I'm working on a GUI that monitors several values, like in the screenshot. What is the best way to create those gray blocks. Should I add a background image will all the circle + gray boxes + text, and then render the values. Or should I create circle + gray boxes + text using widgets? Also, whats the best way to create those gray boxes? Thanks a lot in advance
Hi,Do I need to prevent calling multiple screen transitions from event handlers as illustrated in the following pseudo code ?Or, once the "application ().gotoOtherScreen ()" is executed in either handleTickEvent () or handleKeyEvent (), there is no way any further handler is called.I am not sure if there is a way to check for ongoing transition. I thought I saw an API for that somewhere but cannot find it now.So I call imaginary function "application ().isScreenTransitionInProgress ()". // ScreenOne.cpp void ScreenOne ::handleTickEvent () // override final { if ( ( true == bGoToScreenTimeout ) && ( false == application ().isScreenTransitionInProgress () ) ) { application ().gotoOtherScreen (); } } //--------------------------------------------------------- void ScreenOne ::handleKeyEvent ( uint8_t key ) // override final { if ( false == application ().isScreenTransitionInProgress () ) { application ().gotoOtherScreen (); } } Thanks.
Hi there TouchGFX team! I have a heart rate variable in my application. On the UI, I have a circle that can be green, yellow or red based on the value of the heart rate variable. What's the best way of implementing this? I can think in an "if" statement inside the tick handler that checks for the heart rate value but I would like to avoid a polling scenario. Thanks a lot in advance
Hello, I'm trying to setup a simple "Hello world" project for a custom board with an STM32H7A3IIT6.I've successfully created the project from CubeMX (6.12) generated the code for Keil MDK and, starting from the application template of the TGFX designer (4.24), I managed to add the GUI to the project, compile and flash the board successfully.As I wanted to start using CubeIDE (currently version 1.16) I tried the same approach, so:- CubeMX ioc project (copy of the same file used before for the Keil code generation)- Generate code for CubeIDE ("Generate under root" checked as with unchecked it gave me the following error (https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/touchgfx-designer-error-quot-unable-to-locate-c-lt-path-to/td-p/100242)- Open the generated "ApplicationTemplate.touchgfx.part" file with TouchGFX Designer- Import the Blank UI and put a coloured box on the main screen- Generate code- Open the project with CubeIDE and build the project-> This leads to 174 errors,
hi,I have a scroll wheel with 7 icons, with a circular appearance.I'd like to enlarge a bit the selected item, to make clear that item has been selected, is it possible? can touchgfx resize the selected icon?Thanks in advance
Hello! First, some information. The board that I am using is a custom board with an STM32U599VJT6. It is supposed to interface an RGB666 480x480 display with parallel interface and a Sitronix ST7701S (I have correct initialization code). I am currently trying to use CubeIDE 1.16, MX 6.12 and TouchGFX 4.24. I use Debian for STMCubeIDE and TouchGFX Designer in a Windows virtual machine.The first problem: I have configured a project close to what the STM32U5A9 Disco board is generated with upon project creation in TouchGFX Designer, following the tutorial by embryonic.dk (https://www.youtube.com/watch?v=SRQD8JMeg_k). The code that is generated by the CubeMX for the hardware configuration compiles fine. When I try to add the TouchGFX (and the FreeRTOS) in the CubeMX, the code can no longer compile. (Error message in file "Error1" below). When I try to import the project in TouchGFX Designer, add a test image and generate code there, the errors increase. (File "Error2"). The MX file ("
Hello, everyone.I have a problem on which I am seeking advice and opinions for a possible solution.I am making an application with the STM32H7S78-dk board and TouchGFX. A very simple thing, imagine a page with a background image and a button, same for page 2. By pressing a button I move between pages.What I want to do is read an image from the SD card (I have already managed to configure reading and writing a file correctly) and display it on the screen on one of the two pages, let's take page 2 as an example.I have almost succeeded but with some basic problems.My method was to have TouchGFX allocate an image of the size I wanted in the External Flash and through this code in the image.cpp file change its location.LOCATION_PRAGMA(‘MyImage’) //RAM KEEP extern unsigned char image_saname[] LOCATION_ATTRIBUTE(‘MyImage’) = { ...Where this area called MyImage that has been allocated in the external RAM section in the LD file like this:BufferSection(NOLOAD) : { *(TouchGFX_Framebuffer TouchGFX
Hi,Touchgfx message me that there is an update.But i can not find a changelog and the link is for 4.24.0 but not 4.24.1 Thanks
BACKGROUNDproject purpose: capture a picture every 2 secondsboard: nucleo stm32h743zi2 at 480MHzide: stm32cubeidecamera module: ov7670 at 24MHzCONFIGURATIONThe project was initialized using stm32cubeMX with I2C and DCMI initialized. The ov7670 is configured with QVGA resolutions and RGB565. I can confirm the ov7670 is properly configured because the debugger shows that each it_vsync contains 240 it_hsync (can be count using the interruption).I have tried configuring the DMA with the following configurations:DMA0/DMA1 Stream0-5With and without FIFONormal Model and Circular modelHere is the main.c (only the part I added):uint8_t framebuf[320 * 240 / 2]; void ov7670_Init() { ov7670_Stop(); ov7670_Write_Reg(0x12, 0x80); // RESET HAL_Delay(30); for(int i = 0; ov7670_reg[i][0] != REG_BATT; i++) { ov7670_Write_Reg(ov7670_reg[i][0], ov7670_reg[i][1]); HAL_Delay(1); } } ... int main(void) { ... ov7670_Init(); while (1) { HAL_Delay(2000); HAL_DCMI_Start_DMA(&hd
Hello!I set the wildcard range to 0x0000-0xFFFF to use all characters contained in the "Pretendard JP" font.However, I get an error when generating code with TouchGFX Designer.Of course, specifying small wildcard ranges work, but I also want to support multiple languages with as few language packs as possible.Is there another way to include all characters in one resource without specifying wildcards?I also tried entering about 20k Unicodes into the Wildcard Characters field, but the error was the same. == Error message ==ERROR: Illegal sizeInKerningTable for glyph 0x002C (439 not in range [0..255])ERROR: While generating font from assets/fonts/PretendardJP-Bold.otfAn error occurred during text conversionCleaning generated files from generated/texts and generated/fonts.Generating generated/fonts/include/fonts/GeneratedFont.hppGenerating generated/fonts/src/GeneratedFont.cppGenerating generated/fonts/include/fonts/UnmappedDataFont.hppGenerating generated/fonts/src/UnmappedDa
Hi,I have a question related to the graphic engine DMA2D in the STM32H743. The STM32H743 custom board has the video analog chip (ADV7180KCP32Z-RL). It sends the YCBCR video data to STM32H743 through DCMI interface.1. We are able to receive the YCBCR video data (input data is line by line pixel) from the DCMI interface. Now we want to convert the YCBCR video data to RGB888 using DMA2D. Is it possible to convert YCBCR video data to RGB using DMA2D block?If so, Can you please provide us the sample code for this?2. What we understood from the STM32H7xx technical document that, the DCMI can convert the YCBCR to RGB888 if the YCBCR data should be in the form of 8x8 pixel block. Above points Which one is correct?ie. a. Whether the DMA2D can convert YCBCR (input data is line by line pixel) to RGB888? (OR) can convert YCBCR (form of 8x8 pixel block) to RGB888?
hi I use touchgfx 4.24 , STM32CubeIDE 1.16 and STM32cubeMX 6.12 I do a project with touchgfx, I import it on cubeide, no problems to launch it on the card (STM32F769I-DISCO) I make a modification ( uart 5) on the file ioc and the bilioteque (newlib rentrand) as requested by CubeMX. When I launch after compilation I have an error, of type MemManage_HandlerI do not see mistake that I could have comeate.Who can help me? thank
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.