Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Any information about using Visual Studio for STMH7 and is it possible to integrate TouchGFX?Maybe a sample project and ho to install tool on VS.Best Regards
Hi all,I just installed the new release 4.16 of TouchGFX and have a problem when using the Dynamic Graph widget:I am using "Wrap and Overwrite" Behaviour and The Vertical Frontline activated. Line Width: 1When adding points to the graph the Frontline is not updated correctly. Previous line positions are not cleared and stay visible in the graph until it wraps. Furthermore: When calling "Graphik.clear(); Graphik.invalidate()" the Vertical Frontline is not cleared and flickers or stays permanently at the previous position until it is overwritten by new data points.Any idea how to overcome this issue?BR GS
185/5000Win10 system using the CLion IDE, in the compilation environment of WinGW, using Cmake and arm-none-eabi-gcc toolchain compilation connection static library stemwin532_cm4_os_gcc. a, CMake Error at CMakeLists.txt:68 (target_link_libraries):"Cannot specify link libraries for target "demo" which is not built by this project."mingw32-make.exe: *** [cmake_check_build_system] Error 1
Like a few others on the STM32H7 line I as seeing some weird behavior with ACTVODSRDY.This happens with both the demo projects and my own code.Sometimes when I power up this board ACTVODSRDY = 1and PWR control register 3 (PWR_CR3) is in the expected startup state for the STM32H735 - See reference manual RM0468 Rev 2 page 236 Table 30.Other times I power up the board and ACTVODSRDY = 0and no specific pattern will get it out of this mode. I can use SW1 to try to power up in system mode and still ACTVODSRDY stays 0There seems to be no pattern to get ACTVODSRDY back to a 1, but eventual I can get it back there and it stays that way for a while. I try everything from power cycling the board and re-flashing. I even removed the LCD screen temporarily with no luck. Getting it back just seems "random"According to the Discover Kit Info this, board power directly supplied from the SMPS step-down converterThere are a few things in the reference manual that concern me as to what this really means.l
Hello I am looking into the STM32F7 series of microcontrollers and I am trying to find out as much information as possible before actually buying onePlease excuse my beginner level questions and I hope the community can help me make a proper decision regarding an MCU choice1) I am looking at the STM32F7308-DISCO board (https://www.st.com/en/evaluation-tools/stm32f7308-dk.html) and if I understand correctly, the computer software needed to program all STM32F7 series boards is same. Is this correct? If I install STM32CubeMX, MDK-ARM software and unzip STM32CubeF7 package (en.stm32cubef7_v1-16-0.zip\STM32Cube_FW_F7_V1.16.0, an almost 1.1 GB zip file), is this enough for me to start compiling and downloading programs for the development board? Where does STM32CubeIDE come into the picture here? Is it a replacement for MDK-ARM, or is it an essential component?2) Is having STM32CubeMX enough for developing programs that use the touch screen, or do I need STM32CubeIDE for that?3) Are all the
Hello I tried to open an 4.16.0 application in the new TouchGfx version 4.17.0. I'm getting the error "This project is corrupt or cannot be found".What can I do to migrate the project to version 4.17.0?Thanks/Marco
Hello, I am practicing with the getting started documentation and on this page: https://support.touchgfx.com/docs/development/ui-development/software-architecture/code-structureit says to Navigate to the user code header file MyScreenView.hpp and override the functionBut the file shown is in a different path than the one written right below. Written: MyApplication/generated/gui_generated/src/my_screen/MyScreenView.hppCorrect: MyApplication/gui/include/gui/my_screen/MyScreenView.hppAm I not understanding something or this has to be changed? Kind regards Zobeer
Greetings.I have a microcontroller and QSPI flash. Everything works fine with TouchGFX. The pictures are stored in ExtFlashSection on the flash.I need to store 3 large arrays for DAC. Tried adding to "STM32F746BGTX_FLASH.ld" exceptExtFlashSection : { *(ExtFlashSection ExtFlashSection.*) *(.gnu.linkonce.r.*) . = ALIGN(0x4); } >QUADSPIsection like thisMusicFlashSection : { *(MusicFlashSection MusicFlashSection.*) *(.gnu.linkonce.r.*) . = ALIGN(0x4); } >QUADSPIalso added in "Middlewares\ST\touchgfx\framework\include\touchgfx\hal\Config.hpp"#define LOCATION_MUSICFLASH_PRAGMA LOCATION_PRAGMA("MusicFlashSection")#define LOCATION_MUSICFLASH_ATTRIBUTE LOCATION_ATTRIBUTE("MusicFlashSection")Build Analyzer did not show a new section.Then I found an example C:\Users\User\STM32Cube\Repository\STM32Cube_FW_F7_V1.8.0\Projects\STM32746G-Discovery\Applications\QSPI\QSPI_perfsand copied in my "STM32F746BGTX_FLASH.ld" .textqspi : { . = ALIGN(4); _qspi_start = .; /* creat
Suppose I create a container called 'containers' which has further other containers called container1, container2 and container3.Now how can I iterate the inside containers from the outer container? Is it even possible in TouchGFX?My intention is to control whether to set particular container visible or invisible.
I am using TouchGFX 4.17.0 and usually I open both the TouchGFX Designer and the MSVC .sln simulator project. In the beginning the IntelliSense worked. But after a while after doing some editing work on the TouchGFX Designer, the Inteli Sense not working anymore. So far I resolve this by crearting new project again from the Designer and 'Import GUI' and IntelliSense work again. But this is quite annoying.As a clue, I never encounter this on version 4.16
Hi everyone,I have a textarea wilcard which display a decimal valueI'd like to convert this value into a decimal var.double tmpVal = atof((const char*)wildcardText.getWildcard()) isn't getting the decimal numberthanks !
Hello,how can I simply achieve touchGFX objects (sliders, on/off button etc.) to remain their state when I added a functionlity to switch the screen layer. More precisely I want to keep my adjusted values (slider etc.) in their state after switching to anther screen and back.How can I program that without getting too deep into objective programming with getters/setters?Thank you in advance and kind regards
I have 2 screens. The first screen has a button and a text area. The second has a scroll wheel and a button.What I want: 1) Click on button on screen 1, and go to screen 2 (got this working) 2) Scroll to a number on the scroll wheel on screen 2, hit the button on screen 2, goes back to screen 1 (This also works)3) The text area on screen 1 should match the scroll wheel number on screen 2 (can't figure this out)4) When I return to screen 2, scroll wheel should remain on previous selection (does not work)Simple in concept, but can't figure out how to do this. Any examples out there on how to do this. ? I'm using wildcards for my text areas. the big issue is passing data to screen 1 and also saving data from screen 2.Any help would be appreciated
My page flipping via the LTDC works seamlessly if my drawing routine is faster than the frame rate, but as soon it is slower, I see flickering on my LCD. It's not the type of flickering you'd see if a page is overwritten out of sync with the display. I've been wrecking my brain over this during the last two days and can't see what's wrong.I am using the STM32H745 Disco board.Here's the code snippet:while(1) { // my drawing routine here, storing data in // graphicsMemory[currentPage][LAYER1] and // graphicsMemory[currentPage][LAYER2] . . . // A reload event will signal that the LCD // is pointing at the new page. If that // hasn't occured yet, we are stalled. while(pageFlag); // Set frame buffer pointers to new addresses LTDC_Layer1->CFBAR = (uint32_t) graphicsMemory[currentPage][LAYER1]; LTDC_Layer2->CFBAR = (uint32_t) graphicsMemory[currentPage][LAYER2]; // Set flag that indicates that page is ready to be pointed at. pageFlag =
I am using TGX v4.16.1 with a STM469 Discovery board.I have several text area with one wildcard widgets. The widgets are updated using native C++ strings. (BoxWithText is a custom container I created.)void BoxWithText::SetText(std::string text) { Unicode::strncpy(m_txtBuf, text.c_str(), static_cast<uint16_t>(text.length())); m_text.resizeToCurrentText(); if (m_txtCenterVert) { CenterTextVertical(); } if (m_txtCenterHor) { CenterTextHorizontal(); } m_text.invalidate(); }This works fine on the simulator. All of the widgets display the text correctly. However when I run on the target hardware, most of the text areas are blank. Some show a partial string or a string such as 0:00:00 (these are text areas for displaying time). The time should be non-zero.To eliminate any issues with using a custom container, I tried using a native text area with one wildcard widget and I have the same issue: the text updates correctly in the simulator but not on the hard
So assume we setup up a swipe container contain:normal container contain e.g. a boxdynamic graphWhen we run, the normal container would be shown first. Upon swipe it would go to dynamic graph. But when we swipe the dynamic graph, it would not go to the normal container. Why so?If I set the dynamic graph as invisible, then the issue not seen i.e. we can swipe away from the dynamic graph, but this would be meaningless.
Hi, I have a project that has multiple screens. On the first screen, there is a zoom animation. Every 10 tick, it's getting larger. How ever, it looks like that it stucks towards the end of animation. So, I decided to use caching.void TouchGFXHAL::initialize() { TouchGFXGeneratedHAL::initialize(); uint16_t* const cacheStartAddr = (uint16_t*)0x30025800; const uint32_t cacheSize = 0x20000; touchgfx::Bitmap::removeCache(); touchgfx::Bitmap::setCache(cacheStartAddr, cacheSize); }void IgnitionOnDemoScreenView::setupScreen() { IgnitionOnDemoScreenViewBase::setupScreen(); Bitmap::cache(BITMAP_LOGO_ORIG_60X60_ID); LogoImage.setBitmap(BITMAP_LOGO_ORIG_60X60_ID); LogoImage.setXY(90,130); LogoImage.setScalingAlgorithm(touchgfx::ScalableImage::BILINEAR_INTERPOLATION); add(LogoImage); } void IgnitionOnDemoScreenView::tearDownScreen() { IgnitionOnDemoScreenViewBase::tearDownScreen(); Bitmap::clearCache(); } bool IgnitionOnDemoScreenView::IgnitionOnDemoScr_Animate() { static
I'm trying to implement the scroll wheel, I've followed this example: https://support.touchgfx.com/docs/development/ui-development/ui-components/containers/scroll-wheelThe scrollwheel is configured with the Selected Template Style.There is my override methods:void CurrentCalView::RangeListUpdateItem(NavigateItem& item, int16_t itemIndex) { Unicode::UnicodeChar t[10]; Unicode::snprintfFloat(t, 10, "%.1f A", ranges[itemIndex]); item.setText(t); } void CurrentCalView::RangeListUpdateCenterItem(NavigateItemSelected& item, int16_t itemIndex) { Unicode::UnicodeChar t[10]; Unicode::snprintfFloat(t, 10, "%.1f A", ranges[itemIndex]); item.setText(t); }While the non-selected item displays properly, the selecteditem does not. It seems to display random items.The menu is moved using RangeList.animateToItemDigging a bit in the code, I found out that the GFX generates the code as follow (10 items is configured in the GFX):touchgfx::ScrollWheelWithSelectionStyle RangeList; touch
I am setting the state of a toggle button with forceState(state). I also have an action set up which gets triggered when the button is clicked. Currently I am facing the issue that when I force the state of the button, then I am also getting the action as if the button was clicked. This is completely unnecessary, since I already know which state the button is in. So I have to write some extra code which checks if the action was caused by calling forceState(state) or not. Is there a way to change the behavior, so forceState(state) does not trigger the action or is there a different function for setting the state?
Thank you for helping.NVIC_SystemReset () with a non-startup screen view displayed.After resetting, the NVIC_SystemReset () view is displayed a little at first.How can I get the startup screen to look good?
Hai.I have to use STM32F746IGT Custom board and 7inch display 800x480, SDRAM 16MB External flash 128MB Micron.I am using Starting Address of SDRAM 0xD0000000, Just create one screen and two Toggle switchs. Run the code display show some colors or half display only If i change Starting address from 0xD00 to 0xC00 it's show white screen,Change to 0xD00 display show and working fine (Some time in first attempt).Once switch OFF and ON the controller again have a same problem.Starting Address it works irregularly. Where i am doing mistakes.Thanks & RegardsM.Govind
STM32H750 with external flash and SDRAMTouchGFX version: 4.13.0CubeIDE version: 1.3.0display size: 480x272(landscape), but I config the display orientation in portrait in TouchGFXcolor depth: 24bitsDouble framebuffer, Chrom-Arthttps://drive.google.com/file/d/1KbVwsV9UsbBB2MxYsR6UH7YXY0IubCRC/view?usp=sharing Please see the video. You can see some pixels around the TextArea "5" are blinking with another icon. These pixels happen randomly and can be everywhere around the numbers. I've tried AP4861 4.5.2 second method, and 4.5.3, but with no luck. Could anyone give me some advice?Thanks,Jimmy
Using a MIPI chip to replace the DSI functionality, I have removed DSI initialization, and configured LTDC for RGB 24 pin output, I have issues with LTDC initialization as it calls DSI? Also, in TouchGFX/target/STM32TouchController.cpp BSP_TS_Init makes calls to the driver ft6x06_ts_drv for the I2C sensor which I don't want? Is there some notes or a guide that would help me achieve this transition to a LTDC MIPI display?
Hi,How to reverse the LCD display up down by configuring LTDC or DMA2D regester? Is it feasible?/JJ.Lin
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.