Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
Hi I am trying to configure the LTDC to control the built-in LCD display on STM32F29i- disc1. I have read through tutorials on how to achieve this, and following the project example in STM32CubeF4 firmware STM32CubeF4\Projects\STM32F429I-Discovery\Examples\LTDC\LTDC_Display_2Layers , I was able to use cube MX to setup the LTDC and display the STLogo. However, I am still not sure how are the LTDC parameters HSW HSP HFP VSH VBP VFP values calculated. From the datasheet https://datasheetspdf.com/pdf-file/947545/SaefTechnology/SF-TC240T-9370A-T/1 There are no information that talk about the the parameters I need to set up LTDC properly. Could anyone guide me how to extract those numbers from the datasheet?Next, i would like to know because i'm using LTDC , do i still need ili9341 display driver from STM32CubeF4\Drivers\BSP\Components\ili9341? From what I can tell, there is a ili9341_Init(void) function that will do the IO setup as well, which would mean my setup for SPI5 in CubeMx is redun
I asked a question about "TouchGFX Code generating error" last time,but I haven't solved it yet,Soi I posted it again.https://community.st.com/s/question/0D53W00000KofEVSAZ/touchgfx-code-generating-error
TouchFGX Ver : 4.15.0Target Board : STM32f7508 DiscoveryAt startup and when I pressed "Run Target" or "Generate Code" the program shows://--------------------------------------------------------------------------------------------
Hello,I'm using an STM32F7508-DK, with a project generated by TouchGFX Designer 4.15. I have a Graph and a Text Area on screen with a wildcard that gets updated from Model::Tick() every frame, so this is my code:Model.cpp:void Model::tick() { modelListener->flowUpdate(20); }Added this virtual function to ModelListener.hppvirtual void flowUpdate(int16_t flow) {}And to FlowPresenter.hpp, FlowView.hppvirtual void flowUpdate(int16_t flow);FlowPresenter.cppvoid FlowPresenter::flowUpdate(int16_t flow) { view.flowUpdate(flow); }FlowView.cppvoid FlowView::flowUpdate(int16_t flow) { memset(&FlowValueBuffer, 0, FLOWVALUE_SIZE); Unicode::snprintf(FlowValueBuffer, FLOWVALUE_SIZE, "%d", flow); FlowGraph.addDataPoint( (float)flow ); FlowValue.invalidate(); }Everything else is the stock generated code.Now the interesting bit is not the flicker itself, but that it immediately stops when I touch the screen anywhere, and does not come back until I lift my finger. It is also interesting tha
I follow the youtube tutorial and perform this. https://www.youtube.com/watch?v=bCppZf8FKYg&feature=shareB encounter the xSemaphoreTake undefined.Any ST Community or pro able help. ./touchgfx/gui/src/model/model.cpp(18): error: #20: identifier "xSemaphoreTake" is undefined
How to switch the screens in touchgfx using hardware button .I have tried it by creating queue but its not working. Can anyone share the reference code for the same.Thank You
Good afternoon to everyone!I have some problem with flushing or rendering.My settings:partitial framebuffer, 4 bloks, 16bpp, 32000 block size;internal RAM for framebuffer;use DMA2D and DMA2 for FMC (STM32F469);Problem - after start UI if we press "Reset" UI button, release image button is corrupted. I am check bitmap and bitmap in framebuffer - they very difference. Result in pic.After two click this corruption disappears. But similar problem in swap container(upper text label "LFP1") never disappears.Thank you in advance!
Hi,How can we change screen when Hardware button is pressed on the board.TouchGFX UI:Code generated:After this, How are the UI and code are linked. what are the modifications needs to be done. Please share any tutorials are available.
Hello,Still me with my STM32H7 and my touchGFX project !I'm trying to do an animation with 3 circle whose radius are increasing. The problem is that when the 3rd circles animation (ie its radius is increasing) starts, the frame rate drops.Here is the sample of the code doing this animation :void screenView::handleTickEvent() { static float radius = 0; static float radius2 = 0; static float radius3 = 0; if(radius3 < 80) { circle_anim1.getRadius(radius); circle_anim1.setRadius(radius + 1); circle_anim1.invalidate(); if(radius > 80) { circle_anim2.getRadius(radius2); circle_anim2.setRadius(radius2 + 1); circle_anim2.invalidate(); } if(radius2 > 80) { circle_anim3.getRadius(radius3); circle_anim3.setRadius(radius3 + 1); circle_anim3.invalidate(); } }else{ circle_anim1.setVisible(false); circle_anim2.setVisible(false); circle_anim3.setVisible(false); } }and what we should see :(a bit later)I think the frame rate drop
My board(custom board) hang-up while init(setLanguage function) after burning image to flash. In debug mode(debug->run target), board is working ok. Here's the hang-up point://Texts.cppcurrentLanguageIndices = staticLanguageIndices[id];sprintf(dbgbuf, "setLanguage[6] \r\n");HAL_UART_Transmit(&huart7, (uint8_t *)dbgbuf, strlen(dbgbuf), 10); //--> pass without problemcurrentLanguageTypedText = typedTextDatabaseArray[id]; // --> board hang-up here in burning mode (in debug, have no problem)sprintf(dbgbuf, "setLanguage[7] \r\n");HAL_UART_Transmit(&huart7, (uint8_t *)dbgbuf, strlen(dbgbuf), 10);1) both typedTextDatabaseArray & texts_all_language is located in external flash2) here's the map file for 2 variable TextFlashSection 0x0000000060b91680 0x119c TouchGFX/generated/texts/src/Text
I am trying to make a menu screen system which I thought first would be trivial, but until I figure it out it isn't... There are radio buttons for selecting the wanted measurement and a start button. The idea is to send the chosen test ID to the Model.cpp, which will then send it to the FreeRtos task, which handles the message. So, if radio button 1 is selected and start button pressed the message is 0x01, and if it's #2, then the message is 0x02 and so on. The problem is how to combine this with the correct screen switching? The program should run the chosen test and then switch to the corresponding screen showing the results. TouchGFX generates screen transitioning functions in the base class so should I modify that (even it has DO NOT MODIFY text with write-protection)? Any help how should I implement this would be appreciated.
HiWhy doesn't releasing the offon button exits the loop until Job () is finished?greetingsAndrzej
Hello everyone,Due to an increasing number of people having issues with CubeIDE and TouchGFX Integration i'm attaching a working project for STM32F746G-DISCO for your inspection - There were a good number of things to do before it worked, only some of which i highlighted in my quick-guide and even some of those steps were a bit ambiguous and could be executed in different ways.I've written down what i've done to get this project working and i will use this in planning a video tutorial - It has to be somewhat official, so i can't simply start up the screencast and start talking. But i'll keep you updated./Martin
..
Hello.I'm trying to create custom container with any number of elements.I created custom container which contains Scrollable Container and List Layout.I want to dynamically add elements to List Layout. Elements are simple containers which contains text area with 1 wildcard.I dont know how many elements can be added in my custom container.But if i use std::vector in my custom container to add elements with push_back, i always get hardfault in tick() of backPorchExited() (HAL.hpp).But if i allocate, for example, 20 elemnts of vector in constructor of custom container, and then add them in List Layout, everything is going well.What is the problem and what is the right way to do what i want?Thank you.HardFault code example:class ItemsListContainer : public ItemsListContainerBase{public: ItemsListContainer(); virtual ~ItemsListContainer() {} virtual void initialize(){ ItemsListContainerBase::initialize();} virtual void add_item(const char* a_item_text){ a_items.push
Hey,I'm working on a custom board project .On board i have:TFT-LCD display with 800x480 resolutionExternal 16-bit SDRAM for storing two frame buffersEthernet driver LAN8742MCU - STM32F767IITI managed to run a simple http server with source from ST. Server works pretty well until I turn on LTDC. I tested the connection (IPERF client) with LTDC on and LTDC off. When LTDC is on I get bandwidth around 200kbit/sec. Also what I noticed is that link activity led is constantly blinking with 11.9Hz. When LTDC is off I get bandwidth around 50 Mbit/sec and the led is blinking properly as it should. My first thoughts were that MCU is overloaded. So I measured MCU load and got on average 15% of MCU load. I'm using touchgfx framework which is pretty well optimized for MCU so it uses a very small portion of processor time . Then I tried to lower the frequency for display from 26 MHZ (60HZ refresh rate) to 7MHZ (17HZ refresh rate) and I got bandwidth around 50Mbit/sec and a good working http ser
Hi folks, I am trying to create a simple GUI with the BSP library on a STM32H747-Discovery board. Everything works fine till I increase the lcd refresh rate to around 30 Hz, then I see some flickering. Does anyone have any idea on this issue?Also, I wanna know if there is a way to use "double buffering" in BSP library.Thanks,
Hi,When I want to run a touchgfx example (of demo) in designer, compiler give me error like follows.Run Simulator Generate Done Generate Assets make -f simulator/gcc/Makefile assets -j8 cannot load such file -- lib/emitters/typed_text_database_hpp an error occurred in converting texts: cannot load such file -- lib/emitters/typed_text_database_hpp Cleaning generated files from generated/texts and generated/fonts. make[1]: *** [texts] Error 1 generated/simulator/gcc/Makefile:229: recipe for target 'texts' failed simulator/gcc/Makefile:32: recipe for target 'assets' failed make: *** [assets] Error 2 Failed FailedWhat can I do about that?
Hi everyone,I am a student and I am working on a project involving an STM32f429ZI and a 7inch touch display.It's the first time I work with displays, I am trying to create a GUI using touchgfx.I have been working on it for a week now and so far I managed to :Implement the display and touch panel drivers (8080 MCU interface using FMC + I2C)generate the touchgfx files with cubeMx :I'm using partial framebuffersNo OSDMA2D hardware accelerationComplete the functions needed (flushFrameBuffer, signalVsync, sampletouch, ... etc)Create a basic GUI with a little animation and a button + interface with hardware buttonsThe GUI is correctly displayed and work well on the screen, and the button animation is shown when I click on it, the only problem is that the button callback function isn't called every time I press on it. (I mean, I have to press the button on the screen very fast several times until the callback function is finally called. When I use the debugger it works fine though)Thank you
Hi! I have a program with TOUCHGFX running on F429-DISC1. It works fine and display correctly both on the disc1 original touch screen and an external screen with RGB666 interface i connected to the header.As it look alright on the DISC1 board, i move forward to fabricate my own PCB. But then the same software that display normally on disc1 could never display correctly on my own PCB. At first i though it was the SDRAM problem because i wasn't using the same model, so i change it to the exact model as the DISC1 and it still the same problem.I tried to recreate the problem on the DISC1 and found that if i comment out the BSD Init Sequence of SDRAM, the same INCORRECT content will be displayed.The PCB i made had 6mil width track and the length of 500 - 2000mil for all SDRAM connection. Now, i am not sure what my next step should be. Length Matching?I followed this official sch .https://www.st.com/resource/en/schematic_pack/mb1075-f429i-e01_schematic.pdfThank you very much!!!
I am using STM32F303VBT6 in my application where I need to use the graphical library for advanced HMI development. The system would have more than 15 screens (consists of Text, symbols, images etc.), LCD is not a touch display it is simple 262K color TFT display, resolution is 320X240, system would have multiple language support as well.So what will the Internal Flash / External Flash / Internal RAM / External RAM requirement to support this features with TouchGFX library??
HW setup is a self built board using the STM32H743V MCU and a Sharp LQ104V1DG61 TFT display. Display is setup to L8 and using CLUT table, Running on 25MHz (measured) it has a 640x480 format, RGB666 (yes I know that is not part of the supported format list in the STM datasheet, but I will come back to that one). Datasheet may be found here: https://static.davandisplay.com/document/product/LQ104V1DG61-Specs.pdfUsing STM32CubeIDE. The following is the initializing code#define TH 760 // Total Horizontal time (clocks) #define HSYNC 34 #define HBP 44 #define HW 640 #define HFP (TH-HSYNC-HBP-HW) #define TV 555 // Total Vertical time (clocks) #define VSYNC 10 #define VBP 20 #define VW 480 #define VFP (TV-VSYNC-VBP-VW) /* configure LTDC */ LTDC->SSCR = ((HSYNC-1) << 16) | (VSYNC-1); LTDC->BPCR = ((HSYNC+HBP-1) << 16) | (VSYNC+VBP-1); LTDC->AWCR = ((HSYNC+HBP+HW-1) <<
I'm using TouchGFX Designer 4.15 with a STM32F469I-EVAL evaluation board. I'd like to use the hardware buttons on the eval board as [physical] inputs to control actions on the touchscreen display.
Hello,I'm currently developping on a STM32H7 with TouchGFX library and I'm wondering how to zoom on a shape created with touchgGFX designer ?The problem is that I'm using setPosition function to increase width and height and to change X and y position but it is not changing the size of my shape but just the zone where we can visualize the shape.Here is my code : shape_HS_bottom_left.invalidate(); shape_HS_bottom_left.setPosition(shape_HS_bottom_left.getX() -SHAPE_BLUE_SPREADING_X_OFFSET_RESIDENT_SCREEN/2, shape_HS_bottom_left.getY() -SHAPE_BLUE_SPREADING_Y_OFFSET_RESIDENT_SCREEN/2, shape_HS_bottom_left.getWidth()+SHAPE_BLUE_SPREADING_X_OFFSET_RESIDENT_SCREEN,shape_HS_bottom_left.getHeight()+SHAPE_BLUE_SPREADING_Y_OFFSET_RESIDENT_SCREEN); shape_HS_bottom_left.invalidate();Any clue ? Do you know the way to zoom on a Shape ? I want the same feature as ZoomAnimationImage type can provide !Thank you in advance,Regards,Ajt
Dear ST community,I am trying to build a basic test project for the STM32F469I-DISCO board, using STM32CubeMX 6.0.1 and TouchGFX 4.14. The generated project code fails to build because of a number of absent function implementations. Details below.Steps to reproduce:Start STM32CubeMX 6.0.1 and create a new STM32F469I-DISCO project with default optionsAdd the TouchGFX Designer 4.14 software pack, and apply default options, set screen size to 800x480Generate code in STM32CubeMXOpen the TouchGFX project in TouchGFX Designer 4.14Add a dummy button with label, e.g. "Hello World" and save projectGenerate code in TouchGFX DesignerAttempt to build the project in IDEAs expected, the initial build will fail because of linker errors, caused by missing code that must be added by the developer.My initial goal is just to get the project to compile, so I added dummy implementations for now (e.g. in OSWrappers.cpp and elsewhere) which I will properly implement later.Even so, the build fails because of
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.