Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I'm using a STM32F429I-DISC1 board. I can create a display in TouchGFX and it creates the project in the default location "C:\TouchGFXProjects\Display". It makes an IOC file in the "Display" folder "STM32F429I_DISCO_REV_E01.IOC" It makes a "STM32CubeIDE" folder with a " dot project" file (no IOC file for the CubeIDE project).When I try to open the "IOC" file I get an error "Invalid Input: Must be IFileEditorInput".When I open the "dot project" file in the STM32CubeIDE folder, CubeIDE imports the project and I can load/debug the board. But I don't have the "IOC" file that matches the project to edit and configure the MCU.If I import the "C:\TouchGFXProjects\Display" with the "IOC", CubeIDE seems to make a new copy of the project, and editing the imported "IOC" file doesn't update the correct project files.I can copy the "IOC" file into the "CubeIDE" project, and rename the "IOC" so it matches the project name. Changing the copied "IOC" doesn't update the files in the Cube project, it se
In particular, I can see random white dots on LCD when external NOR flash is written, like writing in the flash somehow influence the frame buffer. Testing RAM for error passes OK, same is when I test NOR flash write and verify. I searched for a problem for too long. Any ideas will be appreciated. (The problem is in about 5% of the boards. in normal life I just ignore such problems and put it away, but these days, chips are hard to find and extremely expensive).
We have an application that required to use DCMI, LTDC & SDIO in same time. we plan to use STM32H7B3I-EVAL for proof of concept. can we use it or there is limitation in using all this interfaces in same time?
as shown in this picture (the top picture is in Touchgfx and the bottom picture is in my LCD board) some images in my LCD don't load correctly!my code :void StartDefaultTask(void const * argument) { /* USER CODE BEGIN 5 */ f_mount(&SDFatFs, SDPath, 0); f_open(&MyFile, "image_icon_center_normal.bin", FA_READ); size = f_size(&MyFile); res = f_read(&MyFile, (void*) 0xc0139200, size, (UINT*)&bytesread); f_close(&MyFile); f_open(&MyFile, "image_bg22.bin", FA_READ); size = f_size(&MyFile); res = f_read(&MyFile, (void*) 0xc00f9600, size, (UINT*)&bytesread); f_close(&MyFile); f_open(&MyFile, "image_bg2.bin", FA_READ); size = f_size(&MyFile); res = f_read(&MyFile, (void*) 0xc00f3200, size, (UINT*)&bytesread); f_close(&MyFile); f_open(&MyFile, "image_bg0.bin",
I got one error:////////////////////////////////////////////Post Generate Target touchgfx update_project --project-file=../VHD_V1_Released.ioc --platform=m7 Unable to locate C:/Users/Pratik.JPanchal/Documents/STM32CUBE_IDE/workspace/VHD_FINAL_Project/VHD_V1_Released.ioc Failed Failed/////////////////////////////////////////////Please find screenshot of this error.and tell me the solution regarding this error.How could I refer path of .ioc to TouchGFX ?Thanks & Regards,Pratik Panchal
Hi,I am designing counter with hardware button using Nucleo-F767ZI (freertos) with GFX01M1. the idea is when i hold the push button (eg. 5 sec or more) counter will increase by 10 each if single press, counter will increase by 1. right now it's only work for single press. when i hold the push button it's only increase by 1 like single press.I'm new to programming as well so a complete answer will be highly appreciated. Thanks
Hi everyoneI am looking for a solution about designing a multi-language keyboard on TouchGFX using Unicode characters numbers which means when the specific language for GUI selected, The letters of keyboard changes according to the language and when the specific button ("a" for instance) has pressed, the corresponding Unicode number for that character send to backend program and the letter correspond to that number typed in text area wildcard.for example : when the language is on EN, the "a" button emit number "61" and print the letter in text area.As I searched before, This is the most simple and fast way (with minimal coding) to do, If there is another solution I will be appreciated for your help.
I have designed my small component as a custom wedget that will be embeded in many screens. This component need do some data interations with background system.As document suggested, I would like to use MVP architecture to implement data exchanges. But I find that the presenter is at screen level, not the wedget level. So I have to re-transfer data through screen/view to it's internal componet? And I have to do it in every screen that used the component.Can I do data exchanges at component level with MVP concept?
Also is there any way to use the examples as is and configure them to work on our board?
Created this function where want to pass a flex button as a parameter to the function and change it's text color.Changing the text color directly using the object name works, but when I pass the button to the function I cannot get it workAny help very much thankfulvoid scr_MainView::setButton(touchgfx::AbstractButtonContainer &button) { // works // directly setting color of this button Float2Button.setTextColors(Color::getColorFromRGB(125, 125, 45), Color::getColorFromRGB(145, 145, 145)); // error // button passed to function &button.setTextColors(touchgfx::Color::getColorFromRGB(145, 145, 145), touchgfx::Color::getColorFromRGB(145, 145, 145)); }
Hello,Is it possible to use bigger pressed button image than released button image? How can I achieve it?
We currently have a bootloader we have been using in our products. However it was created with emWin and we are transitioning everything to TouchGFX. The current boot loader fits in code space of 0xC000 and includes a few text updates to the 480x272 TFT display during programming updates. Using TouchGFX with nothing more than a few text lines to the display puts the code size to about twice what I have available. If I removed TouchGFX resource from CubeMx I end up with code that is about 6k under the 0xC000 size. Unless I am missing something I may have only three choices: Return to the emWin for the bootloader.Find a reduction in required resources for TouchGFX framworkAttempt to write directly to the framebuffer and set up the hardware manually removing the TouchGFX framework.Any ideas or articles on reducing the footprint for TouchGFX would be greatly appreciated. It looks like I need something that fits into about 6k of code space.Thanks
..
Hello,My question would be the same as on top of this post. So far i was not able to do it. I know that DMA2D is intented to send large buffers instead of 1 pixel, but i'm curious becasue I would like to implement some function which will draw a vertical lane with 1 pixel width.BR,Jan
Hello,I used the default .IOC configuration by TouchGFX. My intention is to add ETH to the project that was automatically generated by TouchGFX. PA0 was mapped to: VSYNC_FREQ by the default TouchGFX configuration in the IOC. This signal is used for performance monitoring, removing it is ok!Combining ETH/RMII and QSPI is different:I look at the IO’s and OCSPI1 are connected to PD & PG6 (via AF10 for port G) GPIO’s on the schematic, RMII is connected to PA, PB, PC and PG13 (via AF11 for port G). ( DS13312 Rev 3 datasheet P110) Is it correct to conclude that the IO layout of the board does not allow me to combine QSPI via OCSPI1 and Ethernet communication as both have other requirements for GPIO port G alternate function selection? Best Regards,Johi.
Hi every one. I am using STM32-F401RE, 2x16 LCD with I2C integrate, i connect SCL-SDA-Vcc and GND each other (board and LCD), i tried to make scann program to know adress of LCD in this way:#include "main.h"#include "stdio.h"I2C_HandleTypeDef hi2c1;UART_HandleTypeDef huart1;uint8_t Buffer[25] = {0};uint8_t Space[] = " - ";uint8_t StartMSG[] = "Starting I2C Scanning: \r\n";uint8_t EndMSG[] = "Done! \r\n\r\n";void SystemClock_Config(void);static void MX_GPIO_Init(void);static void MX_I2C1_Init(void);static void MX_USART1_UART_Init(void);int main(void){ uint8_t i = 0, ret; HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_I2C1_Init(); MX_USART1_UART_Init(); HAL_Delay(1000); /*-[ I2C Bus Scanning ]-*/ HAL_UART_Transmit(&huart1, StartMSG, sizeof(StartMSG), 10000); for(i=1; i<128; i++) { ret = HAL_I2C_IsDeviceReady(&hi2c1, (uint16_t)(i&
Hello, I am going crazy, I always get the error that the structure Lcd_Ctx is not declared, while it is clearly declared (by including "stm32h750b_discovery_lcd.h"). With F3 I can find the structure declaration.If I change the file from .c to .cpp the error is gone...See screenshot below:
The values for the range of a slider are declared as signed integers in "Slider.hpp"int currentValue; int valueRangeMin; int valueRangeMax; int16_t indicatorMinPosition; int16_t indicatorMaxPosition;But the getters for this values return an unsigned type:virtual uint16_t getIndicatorMin() const { return indicatorMinPosition; } virtual uint16_t getIndicatorMax() const { return indicatorMaxPosition; } virtual uint16_t getMinValue() const { return valueRangeMin; } virtual uint16_t getMaxValue() const { return valueRangeMax; }This generates some problems or incorrect results when the values are negative.The return type should match the declaration
I found out that LTDC interupt callback is not getting called but can't figure why. Following code is auto generated by CubeMX LTDC interrupt is enabled in NVIC."TouchGFXGeneratedHAL.cpp"extern "C" { void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef* hltdc) { if (!HAL::getInstance()) { return; } if (LTDC->LIPCR == lcd_int_active_line) { //entering active area HAL_LTDC_ProgramLineEvent(hltdc, lcd_int_porch_line); HAL::getInstance()->vSync(); OSWrappers::signalVSync(); // Swap frame buffers immediately instead of waiting for the task to be scheduled in. // Note: task will also swap when it wakes up, but that operation is guarded and will not have // any effect if already swapped. HAL::getInstance()->swapFrameBuffers(); GPIO::set(GPIO::VSYNC_FREQ); } else { //exiting active area HAL_LTDC_ProgramLineEvent(hltdc, lcd_int_active_line); // Signal to the framework that display update has finished. HAL::getInstance()->frontPorchEntered()
Hello, Is it possible to know scrollable text coordinate? I want to do editable text in keyboard and by touch I know where the cursor needs to be. When I touch somewhere in the text I know touch coordinate but I need to know scrollable text coordinate. For example the scrollable container has defined area and if scroll text down and touch it will be the same coordinate as I touch before. I don't know are you understand what I want. Let me know. I try to explain more. Thanks.
I've encountered the problem with not enough space on the internal SRAM many times when I've tried to add more view or container in the TouchGFX application.Eventually, I've found that high memory usage has occurred from the 'static FrontendHeap' singleton object when I've analyzed the memory map file.How can I move the 'FrontendHeap' to external memory such as SDRAM?My hardware board specification:STM32F429BI (192KB Internal SRAM, 64KB CCM SRAM )External SDRAM (8MB)Please find the pie chart (attachment image) for more detail about memory usages.Thank you in advance for any answers or any solutions.:smiling_face_with_smiling_eyes:
Hello, STM32WB55 is not support DCMI as default. How we can add DCMI to this device?
I am implementing a low cost custom TouchGFX project using a stm342G071 and an ILI9488 based display. For the ILI9488 driver I need the touchGFX framebuffer in RGB888 format.This works ok if I keep the image data in internal flash but I need to put this data in an external spi flash and cannot work out how to do this. All the tutorials I have found suggest that the external flash needs to be memory mapped but the G071 does not support this.However TouchGFX has example projects for the G071 using the GFX01M2 display module which does use external, non memory mapped, SPI flash. Looking at the ioc configuration for that project I have found that it gives the option of a External Data Reader if the framebuffer is RBG565 but not for any other format.Is there a way of using an external data reader with other formats, eg RGB888? Or is it really the case that low cost solutions are limited to just RGB565 frame buffers?
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.