Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
HIi try in callback repeat one memory line in two display lines, but display still show no doubled image.Config is L8 CLUT framebuffer .Code LTDC_Layer2->CFBAR -= 320; LTDC->SRCR = (uint32_t)LTDC_SRCR_IMR; HAL_LTDC_ProgramLineEvent(hltdc, LTDC->LIPCR+2);callback work every second line on visible area, but dont double. I mean because is preloaded in buffer. Exist way to go?
Thank you for helping.environment:TouchGFX Ver 4.16.1Prepare two released images and one pressed image.While pressed, the pressed image is displayed.I want to switch the image of the released image every time the button is pressed and released.How should I implement it?Thank you.
I have attached a very simple Application to show the problem with the Cacheable Container. I have a Display with a Resolution of 480x320. The Display is naturally in Portrait mode, but we use it Landscape, so I have set in the Display configuration the Width to 320 and the Height to 480. In this configuration if the cache functionality of the CacheableContainer is enabled the whole container is just black. If I disable the cache functionality the Container shows what it should. When I now invert the Display configuration to width=480 and height=320, the Cacheable Container works.Am I missing something here ?Thanks for helping
Dear TouchGFX Team,I developed a display interface from TouchGFX 4.16 generated HAL and board configuration files that uses the following:STM32L4video mode DSI LTDC interrupt sync for framebuffer swap in TouchGFXHALGFXMMU, dual frame buffer in internal RAMDMA2D for image assets from external flashIt is working very well, I have a swipe container that is smooth with no glitches. However there is an issue with the cover transitions. During the transition it does not hold the previous screen as the new one slides in, the area that should be the previous screen instead takes the GFXMMU default value.Actually, when I run the code with a breakpoint on swapFrameBuffers(), only one of the buffers has the problem, the other one works fine. So during the cover transition the screen is swapping between a correct buffer(old screen in back with new one sliding in front), and the problem buffer(GFXMMU default value in back with new one sliding in front).If I do single buffering the cover transition
Hi everyone!I'm kicking off a parallel effort to improve the experience using TouchGFX as far as general ST tool chain is concerned. There are links i cannot fix (though i can suggest improvements) and there are some that i can.So, what are the major pain points in using this rather complicated tool chain (TouchGFX Designer, CubeMX, CubeIDE, CubeProgrammer, etc)? Which improvements would you like to see to make using TouchGFX easier when it come to integration and tool chain? (Specific framework/designer inputs are also welcome and i'll forward those, although this survey is mostly concerned with how to improve integration between tools).What are you typically struggling with when you struggle?Thanks!Best regards,Martin
Hi,I cannot figure out how to add several include path to for the simulator.I can add 1 path to the TouchGFX\simulator\gcc\Makefile as follow:project_path := $(call qs,$(abspath $(call sq,$(makefile_path)../../..))) app_path := $(call qs,$(abspath $(call sq,$(project_path)/Core/App))) ADDITIONAL_SOURCES := ADDITIONAL_INCLUDE_PATHS := $(app_path) ADDITIONAL_LIBRARY_PATHS := ADDITIONAL_LIBRARIES := export ADDITIONAL_SOURCES ADDITIONAL_INCLUDE_PATHS ADDITIONAL_LIBRARY_PATHS ADDITIONAL_LIBRARIESNow, how do I add more path?Thanks!
Using version : IDE 1.6.1GFX Designer: 1.6.1MX : 6.2.1Board : STM32L4R9 DISCORVERYFirst of all, I am not good at English, so I am posting questions with a translator. Please understand.I ran into a problem while trying the video below.https://www.youtube.com/watch?v=4-fyx4e96jk&list=PLvjA8o0qS7pdKl9P9bda6PT2hRw-VQ3c_&index=5As in the title, after the code is generated by changing the code generated by GFX in MX, running in the IDE, running target in GFX, or both, the screen is broken.(Phenomena where R G B points appear sparsely on a black screen)While searching the internet, I found the link below, and I'm not sure if this is the same as what I've been through. And it is a frustrating situation because I am not sure how to apply the method introduced as a temporary solution from the link below.https://support.touchgfx.com/en/docs/miscellaneous/known-issuesWith a camera and display, I'm trying to implement streaming, still-cut photo saving, etc, but I'm stuck. If you have any
Hi guys,I would like to know, if I can somehow in general define img in program and use it in function. For examplevoid Screen1View::function1(random_img){image img;img = random_img;img.setAlpha(0);img.Invalidate;}The same way with Box with border and text area.Thank you
Hi,In my demo project I have to move a dot along a L-shaped path continuously i.e. start over from beginning once the dot reaches end of the path. I would appreciate if you could point me to an example that explains hot to achieve this.Thank you in advance.
Hi Folks,I just bought STM32F769I-DISCO kit and install Touchgfx. I need to develop application which need to handle time event, so it is crucial to know what is my screen refresh rate.I read the MCU documentation it was not mentioned there. I read the Touchgfx, it just mentioned refresh rate is assumed to be 60 frame per second (fps). But how can I know for sure my refresh rate? Any doc mentione this? Is it written somewhere in the platform code? Can I modify it?Thank you!
I have the following problem to solve: I have buttons for selecting device 1, device 2, device 3, etc. Each device can have the status OK, warning, error, and then two additional states. So I like to show the status of the device by using different color buttons. Currently I have different versions of the buttons, in green, yellow, red, etc. and it works. This however wastes a lot of precious FLASH memory space. For the buttons the pixel data is the same, only the color lookup table is different. Is there a more elegant way of creating the button bitmaps with different colors? I would like to have the pixel data and the lookup tables in FLASH memory and then dynamically combine them to the bitmaps.
I have noticed what might be a bug in the updateItemCallbackHandler() in my screen's ViewBase file where the itemIndex consistently moves ahead 1 index when I swipe up. /* Scroll Wheel Item Update response to swiping is generated by TouchGFX */ void ModeScreenViewBase::updateItemCallbackHandler(touchgfx::DrawableListItemsInterface* items, int16_t containerIndex, int16_t itemIndex) { if (items == &scrollWheelModeListItems) { touchgfx::Drawable* d = items->getDrawable(containerIndex); ValuesMenu* cc = (ValuesMenu*)d; scrollWheelModeUpdateItem(*cc, itemIndex); } else if (items == &scrollWheelModeSelectedListItems) { touchgfx::Drawable* d = items->getDrawable(containerIndex); ValuesMenu* cc = (ValuesMenu*)d; scrollWheelModeUpdateCenterItem(*cc, itemIndex); } }During debugging, I noticed my value for swiping down to decrement by 1 but swiping up increments by 1 twice initially. The function scrollWheelModeUpdateCenterItem(), which references itemIndex, is call
Excuse me?I want to use TouchGFX without FreeRTOS.I make STM32F769I_DISCO's project with TouchGFX Designer.Next, I open .ioc file and disable FreeRTOS. I run this project, but the dhisplay is blank.I want to tell me how to use touchgfx without FreeRTOS.touchgfx's ver:4.16.0
I am using stm32f746 nucleo board and display with fmc!his is how it worksvoid Screen1View::handleTickEvent(){ tickCounter++; if(tickCounter > 60){ tickCounter = 0; scrollWheel.animateToItem(scrollWheel.getSelectedItem() + 1, 0);// application().gotoScreen2ScreenSlideTransitionEast(); }}doesn't work like that! Makes a two animationSteps and HardFault!void Screen1View::handleTickEvent(){ tickCounter++; if(tickCounter > 60){ tickCounter = 0; scrollWheel.animateToItem(scrollWheel.getSelectedItem() + 1, 10);// application().gotoScreen2ScreenSlideTransitionEast(); }}
looks like I need user begin and end sectionsconst uint16_t BITMAP_ICON_KEYBOARD_EVEN_ROW_ID = 0;const uint16_t BITMAP_ICON_KEYBOARD_HIGHLIGHTED_ID = 1;const uint16_t BITMAP_ICON_KEYBOARD_ODD_ROW_ID = 2;const uint16_t BITMAP_KEYBOARD_BACKGROUND_ID = 3;const uint16_t BITMAP_KEYBOARD_KEY_DELETE_HIGHLIGHTED_ID = 4;const uint16_t BITMAP_KEYBOARD_KEY_HIGHLIGHTED_ID = 5;const uint16_t BITMAP_KEYBOARD_KEY_NUM_HIGHLIGHTED_ID = 6;const uint16_t BITMAP_KEYBOARD_KEY_SHIFT_HIGHLIGHTED_ID = 7;const uint16_t BITMAP_KEYBOARD_SPACE_HIGHLIGHTED_ID = 8;
Hi @Martin KJELDSEN Please update gcc version bundlen with TouchGFX Environment to a newer version.For both gcc and arm-none-eabi-gccSomewhere along version 9 or 10 would be great!/Anders
Hi all,How is it possible to change a particular index of Histogram graph?I would like to change item n°2 (see the picture) from a start to a final Value, without redraw entire graph.Second question, Is it possibile to change the colour of a single item?Thanks in advance
Hello!A have a window, his height is 10 strings. Scrollist have 30 strings.When I add 11-30 strings, they are out of window. I can manually scroll list to last element.How can I do it by software?Something like ScrollList1.ScrollTo(25);.....
Dear All,I'm approaching for the first time STM32F7 family. My need is to use this microcontroller essentially to drive an 800x480 TFT LCD 24 bit. It's the first time that I'm doing it.Reading online the RAM needed for a similar resolution is 800*480*24/8= almost 4MB.Why on the ST evaluation boards there are alway 128MB of RAM? Is there a reason why this bigger RAM is necessary? Consider that I just need to drive this LCD and maybe use other peripherals like USB HOST and ETHERNET.Furthermore, I see that the RAM indicated in the evaluation boards are very expensive on e-commerce sites like digikey (more than 8€ for 100 pcs.) while I've found other RAM ICs that are really cheaper. For example the memory IS42S16400J-7TL costs 1,2€ for 100 pcs. Do you think I could use this kind of ram instead of the one indicated in the datasheet?Thank you in advance and sorry if my question maybe are elementary but as I said before it's the first time that I'm approaching it.Mattia
I'm using the dynamic graph to represent a small dataset. The data is acquired all at once through a back-end process, leaving me with an array of around 1000 datapoints. Once acquisition is complete, I use the following code to refresh the graph.graphWidget.clear(); for (int i = 0; i < size; i++) { graphWidget.addDataPoint(yValues[i]); } graphWidget.invalidate();This works sort-of, however the X value labels also increment by size. I want them to restart from 0. I assumed .clear() would do this, but apparently not. How can I reset the graph and labels back to a fully empty state, such that I can explicitly get labels starting from 0 again? Attached photo shows current (undesirable) behavior.Solved. Thanks @Vladimir Open AbstractDataGraph.hpp and scroll down to the AbstractDataGraphWithY class definition, around line 995. Add the following method to the HPP file.void dataCounterReset() { dataCounter = 0; }In your View code, call the method to reset the x-axis labels.
Hello dear engineers,How can I instruct the STM32cubeIDE to neglect programming of the exteranl flash parts?This parts have been placed in an external ram memory which is to be read and programmed in runtime.In Keil ide, it simply says since no flashing algorithm for the specified parts is available, I will not take these sections into account for programming.The _flash.ld file has been changed as follows./* Memories definition */ MEMORY { CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 192K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K ExtFlashSection (xrw) : ORIGIN = 0xC00F0000, LENGTH = 0x1f10000 }Any help would be appreciated.
So I developing prototype using STM32F769 Discovery Kit. At first I develop the UI using TouchGFX and so far so good.But I realize the generated codes from TouchGFX does not really generate driver code for other component e.g. Virtual Component Port. So I search around STM site and found CubeMX tool which seems the right tool for me generate this low level code. So when the code generated by CubeMX, I use Keil IDE vs 5.34. But when I build the code I end up with errors/warning:"Rebuild started: Project: STM32F769I_DISCO*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'*** Warning: You are compiling one or more files of source type C++ and have selected 'use MicroLIB'. MicroLIB does not support C++!....................linking...STM32F769I_DISCO\STM32F769I_DISCO.axf: error: L6050U: The code size of this image (88518 bytes) exceeds the maximum allowed for this version of the linker.Finished: 0 information, 0 warning, 0 error and 1 fatal error messages."STM
Hi Folks,I am developing a prototype for real time measurement of particular analog value. The intention is to show graph showing real time measurement, it take data every 0.1s but the X-axis would show label 0 - 9 s (fixed) This mean, every 1s contains 10 data points, total 100 points.But when I tried Touchgfx designer DynamicGraph widget, it shows 2 problems:The X-axis label is by data point count, so in this case, it show 0 - 99 data point instead of 0 -9s.The X-axis label grows as data point increased while what I want is fixed.What I want is like this; X-axis label is fixed 0 - 9s ( I draw manually the X-axis by hand, not generated by touchgfx) But what Touchgfx gives me is this:As we can see from above, X axis label show data point instead of time in seconds and the label grows instead of fixed.Setting:My development board is:STM32F769 Dicovery Kit.Could someone give me some pointers/direction please?
Hi Team,Can we control the LCD display brightness in the STM32H7B3-DK board?
I would expect obscured controls to not respond to clicks.
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.