Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
I need to draw part of an image. I found the following function:I have tried the image.draw() method and it does work. However, I am having issues with it because I am placing a progress widget behind it which invalidates that area and essentially wipes out the drawn image.I have tried calling draw() after advancing the progress value of the widget, but it flickers. And calling image.invalidate() displays the entire image (not the partial rectangle set by the draw() method.
Hello,I am developing a software with STM32L4R9AI-Disco. I am trying to makesome menu screens. All screens have scroll wheels. the project has no touch. ithas physical buttons. I need screen transitions between all screencombinations. * I have interactions for screen transitions. When I call the interactions,everything works well.* I want to call the interactions via using function pointers. You cansee the source codes and explanations below.* I need to know last selected items of scroll wheels for every closingscreen. Because when I return back the screen again, I need to setup scroll wheellast position. I defined a struct type from my C code and a buffer to holdvariables from that struct types.//my declarations from C codetypedef struct{ void *intFuncPtr; //function pointers for screen transition fuctions uint32_t parameter; // scrollweels last positions }screenTransitionType; #define MAX_SCREEN_TRANSITION 20 screenTransitionType screenTr
HiI am trying to use TouchGFX with my 32F429IDISCOVERY, DISCO1 according to the video https://www.youtube.com/watch?v=VOs2LYO7wSA) and the description https://touchgfx.zendesk.com/hc/en-us/articles/360021620431-Configuring-STM32F429I-DISCOI use STM32CubeIDE Version: 1.0.2 and TouchGFX 4.12.2Unfortunately It does not work still I have the following errors.make -j4 all arm-none-eabi-g++ -o "First_Project.elf" @"objects.list" -l:libtouchgfx-float-abi-hard.a -mcpu=cortex-m4 -T"F:\Workspace_STM32CubeIDE\First_Project\STM32F429ZITX_FLASH.ld" --specs=nosys.specs -Wl,-Map="First_Project.map" -Wl,--gc-sections -static -L"F:\Workspace_STM32CubeIDE\First_Project\Middlewares\ST\TouchGFX\touchgfx\lib\core\cortex_m4f\gcc" --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -lstdc++ -lsupc++ -Wl,--end-groupSrc/BoardConfiguration.o: In function `FrontendApplication::handleTickEvent()':F:/Workspace_STM32CubeIDE/First_Project/Debug/../TouchGFX/gui/include/gui/com
Hi,There is an example in touch gfx designer named "TouchGFX Demo 2". There is carousel for swiping the icons, while swiping icons, there is a text swiped below icons in MainMenuCarousel page. This text is constant and is defined as TEXT type, so we can not use any char array string instead of this text. How can i copy and use any char array to carousel icons text?
Screen3View.hpp (Where the keyboard should be visible) #ifndef SCREEN3VIEW_HPP #define SCREEN3VIEW_HPP #include <gui_generated/screen3_screen/Screen3ViewBase.hpp> #include <gui/screen3_screen/Screen3Presenter.hpp> #include <gui_generated/screen3_screen/Screen3ViewBase.hpp> #include <gui/screen3_screen/Screen3Presenter.hpp> #include <gui/common/CustomKeyboard.hpp> #include <touchgfx/widgets/ButtonWithLabel.hpp> class Screen3View : public Screen3ViewBase { public: Screen3View(); virtual ~Screen3View() {} virtual void setupScreen(); virtual void tearDownScreen(); protected: CustomKeyboard keyboard; }; #endif // SCREEN3VIEW_HPP```Screen3View.cppScreen3View::Screen3View() { keyboard.setPosition(16, 16, 400, 240); add(keyboard); }Screen4View.hpp (where the keyboar
I tried to implement a view (box+grid+graph) in vs. The grid consists of many lines and the graph is inherited by CanvasWidget.1. Create canvasBuffer[CANVAS_BUFFER_SIZE] in main. cpp;Graph alone is ok.CanvasWidgetRenderer: : setupBuffer (canvasBuffer CANVAS_BUFFER_SIZE);CanvasWidgetRenderer: : setWriteMemoryUsageReport (true);2. Changing the canvasBuffer[CANVAS_BUFFER_SIZE] in the main. cpp into the private of view. hpp cannot successfully implement graph.3. Grid cannot be realized.But I can display the grid separately on the target board.How do I implement this view using CWR. Thank you very much!:face_with_tears_of_joy:
Hi everyone.I'm beginning with STM32F746 Discovery Kit, I already build some app using TouchGFX run on this Kit.Now I want to build a new hardware for my app based on STM32F746 kit, but I will using TFT 7 inch (800x400).Because I will solder my pcb, so I want to using STM32F746 and Sram package LQFP. Of coure i will still using TouchES and STM32 library to program this PCB.So anyone can help me choose STM32F746 and SRAM for my app.Thanks and best regards.
I have an OV7670 camera that I am trying to capture images with. I am able to communicate with and set registers for the camera. When power, GND, and XLCK (16 MHz) pins are supplied to the pin I am also able to detect that proper image data is being sent via a logic analyzer. When acquiring the image (via HAL drivers), I only ever receive an infinite amount of "Line Interrupts" which execute the callback function HAL_DCMI_LineEventCallback. Whether I try to perform an acquisition in snapshot or continuous mode, I still receive an infinite amount of these interrupts. I also never receive any other interrupts or error functions. What could be causing this? Shouldn't I only ever receive the amount of line interrupts associated with a single image in snapshot mode? I believe I have enabled all DCMI interrupts, is this not the case? Why am I not receiving any other interrupts? Could this be an error on the DMA side of things?If I understand this code correctly, once the snapshot has been ta
So I want to briefly explain my project. I am using STM32F746 MCU for my smart home project. In this project I have to include live stream from a PAL camera. I am using a TW9912 to get 8 bit progressive YCbCr after which I convert to RGB and display it on screen. My display resolution is 800x480 pixels. I am using the crop feature to get 720x480 window to display the video. I am fairly experienced with STM32MCUs and especially DCMI as I have used digital cameras for my system which work fine. The problem is that when I run the program the DCMI is capturing just one frame or sometimes a fraction of a frame before it disables DMA due to an overrun error. I tried getting the same resolution with a digital camera, progressive YCbCr 8 bit, it works fine without any problem. Same program, same hardware connections to DCMI but one causes an error and the other doesnt. I verified the signals from the decoder chip, and all are normal. Infact an interesting thing I found out is when I choose to
I am working on STM32F746 with ADV7180 video decoder. As per the STM32F7 Document for DCMI , it supports YCbCr 4:2:2 progressive video but ADV7180 output is YCbCr 4:2:2 interlaced. Can anybody help me how to make this working on STM32746
So i have a STM32F469i-Discovery Board. I use CubeMx and SW4STM32 to programm my Board. But i dont have any experience in programming STM..I am searching a Example Programm as simple as possible. Just as a simple "Hello World" Output on my LCD Display..Does anyone here have such a simple programm? Thx for help
I am using canvasWidget. At this time, I am using default code as like in below;#define CANVAS_BUFFER_SIZE (3600)static uint8_t canvasBuffer[CANVAS_BUFFER_SIZE];CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE);I checked that how many memory is required for canvasBuffer using CanvasWidgetRenderer::setWriteMemoryUsageReport(true) on simulator.As you see in capture, even though CWR require 15668 bytes, CWR will split draw into multiple draws. therefore, in this case, performance will be not good.If static memory is enough, I can increase CANVAS_BUFFER_SIZE. after that, there is not this message.But, when CAVAS_BUFFER_SIZE is 3600, is there memory buffer overflow possiblity ?Best Regards, JunBeom Kim
Since N25Q128A is obselete and the alternative at the moment is MT25Q128A,would a different driver may be needed to run TouchGFX on custom hardware ?I have no experience related to QSPI Flash, if I soldered a MT25Q128A IC into the place of N25Q128A on STM32f746 disco-board will it run no problem ?
..
I am getting a compiler error when casting from a const uint8_t* to a uint8_t* in the simulator but the compiler and debugger in STM32CubeIDE (1.1.0) is allowing this cast.Is there a way to modify this compiler setting in the TouchGFX Simulator?Also, any unused variables throw an error instead of a warning in the Simulator. Is there a way to disable this?
I have a question about the new L8 image support. I created an indexed image and noticed that in order for the image source file (located in TouchGFX\generated\images\src) to be created as an L8 with a clut table, I still need to choose L8_ARGB8888 as the "Image Format" in the TouchGFX Designer's Images tab as seen in the following article:https://touchgfx.zendesk.com/hc/en-us/articles/360009793299-Using-the-L8-Image-FormatShould the image be a non-indexed ARGB888 (limited to 256 colors) and let the TouchGFX do the conversion? If I add an indexed image, it looks like TouchGFX takes that indexed image and remaps it into an ARGB8888 prior to conversion. Is this how it works? I also noticed that if DITHERING is enabled it will add colors to the point of it being more than the 256 maximum.Also, is there a way for the source file to be created without TouchGFX doing this conversion?
Do you have any plans to rework text resources so that excel file would not longer be needed?The problem is that excel file cannot be binary compared.I bet all Git users will agree with me.Also, current excel file generator creates file, that MS Excel must try to recover (unreadable characters). After recovery, I can see that it is completely different thing in binary view.Having text resources as text based file would be so useful and easy to work with (for example when reworking resources and not worrying about corruption or missed something).One more thing is that it might cost some time for TGFX developers in the short term, but not in long term: ease of changes, more professional look, versatility for users.
Hi,I want to do a scrolling text. I think, I can use "scrollable container". But how can I scroll automatically don't know. Is there any example about this type of usage for scrollable container?
#define CAMERA_FRAME_BUFFER 0xC0260000#define CONVERTED_FRAME_BUFFER 0xC0390000I have seen a example application in the downloaded Bundle from the ST Site. Applications/Camera Example: In this application CAMERA is initialised with CAMERA_FRAME_BUFFER and when Capture the frame with capture command the data is retrieved from CONVERTED_FRAME_BUFFER.I just want to know the logic behind this. Logically the data should be available on CAMERA_FRAME_BUFFER, but why the application is retrieving from CONVERTED_FRAME_BUFFER ?
Hello,I am struggling with Ethernet issue.We see the following:1. stm32h743-EVAL - using RTOS example with udp echo server, stops responds to udp/ping request during a short stress test. And even after stopping the stress, it stops responding at all to any request ! I have to reset board to make is respond (changing to 400 and restarting debugger did not help !!)2. stm32h743-NUCLEO - using RTOS example with udp echo server, still responsds to udp/ping request during a short stress test. Comparing the changes in code (assuming that it is not an HW difference between nucleo and eval), I saw that PLLN in eval was 160, while in nucleo 400. (yet, there are other differences too that I should still check).I suspected that this is the PLLN issue, because when changing PLLN in nucleo to 160, it stops responding during the test. (but after stopping it did continue responding to requests). So, I then tried to change in nucleo to 400, but it did not help in EVAL.Any idea ?Ran
I try to debug a problem with the touch, but I cannot see how FreeRTOS does periodically the functions. See pictures from the call stack. In code the HAL methods are all virtual and I can’t find the code where they are called. It seems there is something hidden in the source ore in my understanding. It would be very helpful to get a description about the concept about the bindings from the graphical lib and the operating system.
I want to keep track of application so keeping backup in SD CARD with text file.
// Here is my code for when the enter button is clicked: void MainScreenView::EnterButtonClickedFunction() { Unicode::UnicodeChar STRING = keyboard.getBuffer(); updateWildcard(STRING); targetVacValvePercent.resizeToCurrentText(); targetVacValvePercent.invalidate(); // Close Modal Window targetPercentModalWindow.setVisible(false); targetPercentModalWindow.invalidate(); keyboard.setVisible(false); keyboard.invalidate(); enterValueButton.setVisible(false); closeModalWindowButton.setVisible(false); } // Here is my update Wildcard text: void MainScreenView::updateWildcard(uint16_t text) { Unicode::snprintf(targetVacValvePercentBuffer, 5, "%d", text); targetVacValvePercent.invalidate(); }
Adding the following includes in Model.cpp prevents the touchgfx simulator from successfully compiling:#include <gui/model/Model.hpp> #include <gui/model/ModelListener.hpp> extern "C" { #include "main.h" #include "FreeRTOS.h" #include "queue.h" #include "task.h" }I tried adding to the makefile include path as follows, but I think I'm going down a rabbit hole.#keep framework include and source out of this $(build_root_path)../Core/Inc include_paths := $(library_includes) $(foreach comp, $(all_components), $(comp)/include) $(framework_includes) \ C:/Users/webst/STM32CubeIDE/workspace_1.0.1/stm32F769I_disco_cubeide/Core/Inc \ C:/Users/webst/STM32CubeIDE/workspace_1.0.1/stm32F769I_disco_cubeide/Drivers/STM32F7xx_HAL_Driver/Inc \ C:/Users/webst/STM32CubeIDE/workspace_1.0.1/stm32F769I_disco_cubeide/Drivers/CMSIS/Device/ST/STM32F7xx/Include source_paths = $(foreach comp, $(all_components), $(comp)/src) $(framework_source) simulatorThe simulator errors: Compile &nb
I've poured through every doc I could find and only find 2 mentions of interfacing w/ parallel character LCD , 3 if you count the Cube MX drop down menu indicating it can be done. The data sheet clearly indicates it is a thing. The last paragraph of the FMC feature, section 2.8, pg 24 is entirely about this interface Happens to also be the only mention of it. The big book, RM0410, has exactly one bullet point on page 332, again FMC, listing it as a main feature. Not another word. No register mapping, no alternate function pin mapping, no driver/HAL that I can seem to spot... I'm sure it's relatively straight forward, but without basic info, hacking the chip and bit banging my UI isn't really what I was hoping to do for the rest of my life. I just can't find any details, actual information. Any help would be appreciated. Dale
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.