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 everyone,I am working on a project using the STM32H753ZI Nucleo-144 board. My goal is to save data to an external USB thumb drive via the CN13 (USB OTG FS) port.My Environment:RTOS Stack: ThreadX, NetXDuo (Ethernet is working), USBX (Host/Storage Class), and FileX.Tools: STM32CubeMX v6.12/6.17 and IAR Embedded Workbench.Clocking: Using HSI48 for USB, stabilized by the CRS (Source: LSE).Hardware Configuration:VBUS: Manually controlled via PD10 (STMPS2141). I have confirmed with a multimeter that 5V is present on the port when the software runs.VBUS Sensing: Disabled in CubeMX (since I am driving power manually).USB_OTG_FS Settings:Mode: Host_Only.Speed: Full Speed (12 MBit/s).DMA: Disabled.Interrupts: USB OTG FS global interrupt enabled (Priority 15).The Issue: Despite the drive having power, the USBX stack does not seem to trigger the device insertion callback. I suspect the issue lies in the registration of the Host Controller Driver (HCD) or the link between the HAL interrup
Kindly help me with this. Im using a STM32 blue PILL - stm32F103C8Open On-Chip Debugger 0.12.0+dev-00608-gd8ed48fef (2025-02-06-11:17) [https://github.com/STMicroelectronics/OpenOCD]Licensed under GNU GPL v2For bug reports, readhttp://openocd.org/doc/doxygen/bugs.htmlInfo : Listening on port 6666 for tcl connectionsInfo : Listening on port 4444 for telnet connectionsInfo : STLINK V2J46S7 (API v2) VID:PID 0483:3748Info : Target voltage: 3.215873Info : clock speed 4000 kHzInfo : stlink_dap_op_connect(connect)Info : SWD DPIDR 0x1ba01477Info : [STM32F103C8Tx.cpu] Cortex-M3 r1p1 processor detectedInfo : [STM32F103C8Tx.cpu] target has 6 breakpoints, 4 watchpointsInfo : [STM32F103C8Tx.cpu] Examination succeedInfo : starting gdb server for STM32F103C8Tx.cpu on 3333Info : Listening on port 3333 for gdb connectionsInfo : accepting 'gdb' connection on tcp/3333Info : device id = 0x20036410Info : flash size = 64 KiBWarn : GDB connection 1 on target STM32F103C8Tx.cpu not haltedundefined debug reason
Could you provide technical details or reference designs for a 2W wireless charger based on the STWBC86JR?
I'm working with an STM32U3C5RIT6 using the HSP to do some FFT-based audio DSP with the HSP Engine middleware. I've got it working correctly using direct mode and I'm trying to squeeze out a bit more performance using process lists but for some reason the RFFT output isn't the same when used in a process list.Here's the code I use for accelerator / direct mode which works correctly:HSP_ACC_VectMul_f32(&hmw, FFT_Buffer, Window, FFT_Buffer, HSP_BLKSZ); HSP_ACC_Rfft_f32(&hmw, FFT_Buffer, HSP_LOG2NBP_512, 0U, 1U, HSP_RFFT_TYPE_2);I then create a process list using the SEQ versions of the same operations:HSP_SEQ_StartRecordPL(&hmw, PROC_IN); HSP_SEQ_VectMul_f32(&hmw, FFT_Buffer, Window, FFT_Buffer, HSP_BLKSZ, HSP_SEQ_IOTYPE_DEFAULT); HSP_SEQ_Rfft_f32(&hmw, FFT_Buffer, HSP_LOG2NBP_512, 0U, 1U, HSP_RFFT_TYPE_2, HSP_SEQ_IOTYPE_DEFAULT); HSP_SEQ_StopRecordPL(&hmw); --snip-- HSP_SEQ_RunTask(&hmw, PROC_IN, PRC_TIMEOUT);and the results are not the same. If I delete th
Hi,I’m trying to use VSCode extensions but i find it hard to understand and debug my workflow constantly. When i want to create new project i first generate code scaffold in CubeMX. Then i use VSCode extension to configure the project, then i try to build or flash my project to the board and im met with huge amount of errors with cmake, toolchains etc. I Think im missing something here becouse it’s impossbile to work like that. If you have any ideas what am i doing wrong please leave your suggestions. Id be happy to provide any additional details too.
I have a complex product where I am running multiple micros with firmware that needs to be debugged. I have 2 stlinks plugged in. But I am stumped at trying to get the VSCode STM32 extensions to target a specific stlink. My launch.json is using stlinkgdbtarget as the debug type."serverArgs" is where I have tried ["-i","<stlinkserial>"] but the debug session launches and in the debug output it prints multiple stlink devices detected, so the session fails. Is there a way to debug if the serverArgs are even being used?Is there a different way to select a stlink?
Hello,For students, we recently bought the STM32MP257F eval board, and the related camera and hdmi bridge.Everything works perfectly and I would like to connect a Raspberry Camera v2. (IMX219) to the board, as it is also a CSI/MIPI camera (and whe have severals).Can it work ? what should be done related to the software ? (drivers and so on).By the way, what is the process to install packages in the board ?Best regardsS. M.
Hello, I am currently working on a project where we want to use the VL53L7CX sensor for motion detection. Looking through the documentation, I couldn't find any information on what the read and write addresses and values are for communicating with the VL53L7CX, there was just the X-CUBE-TOF1 Time of Flight expansion software for the STM32Cube IDE. I wanted to know if there was information available to communicate with the VL53L7CX via I2C, since I wanted to use the ESP32 for writing the firmware using the Espressif platform.
Hi Everyone,We are developing a Sub-GHz/LoRa device based on STM32WLE5CCU6 and have encountered an issue relatedto the Sub-GHz Radio BUSY state. We would like to ask for possible root causes and the recommendedrecovery procedure.The observed behavior is as follows:1. After MCU peripheral initialization, we call MX_SubGHz_Phy_Init() and then Radio.Init() /Radio.Sleep().2. We then try to execute HAL_SUBGHZ_ExecGetCmd(&hsubghz, RADIO_GET_ERROR, ...).3. The command keeps returning HAL_ERROR, and HAL_SUBGHZ_GetError(&hsubghz) returns 0x00000002, whichcorresponds to HAL_SUBGHZ_ERROR_RF_BUSY.4. We poll this command once per second for 10 seconds, and all attempts fail with the same error.5. We also checked the PWR flags before. PWR_FLAG_RFBUSYS remains active, which indicates that thecurrent RF BUSY signal stays high.6. PWR_FLAG_WRFBUSY can be cleared, but RFBUSYS remains high. Therefore, this does not look like apending wakeup/event flag issue, but rather the actual RF BUSY hardware
Hi everyone,I’m working on a small tool idea around STM32 / Cortex-M debugging, and I’d like honest feedback before building too much.The problem I’m trying to validate is this:When a Cortex-M firmware crashes into HardFault_Handler, many students, junior developers, and even intermediate embedded developers struggle to understand what actually happened. The data is usually there — CFSR, HFSR, BFAR, MMFAR, stacked PC, LR/EXC_RETURN, stack frame, GDB logs — but interpreting it correctly is not always obvious.The idea is not to build another IDE or replace STM32CubeIDE, VS Code, Ozone, or GDB.The first version would be an offline analyzer:input: .elf file, GDB log, register dump, stack dumpoutput: a clear report explaining the probable fault cause, source line if available, decoded fault registers, and suggested next checksExample use case:firmware crashes into HardFaultdeveloper copies the relevant GDB/register dumptool generates a readable diagnostic reportI’m especially interested in
Interesting issue I ran into with my STM32F303CBT6. Using an STLINK to try and connect to it and wasn't coming right, probed the voltage on PA14 out of desperation and it worked. Intermittently but it workedStarted testing if it was perhaps acting as a pull down and soldered in some resistors to ground to test. I test 100k, 820k, 1M and 10M. None of which workedI then tested capacitors 3pF up too 22pF and tried combining them with the above resistors. All of which didn't helpI then added 100nF caps between all Vdd and Vss connections as close as I could get to the MCU, as well as between NRST and GND. Again none of which worked. (my boot0 is grounded through a 10k too) Any ideas of what could possibly have gone wrong here? Such a strange thing to me, that my multimeter was making it work Intermittently.
Dear ST Technical Support Team,I am writing to request technical assistance regarding a recurring hardware failure with the STM32H743IIT6 MCU on my custom-designed PCB.Problem Description:After initial assembly, the MCU is correctly recognized by STM32CubeProgrammer and STM32CubeIDE via the ST-LINK (Serial Wire mode). I can successfully flash the firmware and debug the device for a limited number of cycles (typically 2 to 5 times). However, the MCU eventually enters a state where:It is no longer recognized by any programming tool ("No STM32 target found").The chip begins to draw excessive current (overheating rapidly).The hardware suffers permanent damage (internal short-circuit).Firmware Configuration:Debug Hardware: Serial Wire (SWD).Timebase Source: SysTick.Clock Configuration: Configured via STM32CubeIDE (no errors reported in the clock tree).Operating Voltage: 3.3V stable.Technical Concerns:I have verified the schematic, but the repeated physical failure suggests an internal latch
Hello Everyone,I am working on a custom USB bootloader project on STM32H743 using:USB Host MSCFATFSExternal QSPI FlashInternal Flash updateIAR WorkbenchHAL driversMy bootloader detects USB pendrive successfully and I can see:Appli_state == APPLICATION_READYf_mount() returns FR_OKBut the system gets stuck / deadlocked when calling:DIR dir; if(f_opendir(&dir, "0:/") != FR_OK) { return UPDATE_NONE; }The MCU hangs inside f_opendir() and never returns.Current flow:MX_USB_HOST_Init(); while(1) { MX_USB_HOST_Process(); if(Appli_state == APPLICATION_READY) { HAL_Delay(500); update_flags = ver_check(); break; } }Inside ver_check():if(f_mount(&USB_FatFs, USBHPath, 0) != FR_OK) { return UPDATE_NONE; } if(f_opendir(&dir, USBHPath) != FR_OK) { return UPDATE_NONE; }Additional Information:USB Host MSC works until f_opendir()No FreeRTOS usedUSB drive detected properlyf_mount() succeedsDeadlock occurs specifically at f_opendir()Tried both "0:/" and USBHPathTried adding delay
Hi I am looking into using STM32F446RCTx for my design, which includes 2 x USB FS 2.0 (1 x Host + 1 x Device). Hence need to provide an external HSE. I want to use an Oscillator, meaning I setup the HSE as "Bypass Clock Source" .With this setup I planned to use the pin 6 (PH1_OSC_OUT) as a GPIO for other functionalities. But the STM32CubeMX setting does not let me do this.I see that this pin will be (OSC_OUT) High Impedance as per RM0390 - Page 120. Am I right in say that I MUST leave this pin NC and cannot free up to use as GPIO?Thanks.
Split from this thread. Hi mƎALLEm, Thanks for this reply and confirming that the OSC_OUT can be used as GPIO when HSE in bypass mode. Can you please advise I do I set this as a GPIO? CubeMX does not allow me to configure this pin. Should this be hand coded to make this possible? Thanks. Regards Billy
Hi All, For the project I am working on we are looking to standardize on the STM32H7A3 processor. I am current looking to setup a project in the ST Motor Control Workbench (v6.4.1) targeting the STM32H7A3.When selecting a board, there are only 2 H7 boards listed. Both boards contain processors that have a mix of M7 & M4 cores. The Workbench creates code for the M4 processor, whereas the STM32H7A3 has an M7 core.I have tried creating a custom board, but again the STM32H7A3 is not listed in the supported list of processors.Is there anyway to set up the ST Motor Control Workbench to generate code for the STM32H7A3?Or do I need to port code targeted at a different processor?If so, can someone suggest a supported processor that would be a good starting point for generating code that could be easily ported to the STM32H7A3?Does ST have documentation on how to generate code for a processor that is not directly supported by the ST Motor Control Workbench? Thanks for your time!&nb
Hello, We are facing an intermittent CAN-FD issue in the field and would appreciate guidance from the community. Our system has two devices on the bus (no other device on the bus) using a request–response architecture. The master sends a request every 30 ms and the slave responds. This setup is deployed in hundreds of units running continuously (24 hours). Out of these, around 3 to 5 units per day show acknowledgement errors, which we track through the CAN protocol error counters. The behaviour is unusual: • The issue appears randomly on any unit.• No bus-off condition is ever reported.• Despite no bus-off, communication between the two nodes temporarily stops.• Communication recovers automatically after a few seconds without any intervention. Initially, we suspected a physical wiring problem. We re-checked all connectors and even secured them with glue. The bus has 120-ohm termination at both ends. However, the issue still appears randomly. Below are the system details: Microcontrolle
I have a project where a STM32U575VGT must convert a SSI multiturn encoder value into a parallel single turn value for GPIO output. The SSI values are 3 bytes long, and it would be best if the CPU is only interrupted when the last 2 values differ. I have set up SPI2 to have GPDMA channels for TX and RX (although only RX is needed). DMA transfers work, but when I try to enable autonomous mode with LPTIM1 Channel 1 as a trigger, there are no interrupts for SPI2 or the DMA channels. How do I trigger the SPI read every ~1ms? Is this something only achievable with the LL libraries rather than HAL? Is it possible to interrupt the CPU only if the 3 bytes read from the SPI differ from the previous value?
System Setup Board: NUCLEO-G0B1RE (STM32G0B1RET6)CAN Transceiver: CAN-FD 4 Click (NCV7344) connected via level shifter (3.3V → 5V)FDCAN Pins: PC4 (TX), PC5 (RX) on FDCAN1Clock: HSI 16 MHz → PLL → 64 MHz FDCAN clock Second Node: Raspberry Pi 4 with MCP2517FD Click board (ATA6563 transceiver, 20 MHz crystal)RPi CAN Interface: can0 configured with bitrate 500000 dbitrate 2000000 fd on Project Context I'm building a BMS (Battery Management System) CAN-FD emulator. The STM32 reads values from a potentiometer via ADC and transmits telemetry frames (ID 0x100, 8 bytes) every 100ms. The Raspberry Pi is the receiver that should log these frames. Problem When both nodes are connected in FDCAN_MODE_NORMAL, the STM32 transmits frames (confirmed via serial debug prints and g_tx_count incrementing in the debugger), but nothing appears on candump can0 on the Raspberry Pi. The STM32 eventually enters BUS-OFF state. What I've Already
Hello,I would like to add Aliro compatibility to my access control device.My device uses the STM32WB55 MCU with an ST25R3911B NFC front-end.It seems that the X-Cube-Aliro package is designed to work with the new STM32WBA MCUs along with different NFC front-ends (such as ST25R200).As I understands it, I can implement the Aliro protocol on STM32WB55.1. Are there any such examples of adapting the X-Cube-Aliro package to work with such an MCU?2. Does using the X-Cube-Aliro package also require running a comm stack that the STM32WB55 doesn't support?3. Are there examples of implementing the Aliro protocol without using the X-Cube-Aliro package on STM32 devices?Thanks,Tal
When using the IOC file in the attachment to generate code with an operating system, MDK-ARM V5.32 is selected. It is found that the directory ..\Middlewares\Third_Party\FreeRTOS\Source\portable\GCC is missing, resulting in compilation failure in Keil.
Hello, I noticed that when showing differences between the current and the previous generated source code the width of the source code window does not even show 80 characters even though there is plenty of room in the application window (see screenshot attached). I spent quite a bit of time looking at the HAL source code when debugging and the source code is not formatted to 80 character lines anyway. Sometimes it exceeds 80 by a wide margin. Would it make sense to show the source code window as a popup or as wide as the application window allows?Thank you,Gil
I have a flexButton in a View, and I want to execute different functions depending on whether the button is PRESSED, RELEASED, or CANCEL.I know you can create interaction in TouchGFX Designer, but you can only call a virtual function on click. Is there a way to, for instance, enable the clickListener Mixin to read the event that has fired the callback from that specific button?I need to read this event within the view and relative to my button.Is there a way, or do I have to create a custom widget?
I am developing a multi-node system (16 nodes) based on the STM32G0C1MET6. During normal operation, all nodes communicate at 500k (Standard CAN). To perform a firmware update, the Master initiates the following transition sequence: Reconfiguration: The Master sends a global command. All nodes switch their FDCAN configuration to 250k (CAN FD) and enter Listen-Only Mode. Trigger: The Master then sends a specific SDO command to a single target node to trigger a jump to the System Bootloader (System Memory). Reflash: Once in Bootloader mode, the target node is expected to respond via FDCAN1 (as per AN2606/AN5405) to begin the reflash process. The Master repeats this node-by-node. The Issue: While most nodes perform the jump and reflash successfully, some specific units enter the bootloader (confirmed by status LEDs) but never respond to CAN messages. These units appear "deaf" to the Master's CAN FD frames at 250k. Environment: MCU: STM32G0C1MET6 Interface: FDCAN1 (Pins: PD0/PD1) Trans
I am currently interfacing M95P08-IXMNT/E with an STM32H755ZIQ board using SPI. My connections are:SCK -> PA5MISO -> PA6MOSI -> PD7CS -> PA4I am trying to read the Device ID/JEDEC ID from the flash memory, but I am not getting the expected response value.Could anyone please help with:Correct SPI configuration required for the M95P08Supported SPI mode (CPOL/CPHA)Required reset/power-up sequenceExample command sequence for reading JEDEC IDWhether HOLD/WP pins need pull-ups or specific statesAny STM32-specific considerations while interfacing this ICIf anyone has a working initialization/read-ID example, it would be very helpful.Thanks.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.