Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I'm trying to redirect away from a screen during activate() based on some model state information before anything is shown on screen. But I've only managed to get it working on some screens and not others even though I'm following the same pattern everywhere (call function defined in modelListener>call model defined function> call FrontEndApplication::gotoScreenNoTransition() ).I feel like I'm missing something here. Is there an intended way to do this?
Thank you for helping.environment:board: customSTM32TouchController :: sampleTouch () detects the touch andEvery time I press the button, it comes to the following if () and returns true.The x and y coordinates are also valid values.if (state.touchDetected){ x = state.touchX [0]; y = state.touchY [0]; return true;}However, it may or may not come inside the button's callback handler.This is the part of n1_pushde () below.xxxViewBase :: buttonCallbackHandler (){ if (& src == & BuzzerExitBtn) { application (). gotoMainScreenNoTransition (); } else if (& src == & n1button) { n1_pushed (); }}What's wrong?
Hi, I plan to use STM32L073 to drive my 7segment LCD. The LCD maker not able to design 3.3V LCD due to the cycle size. I am using 1/8 cycles. 1/3 bias but with 5V operating voltage. The problem is, I've read the datasheet mention that I only can drive LCD up to 3.6V max. So how do I need to drive my LCD with 5V voltage using L073? Or is there any other solution to make this thing works? Do I need to choose other MCU due to 5V issue? what do you suggest? Thanks.Norzilah
I try migrate project from RGB888 , that works ok , to L8 - ARGB2222 , but here i have issue, code hang . Changed is only LTDC to L8 and touchgfx part.When L8 starts result on display is only grayscale without colors.For simple design i ask L4 indexed palette mode say 4bit per pixel. Is this doable?
I've setup and built quite a bit of a project for a STM32F7508-DK through TouchGFX and STM32CubeIDE. However, I'm running into debugging issues exactly as the following: (https://community.st.com/s/question/0D53W00000JNuw9SAD/cannot-debug-stm32f7508dk). I want to try switch the entire project to a STM32F746G-DK without redoing everything. Is this possible? What would I need to do to effectively do this?I was able to run my program on the STM32F746G-DK, but haven't been able to get debugging working. I've tried adding a quadspi memory allocation to the Flash.Id but that really didn't do anything.
Hi,I have a new project based on STM32H750VB, everything works, But when I make some transition between screens, it would just swap screens almost instantly! but the same code works nicely in simulation, what's wrong with the transitions?
..
Hello, I am generating a project from touchgfx with X-NUCLEO-GFX01M1. I manage to flash the board and make a basic example.However, when i move to CubeIDE, i am facing issues. First of all, i have added the external loader MX25L64.. to the debug. After i open the CUBEMX ioc file and save just a basic change, i get errors regarding RCC (even if i have not changed something there).What could be the culprit?
I keep running into problems that makes the screen black when trying to make a simple example project.Using board STM32H7B3I-DK (sometimes called STM32H7B3I-DISCO - lack of consistency).
I have a circle of varying width. I created a subclass that was inherited by Screen1ViewBase class. I want to access protected members of ScreenViewBase.Screen1ViewBase;#ifndef SCREEN1VIEWBASE_HPP #define SCREEN1VIEWBASE_HPP #include <gui/common/FrontendApplication.hpp> #include <mvp/View.hpp> #include <gui/screen1_screen/Screen1Presenter.hpp> #include <touchgfx/widgets/Box.hpp> #include <touchgfx/widgets/canvas/Circle.hpp> #include <touchgfx/widgets/canvas/PainterRGB565.hpp> class Screen1ViewBase : public touchgfx::View<Screen1Presenter> { public: Screen1ViewBase(); virtual ~Screen1ViewBase() {} virtual void setupScreen(); protected: FrontendApplication& application() { return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance()); } /* * Member Declarations */ touchgfx::Box __background; touchgfx::Box box1; touchgfx::Circle circlewidth; touchgfx::PainterRGB565 circlewidthPai
I set up TouchGFX:https://www.youtube.com/watch?v=9QDWti5RzBUI have: STM32CubeIDE 1.6.0, TouchGFX 4.16.1warning:Description Resource Path Location TypeInvalid project path: Include path not found (C:\Users\ad\STM32CubeIDE\workspace_1.6.0\testad_1\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS). testad_1 pathentry Path Entry ProblemWorks fine, but I can't move from CubeIDE to GFX. why?Andrzej
I use CubeMX to construct a project for RGB LCD in a STM32F767 custom board.MPU is enable, and is set as followSDRAM is used and FMC is set as :DMA2D is actived and set as :the LTDC is set as : The following code is used to fill the LCD with color :void LTDC_Fill(u16 sx,u16 sy,u16 ex,u16 ey,u32 color) { printf("Enter LTDC_Fill color=%d \r\n",color); u32 psx,psy,pex,pey; //¥HLCD±ªO¬°°ò·Çªº§¤¼�?¨t,¤£ÀH¾î½�?«ÌÅܤƦÓÅÜ¤Æ u32 timeout=0; u16 offline; u32 addr; //§¤¼�?¨tÂà´« if(lcdltdc.dir) //¾î«Ì { psx=sx;psy=sy; pex=ex;pey=ey; }else //½�?«Ì { psx=sy;psy=lcdltdc.pheight-ex-1; pex=ey;pey=lcdltdc.pheight-sx-1; } offline=lcdltdc.pwidth-(pex-psx+1); printf("pex=%d pey=%d offline=%d ",pex,pey,offline); addr=LCD_FRAME_BUF_ADDR+2*(LCD_W*psy+psx);//((u32)ltdc_framebuf[lcdltdc.activelayer]+lcdltdc.pixsize*(lcdltdc.pwidth*psy+psx)); printf("addr = 0x%x \r\n",addr); printf("enable RCC->AHB1EN "); RCC->AHB1ENR|=1<<23; //enable DMA2D clock printf("RCC
I have a hexagon shape. I want to move (40,0) to (80,0), (0,0) to (40,0), (40,80) to (0,80), (80,80) to (40,80) and I want to move them back. What should be the condition? I gave a try but I couldn't see any move.Here is my shape;shape1.setPosition(111, 89, 80, 80); shape1.setOrigin(0.000f, 0.000f); shape1.setScale(1.000f, 1.000f); shape1.setAngle(0.000f); shape1Painter.setColor(touchgfx::Color::getColorFrom24BitRGB(122, 51, 51)); shape1.setPainter(shape1Painter); const touchgfx::AbstractShape::ShapePoint<float> shape1Points[6] = { { 80.000f, 40.000f }, { 80.000f, 80.000f }, { 40.000f, 80.000f }, { 0.000f, 40.000f }, { 0.000f, 0.000f }, { 40.000f, 0.000f } }; shape1.setShape(shape1Points);and the animation in handleTickEvent ;CWRUtil::Q5 currentX, currentY; shape1.invalidate(); shape1.getCornerX(5) = currentX; shape1.getCornerY(5) = currentY; if (currentX < shape1.getCornerX(1)) { shapeXChangeFactor = CWRUtil::Q5(80); } else if (currentX == shap
Dear TouchGFXDesigner developers,Would it be possible that one of you is getting a 4k monitor and does some testing on the user interface? Even in the latest version (4.16.1) on a 4k monitor the user interface is unusable. Especially when trying to edit the properties, elements you try to select are floating around, and it is impossible to select the one you want. Just try to select the image for a button, and you know what I am talking about. On my desk I have a nice setup with two 4k monitors, and currently I have to reduce the resolution on one of them to full HD, just so I can use TouchGFXDesigner. Very annoying, especially it has some side effects in Windows... I like to stress that TouchGFXDesigner is the only program I found so far, which has such issues on a 4k monitor.Best regards,Alex
When using selected style template, the y values are not correct. If the selected menu is in the middle, the menu elements below the selected menu starts with new 0 y coordinates. How do you create circular scroll wheel in this condition
Don't you think it's wrong to make canvasBuffer as member of StartupScreenViewBase class?As far as I understand every screen can write to canvasBuffer because CanvasWidgetRenderer is the full static class.StartupScreenViewBase is generated by designed.I've spent quite a lot of time to find out the reason why data of my other Screen (not StartupScreenBiewBase) are corrupted.Hope I'm right and the reason is the next:SomeSecondView has a size larger than StartupScreenViewBase (StartupScreenViewBase contains canvasBuffer). And when screens are swapped, SomeSecondView is located in same memory as StartupScreenViewBase .After some actions on SomeSecondView occurs writing to the canvasBuffer. canvasBuffer is the member of StartupScreenViewBase, but now, when current view is SomeSecondView and SomeSecondView has larger size than StartupScreenViewBase, AND canvasBuffer NOW IS PLACE WHERE SomeSecondView ARE LOCATED.That's how i think SomeSecondView data are corrupting.When i disable canvasBuffer
I would like to trigger a complete redraw / invalidate of the current screen content. So far I have only found https://community.st.com/s/question/0D53W00000Ug1dASAR/touchgfx-invalidateredraw-entire-viewscreen. Calling view.getRootContainer().invalidate() in presenter also works. However, since I need the redraw in all screens, the implementation in each individual presenter is not very smart. I use partial frame buffers. How can I trigger a redraw of the current screen from the model?
the modal window is likes message box that I needed. I have multiple screens in project, can I use a same modal window for all screens or I need to add a modal window into the every screen? how to do that if all screens can share a same modal window?is someone can tell me? thanks.
I placed the buttons which are made with custom container in ScrollList.I'd like to change screen by pressing each button.How should I write my code for pressing button and change screen?I uploaded the sample project. Please see the attached for your reference.Thank you.
Hi,I'm using keil MDK V5.34 and touchGFX V 4.16.1 , I made a minimal project with these settings using LTDC, and a simple default project, But the problem is that when the MX_TouchGFX_Process is called, the MCU crashes! what's going on wrong?any Ideas[url=https://ibb.co/MV62hsP][img]https://i.ibb.co/swHmP2s/LCD1.png[/img][/url][url=https://ibb.co/Vgxpn4x][img]https://i.ibb.co/Lxrhj7r/LCD2.png[/img][/url][url=https://ibb.co/0cMt5rk][img]https://i.ibb.co/KXqwnWY/LCD3.png[/img][/url][url=https://ibb.co/VVrYCBb][img]https://i.ibb.co/6YV0tsG/LCD4.png[/img][/url][url=https://ibb.co/ypQnF3j][img]https://i.ibb.co/cwrchmn/LCD5.png[/img][/url][url=https://ibb.co/82GP2Qs][img]https://i.ibb.co/DkmwkjW/LCD6.png[/img][/url]and here is the default code,[code]int main(void){ /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ 
Hi,It seems that there is a bug where a hard fault is triggered when dragging a finger on a dynamic graph area.I have tested this behavior on an STM32F746G-DISCO as well as on a custom board with an H743.In my case, the hard fault gets only triggered if there are enough objects on the screen and when the graph is not on the start screen. I guess it depends on the memory footprint.I have increased the project heap and stack size to 4096 and Touchgfx heap size to 8192 with no changes.I cannot see where the hard fault happens as it seems to be inside the TouchGfx library.The attached code is for an STM32F746G-DISCO.To reproduce the error, click on the central button to open screen2 with the graph is. Then drag a finger on the graph.The other buttons and the custom container are not used, they are just here because the hard fault is not triggered without them.
I made a copy of a woking project becase I wanted to make some modifications, then I enabled UART1 on CubeMX and re-generated the files from CubeMX.Then I get some errors building: "error: 'RCC_CFGR_SWS_HSE' undeclared", but deleting the system_stm32g0xx.c file and regenerating code generate the correct file. Then I could flash it but I found a visualization problem, all the texts that where on the project don't show up on the display, I can see the widgets and the code is working, but there are no texts... Used CubeMX v6.2, CubeIDE v1.6, TouchGFX v4.16 and STM32G071 Nucleo.CubeMX: X-CUBE_TUCHGFX v4.16, STM32G0 v1.4.1.I attached the original working project created in TouchGFX designer with a template for the STM32G071 NUCLEO, and then the one I changed the uart and regenerated the code with CubeMX.
I would like to use a 24bit 800*480 LCD.I ask if the value set in CUBE MX is correct.Please help.
I need to create a graph in TouchGFX where the points on that graph will be read from a .csv file. In that first moment I will use only the TouchGFX simulator. Would you have an example where the simulator can read data from a csv file and create the graph?
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.