Get ready for the STM32 Summit 2026 | Online, November 3
Join discussions in the Product Forums. Ask questions, learn from your peers, and share insights on ST solutions to accelerate your design journey.
Most recent activity
Hi I am trying to gain knowledge on TouchGFX and GUI, with STM32 controller. can you provide me with the document or example from where i can start my learning to use TOUCHGFX and use multiple screen.
Hi all,I am working with STM32F469ZIT6 and external SDRAM AS4C4M16SA-6TIN SDRAM using FMC (Bank1).SetupHCLK = 180 MHz SDRAM clock configurations tested:HCLK/2 (90 MHz) → Refresh count = `0x056A`HCLK/3 (60 MHz) → Refresh count = `0x0395`Data width: 16-bitInternal banks: 4CAS latency : 2SDRAM clock has been verified using an oscilloscope and matches expected frequencies.Test CodeI am writing a pattern to SDRAM and reading it back:- Write pattern: `0xA1234567 + index`- Base address: `0xC0000000` for (uwIndex = 0; uwIndex < BUFFER_SIZE; uwIndex++) { *(__IO uint32_t*) (SDRAM_BANK_ADDR + WRITE_READ_ADDR + 4*uwIndex) = aTxBuffer[uwIndex]; }Read back: for (uwIndex = 0; uwIndex < BUFFER_SIZE; uwIndex++) { aRxBuffer[uwIndex] = *(__IO uint32_t*) (SDRAM_BANK_ADDR + WRITE_READ_ADDR + 4*uwIndex); } Issue (Observed Behavior)- The read operation does not return the correct written data- Instead:It often returns the previous/last written value.The data pattern shows MSB dupl
If the user uses "-Wundef" the header "stm32u3xx_hal_def.h" creates a lot of warnings due to a missing check if a preprocessor macro is defined before evaluating it.The warning gets emmited by the following #ifs used in STM32Cube FW_U3 V1.3.0 inside "stm32u3xx_hal_def.h":#if defined ( __CC_ARM ) || ((__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) || defined ( __GNUC__ )e.g. in line 142This is how it was correctly checked in e.g. the STM32Cube FW_G0 V1.6.3 in the hal def header for the stm32g0 hal:#if defined ( __CC_ARM ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) Best Regards
Hello ST Team, could you please provide the marking code for LD59015C33R? Where can i find it on my own? A register to verify parts by codes would be great. Thanks Thilo Roth
Environment:Board: STM32H7S78-DKMCU: STM32H7S7L8H6Stack: AzureRTOS USBX (PIMA MTP + CDC ACM) + FileX.Storage: microSD Card.Host OS: Windows 11 Preliminary Note:A significant portion of this code is adapted from the official ST example:stm32-usbx-examples/Projects/STM32H735G-DK/Applications/USBX/Ux_Device_PIMA_MTP at main · STMicroelectronics/stm32-usbx-examples Current Status:I have successfully implemented the MTP class. The device is correctly recognized by Windows, the storage is mounted, and I can view and modify files located in the root directory.To manage MTP objects, I use a custom function SD_Scan, which traverses the FileX filesystem and builds a local object handle table (ObjectHandleTypeDef).VOID SD_Scan(VOID) { /* Estructura estática para no usar el STACK */ static FolderList_t folder_list[SD_MAX_HANDLES]; /* Variables de control de la cola con nombres claros */ UINT NextFolderToScan = 0; UINT TotalFoldersInList = 0; /* Variables de es
Hello everyone,I am working on a custom bootloader for an STM32H743-based TouchGFX project and facing a very strange issue specifically with the TouchGFX application after jumping from bootloader.STM32H743 Bootloader Successfully Jumps to Simple App but TouchGFX Application Shows Black Screen After Bootloader Jump.I would appreciate any guidance from people who have experience with STM32H7 + TouchGFX + bootloader integration.Hardware / Project DetailsMCU:STM32H743IIT6Frameworks:STM32CubeIDETouchGFXFreeRTOSPeripherals Used in TouchGFX App:FMC SDRAMLTDCDMA2DQSPII2CTIM2External Memories:SDRAM framebuffer at 0xD0000000QSPI assets at 0x90000000Bootloader FunctionalityThe bootloader:Initializes USB Host + FATFSDetects pendriveReads image.bin and extflash.binPrograms internal flash and external QSPI successfullyUses APPLICATION_ADDRESS = 0x08040000After flashing, bootloader jumps to applicationImportant:Simple LED blinking application works correctly through the same jump functionOnly TouchGF
CubeMX copies the .s startup file from the template folder and renames it based on the selected MCU. However, the lowercase conversion generates different filenames on systems with different locale settings.For STM32H743IIK6, the generated filename differs depending on the system locale.On Windows 11 with the English locale, CubeMX generates:startup_stm32h743iikx.sOn Windows 11 with the Turkish locale, it generates:startup_stm32h743ııkx.sThe issue is caused by locale-dependent lowercase conversion of the letter I.
I am a user of the NUCLEO-N657X0-Q board.I would like to use Keil MDK RTX5 RTOS together with Root of Trust.My development environment is as follows:1> Development tool: Keil uVision V5.422> Example source: STM32Cube\Repository\STM32Cube_FW_N6_V1.2.0\Projects\NUCLEO-N657X0-Q\Applications\ROT\OEMuROT_Appli3> Development board: NUCLEO-N657X0-Q4> Manage Run-Time Environment Setting I have added the osKernelInitialize() function to the main function as shown below.int main(void) { #ifdef PRINT_BOOT_TIME /* Get boot cycles */ end = DWT->CYCCNT; #endif /* Reset of all peripherals, Initializes the Flash interface and the systick. */ HAL_Init(); #ifdef PRINT_BOOT_TIME /* Get Boot Time */ time = ((uint64_t)(end) * 1000U / SystemCoreClock); #endif /* Register SecureFault callback defined in non-secure and to be called by secure handler */ SECURE_RegisterCallback(SECURE_FAULT_CB_ID, (void *)SecureFault_Callback); /* Register SecureError callback defined in non-sec
#include <stdint.h> #if !defined(__SOFT_FP__) && defined(__ARM_FP) #warning "FPU is not initialized, but the project is compiling for an FPU. Please initialize the FPU before use." #endif int main(void) { /* Loop forever */ for(;;); }Hi Im trying to generate new project with CUBE IDE 1.13 which was working fine this morning but somehow its not generating .ioc file anymore when i searched it says FPU not initialized & generates only files which are present in the second pictureplz help me on this
Is there a prize for the most trivial post? Opened up a new Nucleo-L476RG board (finally worked my way through the 10+ boards I bought a number of years ago) - it comes in a cardboard box now, nice. The Leds (LD1, LD3) were so bright, I couldn't probe anywhere around the micro or connectors without squinting. So I replaced the resistors for these Leds (1K, 100?) with 22K, things are much more mellow now. Most people are using these boards indoors, the Leds only have to be bright enough for people to notice - not beaming out like the Eye of Sauron. Anyway, something for you to think about. Meanwhile, there's a few annoying clouds outside I need to shout at....
Hello,I am a French engineering student working on a startup project as part of my MBA. We are developing an interactive musical box for children aged 3 to 7 years old.The core feature of the product relies on RFID detection: small figurines shaped like musical instruments are placed on a circular rotating tray (15 cm diameter). Each figurine has an RFID tag under its base. When a figurine is placed on the tray, the reader must detect it and trigger the corresponding audio track.Here are our technical constraints:- The reader will be fixed under the tray, at a very short vertical distance (1 to 2 cm at most)- The detection zone must cover the full surface of the tray, meaning a lateral radius of 7.5 cm- The tags will be in slow rotational movement- The reader must be connectable to a PC via USB for prototyping purposes, so we can retrieve detected tag UIDs in real time via a Python or JavaScript script- Budget constraint: under 100€After research, we identified the ST25R3911B-DISCO eva
Hi, I'm new to yocto project, I'm trying to bitbake core-image-minimal image in yocto in stm32mp157d-dk1(scarthgap) ,by editing the bblayers.conf and local.conf in image, its successfully build and flashed into SD card , but I'm trying to boot device then it failed. I found in bootfs sector there was no files in it. I tried to build with kirkstone branch and it worked well, and then I tried to bitbake with scarthgap again and again. I used Ubuntu 24.04 and Linux mint 22.03, but scarthgap branch had the same problems.I wanna know the reason. BIG THX.
Hi there, I have firmware that uses UART1 and UART2 of the STM32G4 series. Both are intended to run on interrupts, but as soon as any signal is received by the MCU, an error occurs, causing HAL_UART_AbortCpltCallback to be called. Therafter, the interrupt no longer works. Are there any known issues with the interrupt on these STMs? Based on previous forums, people were limited by stack size and prefetch. However, different to those cases, my code doesnt enter a hard fault, rather it just hits the function: HAL_UART_AbortCpltCallback.The error that comes up during debug starts here in the hal code:/* Enable the UART Error Interrupt: (Frame error, noise error, overrun error) */ATOMIC_SET_BIT(huart->Instance->CR3, USART_CR3_EIE); /* Configure Rx interrupt processing */if ((huart->FifoMode == UART_FIFOMODE_ENABLE) && (Size >= huart->NbRxDataToProcess))Then returns a page saying <signal handler called> () at 0xfffffff9.
About EVSTSPIN32G4, I started the code generated by MotorControl Workbench 5. Y.3 normally.If you transplant the IIC configuration of the pre drive and enable PWM output, the VDS will report an error.After carefully reading the generated code, it is found that before PWM complementary output, the lower tube is opened for charging, and the output PWM pre drive or VDS protection is written. Is there a routine for STSPIN32G4 IIC to configure PWM output?
Hi,I'm using brand-new, unmodified st32mp257f-dk dev board.When using starter package (https://www.st.com/en/embedded-software/stm32mp2starter.html#get-software) flashed onto sdcard according to https://wiki.st.com/stm32mpu/wiki/How_to_populate_the_SD_card_with_dd_command, system boots-up fine, see 'downloaded_no_panic.log'. Version is openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11.When using image built on my own - distribution package (openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11) according to https://wiki.st.com/stm32mpu/wiki/STM32MPU_Distribution_Package, using docker, I get following:[ 8.296788] usb 1-1: new high-speed USB device number 2 using ehci-platform [ OK ] Found device /dev/hwrng. [ OK ] Found device /dev/tee0. [ 9.041963] hub 1-1:1.0: USB hub found E/TC:0 0 Panic at /usr/src/debug/optee-os-stm32mp/4.0.0-stm32mp-r2/core/drivers/clk/clk-stm32mp25.c:2000 <clk_stm32_pll_init> [ 9.142742] hub 1-1:1.0: 2 ports detected E/TC:0 0 TEE load ad
Hi STM Forum,I'm integrating a custom QSPI display controller with TouchGFX and ThreadX. I need to convert the TouchGFX framebuffer into RGB666 (6 bits per color) for a custom display interface that runs over SPI/QSPI.Here is my IOC. As you can see, I currently have only the QSPI and the clock connected. I believe the framebuffer is defined in TouchGFXGeneratedHAL.cpp as:LOCATION_PRAGMA_NOLOAD("TouchGFX_Framebuffer")uint32_t frameBuf[(320 * 240 * 2 + 3) / 4 * 2] LOCATION_ATTRIBUTE_NOLOAD("TouchGFX_Framebuffer")My target app currently runs on an STM32F7. I also have a GFX01M2 display on a Nucleo H503, but the SPI display example is of limited use because it appears to use many more GPIOs than I have available in my application (I only have QSPI).I have the following questions that will help me integrate TouchGFX into this project:How do I invoke a screen switch from code?When and in which method should I capture the framebuffer, manipulate it, convert it, and pass it to
Hello, I’m trying to use an X-NUCLEO-IHM03A1 board with a STM32F401RE Nucleo 64 board and a small NEMA 17 motor. My goal is just to learn how to drive steppers with the POWERSTEP01 for various projects and I just can’t make it work. I first tried to port the Ponoor library for arduino to STM32 by adapting and rewriting most of it but it didn’t work. I also tried to look at the ST Library from the X-CUBE-SPN3 software but it doesn’t seem to use the HAL so I haven’t been able to understand much of it. SPI is configured correctly, I’ve watched all the ST videos and read the entire datasheet but somehow I can’t make it work.I checked the entire ST Community forum, I also tried to find code on github or google but I can’t find a single usable piece of code written for STM32. Could anyone who has worked with this component post his C / C++ code. Even a valid SendParameter SPI function and getstatus function would help.Kind regards, Adeline
Hello,I have designed a custom board with stm32wb55. I used the reference schematic and checked everything but I cannot program the board from my cubeide. I have tried different configuration settings in Cube IDE but always got "No device on target" error. I connecte SWDIO, SWCLK, GND and NRST pin to my stlink. These did not work so I tried different configurations with OpenOCD too but they also failed with these symptomsSymptoms (Multiple attempts with OpenOCD at 100 kHz):SWD-DP responds reliably: chip identified as Cortex-M4 r0p1Examination usually succeeds: shows correct breakpoint and watchpoint countsHalt always fails with "Fail reading CTRL/STAT register" → "Not halted"Roughly 1 in 4 attempts fail to even initialize, but when init succeeds, halt always failsManual NRST-to-GND-then-release tried, same resultAlready reflowed the WB55 once with gel flux, no change in behaviorTried:Multiple OpenOCD reset modes including connect-under-resetSpeeds from 480 kHz down to 100 kHzForcing a
Hi: My goal is to perform full-duplex I2S using the STM32F722RET6 part. To achieve this using the pins available on the package it looks like I need to use SAI2 (sub-block B) as the master/TX and SAI1 (sub-block A) as a slave/RX synchronized to SIA2.The configuration of SIA2 in CubeMX works fine. However, when I attempt to configure the slave side (SAI1-A) the I2S option is greyed out (see below). Can anyone help me to debug this? Many thanks, Bruce.
We’re happy to announce that STM32CubeMX2 v1.0.1 has been released and is now available. This patch release includes updates and improvements aimed at enhancing the user experience and supporting your development workflow with STM32. What’s new: Supports installing multiple versions of STM32CubeMX2 side by side on the same PC. Supports a graphical uninstaller for easier removal, available on all three supported operating systems: Windows, macOS, and Linux. Prevents certain user files from being overwritten during Project Export. Improves the Pack Update feature for new packs with minor changes that previously did not work as expected. Includes several other bug fixes. Get it here: Download STM32CubeMX2 from the here. Please note: STM32CubeMX2 cannot currently be updated in place from an existing installation. To use this version, please download it and install it as a new instance. Learn more: For full details, refer to the official STM32CubeMX2 documentation. A
Section 36.6.1, Bit 18 (ITAMP3E) indicates that LSE frequency monitoring can be enabled. It appears that the hardware automatically detects when the LSE frequency goes above or below the defined thresholds and sets the ITAMP3F flag in the TAMP_SR register when an LSE failure occurs. When the LSE fails, ITAMP3 is triggered, which asserts the tamp_erase signal, and the backup registers are then automatically erased? Edit: This discussion is related to Can backup registers persist when VBAT drops enoug... - STMicroelectronics Community
Hello,I want to generate an arbitrary waveform by a timer using DMA. The waveform is using different pulse widths and also varying periods in multiples of 25µs.By reading AN4776 and HAL documentation I figured out it should be possible with HAL_TIM_DMABurst_MultiWriteStart() function. Unfortunately I don't get an output signal except after reset where a short pulse can be seen. I assume this pulse is due to port configuration during initialization. After that pulse, the signal stays high.My setup (CubeMX):Nucleo32-L432, core clock 80MHzUsed timer is Tim16Prescaler is set to 399 => 80 MHz / 400 = 5µs resolutionARR and CCR preload enabledARR and CCR set to 0 (initialized in source code)DMA enablednormal modememory to peripheralWord / Wordincrement address on memoryinterrupt enabledFor a first run I want to use fixed pulse widths and varying periods, so all my code does is the following:/* USER CODE BEGIN 2 */ htim16.Instance->ARR = 39; //40 * 5µs = 200µs period htim16.Instance
Here is the config:mcu stm32h743iit6flash 4 lines 1 bank 32mb W25Q256JVsdram 32mb W9825G6KHhere is the flow 1 read image background from qspi 2 decode image with axi sram at #define JPEG_WORKSPACE_BASE 0x24040000 // AXI SRAM (fast) #define JPEG_WORKSPACE_SIZE (256 * 1024) // 512KB (up from 256KB)3 copy buffer to external sdram4 dma2d copy and display image . scenario1 is ok LIBJPEG_DecodeToBuffer((uint32_t)IMG_NEW6, IMG_NEW6_SIZE, (uint32_t*)DECODE_BUFFER1); uint32_t decode_time = HAL_GetTick() - start; printf("✅ JPEG decode: %lu ms\n", decode_time); // Test 3: Display the image start = HAL_GetTick(); //Display_ImageAt_Fast((uint32_t*)DECODE_BUFFER1, 1024, 600, 0, 0); Display_ImageAt((uint32_t*)DECODE_BUFFER1, 1024, 600, 0, 0); HAL_Delay(4000); Clear_SDRAM(); LIBJPEG_DecodeToBuffer((uint32_t)IMG_NEW8, IMG_NEW8_SIZE, (uint32_t*)DECODE_BUFFER3); // uint32_t decode_time = HAL_GetTick() - start; printf("✅ JPEG decode: %lu ms\n", decode_tim
Hello,I am currently working on a simple USB Power Delivery test project using the STM32G071C8.The system has two USB Type-C ports.I need to detect PDO information and eMarker capabilities in order to determine the appropriate power delivery behavior. However, eMarker detection requires VDM-related functionality, and I could not find any relevant examples or documentation on the official website to continue development.The usbpd_vdm_user files generated by STM32CubeMX are essentially empty, and I could not find any useful reference information in either STM32CubeG0 v1.6.3 or X-CUBE-TCPP.Could you please provide any related example code, application notes, or documentation that demonstrates:VDM handlingDiscover Identity floweMarker cable detectionSOP'/cable communicationAny reference material would be greatly appreciated and would help me continue development.Thank you.
I tried multiple times to generate code on Arch Linux with CubeMX version 6.17.0 and Import in CubeIDE version 2.1.1. I made a video with process. And I don't know why this not working. I tried last and previos version of packages for STM32F0. And I don't know but CubeMX copied files very very slow.I choosed CubeIDE toolchain in CubeMX.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.