Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hello,I try to use these two boards:- X-NUCLEO-GFX01M2- NUCLEO-G071RBI managed to use TouchGFX Designer to do a simple exemple with two buttons.But i can't have events while pressing buttons on screen. In buttonCallbackHandler() function, i haveno breakpoints at each press. I follow instructions on this page:https://support.touchgfx.com/academy/tutorials/tutorial-02Do you have an idea for the callback no processing?Thank you. Best regards,
Hello,I'm currently working on a project where I want to use both the NFC08A1 expansion kit and the RVA35HI display kit along with the U575ZI-Q development board. When I try to include the X-CUBE-TOUCHGFX software package in STM32CubeIDE, I get the following message in the software packs component selectorI understand that there are pin conflicts between the two software packs. I have tried reassigning all the pins of the X-CUBE-NFC6 such that there are no conflicts, however even after doing so I get the same warningAny idea on how to go about from here?Cheers
We’ve designed a custom PCB using the STM32H743IITC microcontroller and are developing a 4.3-inch TFT display interface using TouchGFX for the graphical design and STM32CubeMX for code generation and configuration. Our goal is to release this project as a commercial product. I would like to confirm whether TouchGFX and STM32CubeMX are completely free to use for commercial purposes when used with STM32 microcontrollers. Are there any licensing fees or restrictions we need to be aware of for either tool in this context?
Hi,I have a STM32F746G Discovery board on which I have developed an application. The application was running fine on STM32F746G Discovery CU3. When I bought a new identical board and flashed the application, the display literally showed something like this: My old board is DK32F746G$U3, which is working fine, but the new one is DK32F746G$CU4, which shows Black screen. I have no clue what the display is used for CU4 as I could not find any information about it. How do I solve this?
I am having trouble finding how to change the interval of the major gridlines dynamically. I am using the scrolling graph and have implemented dynamic Y-axis range, but I want to be able to change the intervals of the gridlines as well. Is this possible using touchGFX tools or do I need to make a custom widget?
hiI wrote a function similar to the one below for changing the text of a Text Area, and it works perfectly. However, I encountered an issue with Flex Button. This part of the code gives an error: touchgfx::WildcardTextButtonStyle &FlexBtn void FlexButtonSetText( touchgfx::WildcardTextButtonStyle &FlexBtn, touchgfx::Unicode::UnicodeChar *UnicodeText , char * text ) { Unicode::fromUTF8( (uint8_t *)text , UnicodeText , strlen(text)+1 ); FlexBtn.setWildcardTextBuffer(UnicodeText); FlexBtn.invalidate(); }
I am using a STM32U5G9J-DK1 kit that comes with a round 2.47" LCD DSI MIPI and looking for other sources that will work with this board. I can't find any technical details on the LCD - anyone have a link? I'm looking for the controller part# mainly.Tried a Kingtech LCD with a the same 35 pin FFC and it works great (uses HX8379-C controller), however they are in short supply.Ordered this LCD, 2.1" display has different number of pins so I made an adapter. It uses a ST7701S but no graphics at all (backlight works). Anyone know if this is a controller/compatibilty issue? I'd like to just use TouchGFX however I don't see where I can switch controllers.Thanks
Hello,im working on MP3 player. I would like to show list of files/folders(file system) in the FAT system on SD card and open them. The length of list is dynamically based on content of SD card. What is the good approach to do this? Thanks for the tips.
I am working on a project that needs to integrate a 240x240-round display. The display uses a GC9A01A driver, and the host communicates with the driver through an 8-bit 8080 parallel interface. The display vendor provided this interface for communication, so I went with it. For the host, I am using an STM32F413ZHT6 microcontroller. Based on the display timings, I have configured the FSMC bus. There was an example for the discovery board which uses 8080 16-bit to interface with the LCD in the discovery board. I used that example to make some changes such as display setting initialization, data write and such.For the display configuration, I saw some example codes for the GC9A01A. I took those initialization commands and configured it in my code base. I was able to up the display.The problem I am facing is that, the display did not get updated completely leaving garbage values in the screen. i slowed down the display update and checked, It seemed like during the update some ro
Hello to all ,I am wanting to display a text that changes over time what it says, this works fine but for some reason the letters with tilde or the Ñ does not appear.I put a picture of how I set the typography and how it is shown badly written in the simulation.in “wildcard characters” I added áéíóúÁÉÍÓÚñÑ and in “wildcard ragne” I put ,Á-Ú,á-ú,ñ-Ñ but it did not work.why does this problem occur? Error 1: Blower dañadoError 6: Alimentación insuficiente (it was cut off by the scrollablecontainer, it doesn't matter)Error 12: Unidad no respondía
Hi All,I am looking for any simple working example on how to, let's say, draw a circle or rectangle on the screen using the new GPU2D aka NeoChrom aka 2.5D aka NEMA GFX.Does such example for STM32U5G9 already exist? I know that it has to use compiled NEMA_GFX proprietary lib but that is OK.
Hi there. I have an image that I want to draw in a certain location and in as many as I need. I found the function HAL::lcd().drawPartialBitmap. I tried to call it from the view class in my function, like HAL::lcd().drawPartialBitmap(myBitmapId, point.x, point.y, bitmapRect). But it seems that it only works from the MyViewClass::draw() function. Just a picture widget won't work for me because I need to draw the same picture many times in different places. Places and quantities are dynamic. How can I do this?
Continuing saga of attempting to run a TouchGFX demo on a NUCLEO-G071RB with X-NUCLEO-GFX01M2($AZ2).I connected the NUCLEO board, selected it in TouchGFXDesigner, then selected the relevant demo.Having installed the latest TouchGFXDesigner (4.24.2), STM32CubeMX, STM32CubeIDE, STM32CubeProgrammer, and VC_redist.x64 in Windows 11, the available examples now build without errors, except for Demo3 (bubbles), which the linker rejected as the board having insufficient RAM. All the other demos that I tried to run on the board got as far as connecting and erasing the external memory, where it hung up for at least 10 minutes with the ST-LINK LED flashing red/green. Clicking the cancel button had no effect apart from greying the button. Only disconnecting the ST-LINK cancelled the loading process.The size of external memory being erased varied between the projects, e.g. 0..14 up to 0..24 sectors.
Hi. I've been working on a project with STM32 and touchGFX. I'm struggling with a simple issue that could be easily solved if I had more experience with the framework and with C++. I'm working with a 7 inch touchscreen display. In one screen, i inserted a scrollList. I'm getting to change it's items and manipulate the list. However, the list items must be clickable. I discovered I have to create a GenericCallback and use scrollList.setItemSelectedCallback to set a function as a handler for item selected. What I'm facing is, I do not quite understand how to create the generic callback on ScreenView.hpp and ScreenView.cpp. Unfortunately, there is not an specific tutorial on touchGFX website to help with this. I've looked at every material available online, from documents to forums and tutorials. May you help me?Thanks
In an attempt to find a problem with the DMA2D causing display issues (random pixels showing), I have turned on the interrupt handler DMA2D_IRQHandler() with the following code to allow me to halt debugging inside the routine when needed:void DMA2D_IRQHandler() { if(DMA2D->ISR == 0) { // Set breakpoint here to observe // interrupts with ISR = 0 return; } // Is this just a regular transfer-complete // interrupt? if(!(DMA2D->ISR & ~DMA2D_ISR_TCIF)) { // Apparently the transfer-complete // trigger has to be turned off as // otherwise another IRQ will be // triggered with ISR = 0 once the // corresponding trigger gets // turned off in the IFCR. DMA2D->CR &= ~DMA2D_CR_TCIE; // Clear interrupt register for transfer- // complete interrupt DMA2D->IFCR |= DMA2D_IFCR_CTCIF; return; } // Set breakpoint here to observe // unexpected DMA2D interrupts // other than "transfer complete". return; }I am using a custom board with an STM32H745. Spuriou
Using TOUCHGFX Rev 4.24.2And following https://support.touchgfx.com/academy/tutorials/tutorial-02TextArea widget fail to show valid value. void MainView::buttonUpClicked(){ touchgfx_printf("buttonUpClicked\n"); counter++; Unicode::snprintf(textCounterBuffer, TEXTCOUNTER_SIZE, "%d", counter); // Invalidate text area, which will result in it being redrawn in next tick. textCounter.invalidate();} What am I missing?
Hello there,i'm using touchgfx to show time data using touchgfx::Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE, "%d", sec); but when I use invalidate() function to refresh the text area, the text disappear from my screen;instead, the code getRootContainer().invalidate(); works well and make things correct.by the way, the code using textArea1.invalidate(); can shown on TouchGFX simulator, it just doesn't work on my F411CEU6here is my code: uint16_t count = 0; uint16_t sec = 0; void Clock_screenView::handleTickEvent() { touchgfx::Rect Rect1; if(count > 33) { touchgfx::Unicode::snprintf(textArea1Buffer, TEXTAREA1_SIZE, "%d", sec); textArea1.invalidate(); //getRootContainer().invalidate(); count=0; sec++; } else { count++; } } Is there anyone, who can explain this phenomena?Best regardsRust
Posted on September 18, 2017 at 14:09We are currently using an STM32F437 with a 12 bit parallel interface to a CMOS image sensor, and we are happy with performance etc. However many newer image sensors require MIPI CSI-2, and even the current sensor offers higher frame rates/resolutions with CSI-2. While it is possible to use converters from CSI to parallel, these still run into the bandwidth limitations of the parallel interface (although I notice this is a little better on STM32H7 at 80MHz rather than 54MHz on STM32F4), and it's a shame to have to use another IC.Are there any plans to provide a MIPI CSI-2 interface on any STM32 devices? We would really like to have an upgrade path to new sensors without having to move to a competing device, e.g. a larger SoC. We would be interested in at least 1 lane, with support for at least RAW10 and RAW12 formats.#stm32 #csi #dcmi
Title: How to enable C++17 (std::variant) in TouchGFX Simulator?Hello everyone,I'm working on a TouchGFX project in STM32CubeIDE and trying to use C++17 features in the simulator, specifically `std::variant`. However, when I compile the simulator code, I get the following error:In file included from gui/include/gui/model/Model.hpp:5:0, from generated/gui_generated/include/gui_generated/common/FrontendApplicationBase.hpp:8, from gui/include/gui/common/FrontendApplication.hpp:4, from generated/gui_generated/include/gui_generated/containers/ItemContainerLevel3Base.hpp:7, from gui/include/gui/containers/ItemContainerLevel3.hpp:4, from gui/src/containers/ItemContainerLevel3.cpp:1: gui/include/gui/common/CommonDefinitions.hpp:257:26: error: 'variant' in namespace 'std' does not name a template type using DataVariant = std::variant<int, float, double, std::string, ConfigData>; ^~~~~~~It seems that the TouchGFX simulator environment is not compiling with `-std=c++17`. I've tried editing
Hi all. I have used the ListLayout Example as the basis of latest iteration of my TouchGFX project. Having already built a mockup gui from this example which worked as expected, I'm a little perplexed to find I'm having issues with this one.Everything seemed to be going well until I started to add list element arrays into mainView.cpp: mainView::mainView(): mainViewBase(), awgElementClickedCallback(this, &mainView::awg_elementUpdateItem), coilElementClickedCallback(this, &mainView::coil_elementUpdateItem), layersElementClickedCallback(this, &mainView::layers_elementUpdateItem), spinElementClickedCallback(this, &mainView::spin_elementUpdateItem), stepElementClickedCallback(this, &mainView::step_elementUpdateItem), tplElementClickedCallback(this, &mainView::tpl_elementUpdateItem), wireElementClickedCallback(this, &mainView::wire_elementUpdateItem) { // ... } void mainView::setupScreen() { mainViewBase::setupScreen(); // awg
Hello,I have posted some questions for this configuration - NUCLSEO-G071RB + X-NUCLEO-GFX01M02($AZ2). Now some sample projects are partially working.Created a new project with two page screen switching by ToughGFX Designer 4.21.1 with STM32G071RB NUCLEO AZ2 configuration. (1). It can compiled and downloaded into the board and show 1st page graphic, but the touch panel does not work, cannot switch the screen by press the button on the screen. (2). if any changes in STM32CubeMX - STM32G071RB_NUCLEO_AZ2.ioc and re-generated the code, it will cause compiling issue with this new code. 2.Tested X-CUBE-DISPLAY - en.X-CUBE-DISPLAY.3.0.0.zip. Selected GFX01M2_HelloWorld from X-NUCLEO-GFX01M2 and NUCLEO-G071RB. Compiled fine, but the project code hang at BSP_LCD_Init(). It could be caused by LCD type as I am using AZ2. but after re-configuration in STM32CubeMX. the project has compiling issues.Questions,Do you have any sample project work fine with NUCLEO-G071RB + X-NUCLEO-GFX01M2 ($AZ2)?For
In my program code, I select an STM32F429I-DISC1 example code through the TouchGFX IDE, which runs successfully in STM32F429I-DISC1 dev board. The displays work fine without any issues. However, I need to configure the USB CDC. Since the USB_OTG_FS pins are connected to the display, I enabled USB_OTG_HS with the following settings: 1.PB14 set to USB_OTG_HS_DM 2.PB15 set to USB_OTG_HS_DP 3.Internal FS PHY set to "device only." 4.USB device class set to "communication device class" for HS IP.The output is received, but the display screens appear half-filled and continuously blink. The USB pins are not configured for any other operation, so why is there a conflict between the USB and the display?
Hi,I'm working with STM32L496AG Discovery's built-in joystick and trying to understand how the Designer receives input from it (I configured a Hardware Button Trigger).By looking at the code, it seems like the following method is a dead end://Handles when a key is pressed void Screen1ViewBase::handleKeyEvent(uint8_t key)The Cube IDE says it is not referenced anywhere.Should I assume that it is interrupt based, and that the hardware calls this method directly?If so, how can I "tell the hardware/interrupt" to call another method?If not, then how\where is it called and why can't I find it using the IDE?Thanks in advance!
I have a hardware trigger that needs to change a scene (think a Home button but I cannot use a hardware key event).I am trying to change the scene for days but I cannot find a working solution.The best looking solution was this: https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/how-to-implement-quot-switchscreen-quot-in-touchgfx/m-p/384809Using this method crashes the code. Well technically the code is stuck in this loop in syscalls.c: void _exit (int status) { _kill(status, -1); while (1) {} /* Make sure we hang here */ } My code in the model is like this: void Model::tick() { uint16_t buttonState = getButtonState(16); if (buttonState != previousButtonState) { if (modelListener != 0) { modelListener->onButtonStateChange(buttonState); } if (static_cast<ButtonEnum>(buttonState) == ButtonEnum::MENU) { static_cast<FrontendApplication*>(Application::getInstance())->gotoSplashScreenScreenNoTransition(); } previousButtonState =
Hello,I am currently working with the TouchGFX Designer tool and have successfully created a simulator project. I would now like to migrate this project to the STM32H7S78-DK board but am unsure of the necessary steps or adjustments required.Could you please guide me through the migration process?Board: STM32H7S78-DKTouchGFX Version: 4.21.1IDE: STM32CubeIDEThank you!Mehul
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.