Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I have a STM32F767 board, and a demo with 10.1 inch display which is working fine without video.And I tried to add only one, like below, and when I download the code into the MCU, it will run into hardware fault.After some debug, I found in:it will not able to run to main of the c code;in __main, it will call some cpp initialization code, and will call some freertos api, this cause some problem, you can ref to below picture, I'm not very familiar with C++ The call stack This I really don't understood, why this generated code will call the osSemaphoreCreate at this time, because the freertos is not initialized yet?my configuration in mx version information:Appreciate for your comments, thanks.
I'm using CubeMX to generate the start file rather than the BSP example. When I tried to set the DMA2D, I found that the start address will be shifted by 0xC.... // setup octospi2 for hyperram, dma2d and ltdc above uint32_t col; uint32_t startAdd = 0x70000000; // try to write the hyperram at this address // use dma2d to write 0xFF224433 to the startAdd HAL_DMA2D_Start(&hdma2d, 0xFF224433, (uint32_t)startAdd, 6, 1); // try to verify the data in hyperram for (int i = 0; i < 272; i++) { for (int j = 0; j < 480; j++) { uint32_t add = (startAdd + (i * 480 + j) * 4); col = *(uint32_t *)add; if (col == 0xFF224433) DEBUG_PRINT_USB("find color at <%d, %d> 0x%x\n", j, i, add); } } // the output is: find color at <3, 0> 0x7000000C find color at <4, 0> 0x70000010 find color at <5, 0> 0x70000014 find color at <6, 0> 0x70000018 find color at <7, 0> 0x7000001C find color at <8, 0> 0x70000020 // the start address is shifted
TouchGFX 4.18.1 is now online.Release notes (which can be found in the online documentation) are as follows:Bugfixes in TouchGFX Designer:Various network stability fixesAdding images to a project that contains a Progress Indicator while TouchGFX Designer is open could result in a crashAdd Widget Menu could enter a state where the search text box was not focused when opening the menuResources Texts could not be selected for a "Set wildcard" actionMissing BW_4.18.0You can find the post for the release of TouchGFX 4.18.1 and its questions here. Please continue commenting on what could be missing or to report bugs.Reminder of the TouchGFX 4.18.0 release notes:New TouchGFX Designer Features:New Widget: Video.Added support for new .xml text database.Removed TextEntries database from .touchgfx file.Added support for XRGB.Added full path of applications in recent applications list.Added various animations to icons.Bugfixes in TouchGFX Designer:Fixed missing proxy dialog.Fixed Gauge widget code
I have tried using an ioc file from a project just made in the STM32CubeIDE for the STM32H7B3I and it still didn't work. Not sure if it is a tool issue or a version issue or what. If I can't get this to work for this board are there any recommended boards that TouchGFX 100% supports? I dont care about form factor or anything I just need A GUI for my project. I have touchgfx version 4.18.1 and STM32CubeIDE version 1.8.0
Hi Everyone,I am tryin to use video decoding that came with TouchGFX 4.18 version. I have a hardware with STM32H743. I can use video decoding with "Direct to Frame Buffer" stretagy buy it's creat some corruption in frame. Image just sliding little bit on screen sometimes. I think, it probably decoding speed cannot reach to flashing speed sometimes.So I decide to change decoding strategy. If I could use double buffering it will be solve speed problem. Video maybe glitch sometime but whole screen wont. But when I slect stretagy to other than "Direct to Frame Buffer" come go hardfoult coused by semaphore.Is any one have this problem yet? Any advice would be helpful. Thank lot.
Created a simple .ioc based on STM32H733 (the same happens with STM32F429) with software packs SEGGER.I-CUBE-embOS and STMicroelectronics.X-CUBE_TOUCHGFX.Components enabled with default configs (see attached file).As per https://support.touchgfx.com/4.18/docs/basic-concepts/operating-system#touchgfx-os-wrappers, OSWrappers::initialize() should initialize a semaphore/mutex (e.g. OS_SEMAPHORE_Create(&frame_buffer_sem, 1);).Upon execution of MX_TouchGFX_Init(); system hangs in OS_Error() because of OS_ERR_INIT_NOT_CALLED.The proposed workaround is to move calls to OS_Init(); and OS_InitHW(); before peripheral initialization (USER CODE BEGIN/END SysInit section), but this has to be done any time code is regenerated by CubeMX.STM32CubeMX 6.5.0MCU package for H7 1.10.0SEGGER.I-CUBE-embOS 1.2.0STMicroelectronics.X-CUBE-TOUCHGFX 4.18.1Alessandro
Hi,I tried using video widget from 4.18 version designer. But when i tried to run simulation its just opening for a moment and closes itself immediately . First I created a project with simulator instead of specific board.added a video widget and selected video file of .avi extension.Are there any steps I skipped or there any specific requirements for video resolution and framerate.#TouchGFXGenerator
I am using slider widget in my project with custom images for base and fill. When I change the base image programmatically, the slider is coming up with filled image as base image. Here is line of code:pwrSaveTimeSlider.setBitmaps(touchgfx::Bitmap(BITMAP_ADV_SETTINGS_SLIDER_BASE_DARK_ID), touchgfx::Bitmap(BITMAP_ADV_SETTINGS_SLIDER_BASE_FILLED_ID), touchgfx::Bitmap(BITMAP_SLIDER_ID));pwrSaveTimeSlider.invalidate();Here is how it comes with after executing above lines of code. As soon as I click down on slider indicator (before even move/drag it) the blue image disappears and the intended base image appears.The blue image is used as filled image which means with slider indicator to far left, the blue image should not show up at all.Is this a known bug with slider widget? BTW, I am using TouchGFX 4.18.1. But I have seen this happening in 4.16.1 as well.
I am trying to compile the generated code from STM32CubeMX that already has an activated X_CUBE_TouchGFX package with no success.there is a lot of missing files! so I did generate a project using the TouchGFX Designer and tried to add all the missing files to my project, this partially solved the problem, cause there are files that include the DSI driver. the microcontroller I am using is STM32H747XI and I believe that because the evaluation board for this microcontroller "STM32H747I-DISCO " uses DSI mode the files using it is generated although the DSI peripheral is not activated on my IOC file and I still have errors that header files is missing and don't know how to fix it!.In general, how can I create a new TouchGFX project for my custom board that uses STM32H747XI microcontroller without the DSI peripheral, instead I am using an RGB interface with the LCD?Another related issue was that when I generated the code using STM32CubeMX or STM32CubeIDE the generated project settings said
I am assuming this is a memory boundary issue, but maybe it is something else: I have an application that runs just fine, using a simple push button interrupt serviced by its own Free RTOS task, which is suspended until triggered. For some reason, when I add a completely unrelated variable to the Touch GFX model class **larger than a bool type**, the task throws a hard fault. It's like I'm on a boundary; I've increased task sizes beyond anything reasonable to expect, but still adding that one variable to the .hpp file breaks the build. Any similar experiences to share are appreciated.
Hi,I am trying to use touch gfx library on a stm32l4r9aii mcu and i use 454*454 pixel amoled lcd, i can not write anything to lcd, So i have noticed from webinar notes that L4R9 mcu can drive up to 450*450 mpi dsi displays. Is my problem about my mcu ? Or, if i will use external psram, can i drive 454*454 lcd with STM32L4R9?Any advise
Flash make -f ../gcc/Makefile flash Reading TouchGFX/application.config Linking TouchGFX/build/bin/target.elf Producing additional output formats... target.hex - Combined internal+external hex intflash.elf - Internal flash, elf debug intflash.hex - Internal flash, hex extflash.bin - External flash, binary -------------------------------------------------------------------
Hi. I have GUI app with two framebuffers in external SDRAM. Display size 640x480. One buffer show on display and other must be updated in vertical blanking period. So what line value (0 or 479 or 480) must be programmed to LIPCR register to identify start of vertical blanking?Thanks.
..
Hi,I've encountered a strange problem.I have two High Priority tasks and the touchGFX task set to Normal Priority.Both High priority tasks are wakeup, check if a variable and go to sleep with osDelay(10).The tasks do not return from osDelay after a touchgfx gui starts..Any ideas what might cause this? thank you
Starting a new project using the STM32F767ZI (144 pin) chip. Project will have ethernet, can w/bootloader over can, and lcd/touchgfx.Looking at the demo kits all of them have SRAM and a large amount of non-volatile memory that is assigned to different memory regions for extra storage of images/etc.My question is are both memory types necessary for building a successful touchgfx application? We need non-volatile memory for data storage anyway, but as I'm putting together the first prototype schematics I'm trying to decide how much SRAM and external FLASH memory is needed. We will be driving a 7inch 800x480 display in RGB565 mode. There will be a few image assets, but none will consume a full 800x480 resolution. Not seeing any guides out there for figuring this out.
I have attached a sample video, in which my desired work is being implemented.implemented in the sample video.As you can see the user can increase or decrease the text and can change the height and width at runtime as he wants.Can we implement similar things in touch gfx ?secondly, the user can add multiple texts in the box wherever he wants and return every parameter of the box x, y-axis, height, and width.thirdly the box size is automatically resized according to the number of digits in it.Kindly guide us, is nextion intelligent series is capable of doing these tasks?
I have defined a Screen named GUI which has, images, rectangle and buttons. All are displayed correctly with the exception of touchgfx::Shape which have white dots around the border and flicker when the touchgfx::Shape is invalidated.I have defined a shape in touchgfx and the code that is autogenerated in my MainViewBase.hpp is:touchgfx::Container Current_flow; touchgfx::Shape<3> current_arrow;My intention is to update the color. To achieve this I change the color of the painter associated to the Shape object and invalidate the shape in void MainView::handleTickEvent() from MainView.cppcurrent_arrowPainter.setColor(Color::getColorFrom24BitRGB(0xFF, 0, 0)); current_arrow.invalidate();Photo of the white flicker around the arrow:
Hi,A colleague need to send me strings via Uart.He asked me whether I work with UTF-8, and I was unable to find this information or how to configure it...(I know that at the end of the day to display it I'll have to convert to Unicode). Does anyone know?I work with stm32l496gThank you
Since I don't have a round display, I don't need this lookup table to convert the bit locations, but there is no obvious way to not use it. How do you bypass this GFXMMU look-up table method and just send the raw image array to the DSI path? I am using this project for testing: https://github.com/STMicroelectronics/STM32CubeL4/tree/master/Projects/32L4R9IDISCOVERY/Examples/DSI/DSI_CmdMode_SingleBuffer
I am using below development toolsMCU: STM32H7B3IIT6IDE: STM32CubeIDE Version: 1.8.0GUI: TouchGFX Version: 4.18.1SDRAM: IS45S16800F-7CTLA1-TRFLASH: MX25LM51245GMI00Schematicstatic void MX_OCTOSPI1_Init(void) { /* USER CODE BEGIN OCTOSPI1_Init 0 */ /* USER CODE END OCTOSPI1_Init 0 */ OSPIM_CfgTypeDef sOspiManagerCfg = {0}; /* USER CODE BEGIN OCTOSPI1_Init 1 */ /* USER CODE END OCTOSPI1_Init 1 */ /* OCTOSPI1 parameter configuration*/ hospi1.Instance = OCTOSPI1; hospi1.Init.FifoThreshold = 1; hospi1.Init.DualQuad = HAL_OSPI_DUALQUAD_DISABLE; hospi1.Init.MemoryType = HAL_OSPI_MEMTYPE_MICRON; hospi1.Init.DeviceSize = 26; hospi1.Init.ChipSelectHighTime = 2; hospi1.Init.FreeRunningClock = HAL_OSPI_FREERUNCLK_DISABLE; hospi1.Init.ClockMode = HAL_OSPI_CLOCK_MODE_0; hospi1.Init.WrapSize = HAL_OSPI_WRAP_NOT_SUPPORTED; hospi1.Init.ClockPrescaler = 3; hospi1.Init.SampleShifting = HAL_OSPI_SAMPLE_SHIFTING_NONE; hospi1.Init.DelayHoldQuarterCycle =
I'm currently using a scroll list on one of my view, and for the item, there is a button to transition the user to another screen. But that button is messing up the smoothness of the drag-scroll, so I followed this thread https://community.st.com/s/question/0D50X0000AIcwHv/scroll-list-with-clickable-itemsand got it differentiate between a click and drag by overriding the click and drag events.void Screen2View::handleClickEvent(const ClickEvent& evt) { if (isClicked && evt.getType() == ClickEvent::RELEASED) { touchgfx_printf("Click detected\n"); scrollWheelListItems.element->setTouchable(true); // not working scrollWheel.handleClickEvent(evt); // not working either Screen2ViewBase::handleClickEvent(evt); // nore this isClicked = false; } else isClicked = true; } void Screen2View::handleDragEvent(const DragEvent& evt) { //touchgfx_printf("dragged detected "); scrollWheel.handleDragEvent(evt); isClicked = false; }Now, the problem I'm facing is that b
Hello everybody,I added an image to my project at the top of the list in TouchGFXDesigner.Sorting is automatically done by touchgfx designer. After that, my application did't run on the target anymore. I'm confused because this is causing a crash of TFT application. Note that TouchGFX Designer didn't report any error.The only message I get is while flashing: Error: ST-LINK error (DEV_TARGET_NOT_HALTED) Recipe for target '_extflash_' failed.This occur if the target application is in crashed state.If I delete the picture, then everything is ok.What's the problem in this situation? Can someone help me?
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.