Discuss STM32 and TouchGFX implementations, including configuration, debugging, and optimization.
Most recent activity
HiI am struggling with the software from the screen manufacteur Bridgetech / matrixorbital, and find the TouchGFX Software way better.That's why I want to design a GUI in a TouchGFX style and use/program my MCU with CubeMX and CubeIDEMCU: STM32f446RET6Link to the DisplayPCB: Custom made PCBNow my question, is that possible?To use this Screen module with TouchGFX and a custom PCB (MCU), in the TouchGFX designer I only found discovery kits with different screens than I have and no custom PCB / MCUI hope someone can help me there :)Best regards
Hi, I created a list and I need set visible image when element of the list is clickedBut problem is that others drawables does not unselected when pressed one of the list elements. When I click on list element I call this functionvoid AddZone::ZoneSelected() { SelectedZone.setVisible(true); }How to unselect others when one of them is pressed? (I can't use radio button because I need scaleable image)
Hello, I'm using STM32F746NG Discovery Kit.I'm trying to Write/Read data to/from External Flash using QuadSPI with BSP driver.Below is my simple function, I don't know why It's can not write to the memory.I really don't know exactly how to determine the block address and the Read/Write Address, can anyone help me to correct it? Many thanks,Hieu uint8_t * pData = "Hello World"; int i; if (BSP_QSPI_Erase_Block(0x90000000) == QSPI_OK) { if(BSP_QSPI_Write(pData, 0x90000000, 12) == QSPI_OK) { i = 1; } }static void MX_QUADSPI_Init(void) { /* USER CODE BEGIN QUADSPI_Init 0 */ /* USER CODE END QUADSPI_Init 0 */ /* USER CODE BEGIN QUADSPI_Init 1 */ /* USER CODE END QUADSPI_Init 1 */ /* QUADSPI parameter configuration*/ hqspi.Instance = QUADSPI; // HAL_QSPI_DeInit(&QSPIHandle); //User Code hqspi.Init.ClockPrescaler = 1; // hqspi.Init.ClockPrescaler = 2;//User Code hqspi.Init.FifoThreshold = 4; hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_H
Hi,I'm looking to use a scroll list as a debugging window which records messages to a textarea within the custom container. I've been using avoid Debug_commsView::scrollList1UpdateItem ( DebugLines& item, int16_t itemIndex )to pass the messages to the custom container and this works, however, if i scroll the list up and down the last debug message gets propergated to the that item and it ends up trampling over the logs.so instead of using this can i would prefure to write directly to the textarea within each instance of the container, but i can't seem to find out how to do that.somthing like.
Facts: I can program/debug very simple things so the problem is not there.It is my first attempt to work with STM32cubeIDE and i find it somewhat challenging.I have a STLinkV2 programmer/debugger that works fine.The dev kit i bought is: https://www.waveshare.com/open429i-c-standard.htmMore info here: https://www.waveshare.com/wiki/Open429I-CSchematic of the board here: https://www.waveshare.com/w/upload/8/8c/Open429I-C-Schematic.pdfThe LCD i bought is: https://www.waveshare.com/4.3inch-capacitive-touch-lcd.htmResources: https://www.waveshare.com/wiki/4.3inch_Capacitive_Touch_LCDSample code (for STM32cubeIDE): https://www.waveshare.com/wiki/File:4.3inch_Capacitive_Touch_LCD_code.7zDatasheet: https://www.waveshare.com/w/upload/5/55/SH430HI50-43050L-C.pdfManual: https://www.waveshare.com/w/upload/0/00/4.3inch_Capacitive_Touch_LCD_user_manual_en.pdfI tried to import the sample code but it imports only the ioc file. Replacing .c & .h files helped but there are still error during compila
Hi, I'm currently implementing SEGGER emVNC Server to work with touchgfx. In fact, I already have a working solution. But I came up with an idea on how to speed up VNC with DMA2D.To explain a bit in detail, emVNC has a callback which is called for retrieving a rectangle of pixels from the current TFT framebuffer. These rectangles are size of max 16x16 pixels (Hextile encoding).Here is a callback function declaration:/********************************************************************* * readRect() * x0: Pixel start coordinate * y0: Pixel start coordinate * x1: Pixel end coordinate * y1: Pixel end coordinate * pixelBuffer: Pointer to a buffer to store the pixel data (pixel index only, no color conversion) */ readRect(unsigned x0, unsigned y0, unsigned x1, unsigned y1, U32 * pixelBuffer);Currently I do that by looping through the framebuffer and retrieving pixel by pixel. This works quite well. But I was thinking that I could probably speed things up even more and reduce CPU usage by us
Camera (Micro 600TVL) works fine when connected to TV. Using I2C, I set up the embedded synchronization (can´t use external) on the TVP and enabled the outputs. TVP status registers say: Vertical and horizontal sync is locked, Color subcarrier is locked. In CubeIde I set DCMI and DMA (see photo) and turned on receiving in SNAPHOT mode. Only 1440 bytes were transferred to the buffer = one line. The NDTR register remains non-zero. The CAPTURE bit in DCMI_CR is cleared. The next lines are ignored and the HAL_DCMI_FrameEventCallback function is called. Don't you know how to receive all lines?//DCMI INIT BY HALL (COMMENTS REMOVED) static void MX_DCMI_Init(void) { hdcmi.Instance = DCMI; hdcmi.Init.SynchroMode = DCMI_SYNCHRO_EMBEDDED; hdcmi.Init.PCKPolarity = DCMI_PCKPOLARITY_RISING; hdcmi.Init.CaptureRate = DCMI_CR_ALL_FRAME; hdcmi.Init.ExtendedDataMode = DCMI_EXTEND_DATA_8B; hdcmi.Init.SyncroCode.FrameEndCode = 0xB6; hdcmi.Init.SyncroCode.FrameStartCode = 0xAB; hdcmi.Init.SyncroCode
Can I scale image with TOUCHGFX at runtime? I need to change image width depends on text long
Hello, I want to delete list element. First of all I click on the zone and then click delete zone. How to achieve that? I've tried with remove function but it does not work.I add zone like this.void InputOutpuConfigurationView::AddNewZone() { uint8_t zoneadd = addzone; FansExpandss.setVisible(false); FansExpand.setVisible(false); Fans.setVisible(false); fans.setVisible(false); DeleteZone.setVisible(true); if(addzone<11) { presenter->SaveClickedZone(addzone); ZoneClicked(addzone); selectedzone.setX((86*(addzone))+zonescroll.getScrolledX()); Unicode::snprintf(zoneheadlineBuffer, ZONEHEADLINE_SIZE, "%s - %d",TypedText(T_ZONE).getText(),addzone); presenter->SaveZoneHeadline(zoneheadlineBuffer,addzone,0); for (uint8_t i = 0; i < addzone; ++i) { zonelist.remove(ZoneElements[i]); } while(zoneadd > 0) { zonelist.setHeight(0); ZoneElements[zoneadd-1].setupListElement(presenter->getHeadlineOfZone(zoneadd),zoneadd,16,156,241,zonea
I am learning touchGFX by document. Almostly, I have no question, but in tutarial6(https://support.touchgfx.com/4.21/docs/tutorials/tutorial-06/tutorial-06-part-1), I have some issue as below, there seems some characters can NOT display normally at wildcard mode.Thanks.
in TouchGFX 4.20 i added PhysicalButtons like described in the documentation and it worked fine"PhysicalButtons": [ { "Key": 0, "Name": "BUTTON_0" } ],I see BUTTON_0 appearing in the touchgfx designer Trigger "Hardware Button is clicked"After updating to 4.21 this does not work anymore. The physical buttons are not shown in touchgfx designer
If each screen shares a function or control, such as a hover button (used in both screen0 and screen1), the function of the hover button in screen0 must be the same as it is in screen1; Switching screens does not free up resources; What's the best way to share a function?
Hello everyone, I have a question about touchGFX bitmap. Can I write a fuction that input is an array of bitmap and its length, and output a bitmap that is concate of all bitmaps in array?
I am reading the document about touchGFX, there is some code I can't understand(but no impact for learning touchGFX, just curiosity)So, how this code can check the MCU speed?The document link at here(Page22): https://sw-center-st-com.s3-eu-west-1.amazonaws.com/touchgfx/doc/presentation/board-bring-up-introduction/board-bring-up-introduction-speakernotes.pdf
I have a PC that can't access the internet, while I must work with it. So is there any way to download and import the touchFGX examples and stm32 dev kit to TouchFGX?
I am trying to implement dynamic QRCode generation. I am using the library https://github.com/ricmoo/QRCode and the QRCode widget from https://support.touchgfx.com/4.16/docs/development/ui-development/touchgfx-engine-features/custom-widgets#example-source-code. The qrcode generation library is in C and uses variable length arrays. TouchGFX, which uses C++ compiler, does not like this and throughs error. How do I inform TouchGFX tool to treat the library as C files? The C library does have extern C used as below. But it still doesn't help.#ifdef __cplusplusextern "C"{#endif /* __cplusplus */For your reference, I am attaching the TouchGFX project here.
I am trying to increment a counter on touch GFX GUI by pressing a push button located on the STM32F429I-DISC1 evaluation board. There are tutorials on doing this with a push button on the touch screen but not from external hardware.Can someone please clarify whether I need to one of the following (or neither).> Define an interaction within touch GFX and then define a virtual function (or just function) and use the HAL_GPIO_ReadPin and then an 'if' statement to increment the counter?> Just define a function within the Cube IDE and point that at the wildcard with the snprintf command?If you have any literature that could help me with this then please feel free to point me at that.Many thanks in advance.Kind regardsMark
Hi everyone,I'm developing a project with stm32G0 and ILI9341 graphics controller, as frambuffer strategy I'm using "Partial Buffer". Everything works fine but occasionally the program crashes and ends up in the _exit() function in syscalls.c.The cause is an assertion in the getBlockForTransfer() function in the FrameBufferAllocator.c file.For the moment I solve the problem by commenting the line of code "assert(state[sendingBlock] == DRAWN);" in the function "virtual const uint8_t* getBlockForTransfer(Rect& rect)", but it's not the most elegant solution.Is there a solution to this problem?The version of TouchGFX is 4.21.2Thank you
Hi, I would like that use a callback of timer (programmed with 10ms) to override the "ScreenView::handleTickEvent()" function, because this function has interrupt in ~14ms.I managed to create the function and link the cpp and C files, but I couldn't use C++ functions (about graph..) in the timer callback that I created, there is an error like "was not declared in this scope" in which when I use it in the "handleTickEvent" function there is no error. Why is this happening?Here is the .c file:#include <gui/main_screen/MainView.hpp> #include <math.h> #include <stdlib.h> extern "C" void CallbackTim5(); int slide_value = 0; int xlabel_0 = 10; int xlabel_1 = 11; int xlabel_2 = 12; int xlabel_3 = 13; int xlabel_4 = 14; int xlabel_5 = 15; int xlabel_6 = 16; int xlabel_7 = 17; int xlabel_8 = 18; int xlabel_9 = 19; int xlabel_10 = 20; int contDataPoint=0; int msCounter=0; //here dont works void CallbackTim5(){ msCounter++; // Insert ea
I have a JPEG image, is there any way to store jpeg image in the internal flash of STM32?And how to read the image?
I have an STM32469I-DISCO kit. I followed tutorial 2 in Touch GFX and tested it with the simulator and it worked fine. Then I tried to run it on the target board. The program downloaded but the screen remained blank yet Touch GFX said it was successfully downloaded and verified. I tried using STM Cube IDE and the same thing happened. Then I tried STM Cube programmer with the same result. Post edited to adhere community guidelines.
Hello,I'm using LTDC_Display_1Layer example.In case I use "LTDC_PIXEL_FORMAT_RGB888" in which format should I store a picture in the framebuffer?I did following, but the pictures is not displayed correctly. 24bit value of a pixel is stored in one 32bit array position. Is that wrong?const uint32_t RGB888_1024x600[614400] = { 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, .. 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff, 0x00ffffff };
I would like to print text onto the screen but for the font to have a color gradient ie slightly lighter at the bottom than the top.i would be grateful if someone could help point me in the right direction to start looking at how to achieve this?im currently using 4.20
..
I currently use the STM32H7 MCU with CMOS monochrome imaging sensor connected via 10-bit parallel DCMI interface. However, when wired this way to the MCU the grayscale pixels are stored as 16-bit unsigned integers in the memory.Is there any way to configure the DCMI peripheral (or the DMA transferring the pixel values to the SRAM memory) to truncate the 2 least significant bits of the values (so they can be stored as 8-bit unsigned integers)? I didn't find any solution or suggestions in the documentation of the peripherals.Thanks for any help.EDIT: The question is about the 2 least significant bits. The DCMI_D[1:0] are the least significant bits I need to remove and keep only DCMI_D[9:2]. The DMA/DCMI would have to be able to perform logical shift right by 2 bits to remove them and to get the desired 8-bit result, which is the point of this question.
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.