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
Hello everyone,I am trying to download and run my application firmware into internal SRAM of STM32F407, but it does not execute as expected.Here is what I have done:1. I built my project with Keil MDK‑ARM, configured the scatter‑linker script to place all code and data into SRAM region (0x20000000).2. I generated the .bin firmware file.3. Using STM32CubeProgrammer, I downloaded this bin file to SRAM address 0x20000000. Memory window verification shows the binary content is correctly written into SRAM.4. I used the "Run after programming" option in STM32CubeProgrammer, or performed a software reset after downloading.Symptom:The tool reports download completes. However, my application is not actually running.When I check the Cortex‑M4 core registers in STM32CubeProgrammer:VTOR register shows value 0x1FFF0000, which points to ST‑system boot ROM, not my SRAM address 0x20000000. The CPU stays in the system bootloader, it never jumps to my SRAM‑located application.I understand from the refer
I have the X-NUCLEO-53L9A1 board and NUCLEO.H563ZI. I load the binary provided by ST (53L9A1_PostprocessSingle.bin) and I attach what I get in the serial terminal. I was expecting different data, like a distance value array that I could draw as bitmaps. How is this supposed to work?
Hi, I got a black pill. It says everywhere that to enter DFU mode, you have to keep pressing BOOT0, then press and release RST, then release BOOT0. But every time I do this, Cube IDE says ST-Link is not in the DFU mode, please restart it.
During the SMT process, air may get blown into the pressure port from the pick-and-place nozzle, will the sensor inside be damaged?
Hello ST Community,I am facing a critical issue while configuring OEMiRoT on an STM32H523 device. I used the official provisioning project from the NUCLEO-H533RE example in STM32Cube_FW_H5_V1.7.0 (since there is no dedicated H523 example). I need help recovering the device.Background: I‘ve modified the <DoEncryption> value to 0 according to ‘How to create ROT examples for STM32H5’. I ran the provisioning project (from the NUCLEO-H533RE example) to configure OEMiRoT on the target STM32H523 device. During provisioning, the configuration failed and the product state became Provisioned. After that, the device could no longer be connected via ST-LINK SWD. DA also failed. Then I regenerated a new Key file to confirm if there was any problem during the configuration process. I still have the private key file key_1_root.pem . But the public key file key_1_root_pub.pem and certificate file cert_root.cert have been overwritten. So I tried the method provided by the AI assistant to
Dear STM32 Advisor, I'll design a system based on Nucleo 64 H533RE. The system will act as USB CDC and USB HID Keyboard at the same time. The idea is when the CDC receive a character, here for example "F" then the Nucleo H533RE will output a high going pulse. And, if the Nucleo H533RE receive falling pulse external interrupt, the the Nucleo H533RE will press the F8 key. As a beginner on STM32, is it possible? Thanks and regards, Fuad Purnomo.
I have a question regarding your company’s NUCLEO-H753ZI model.I evaluated two boards of this model (let’s call them a and b), and observed the following phenomenon exclusively on ADC channel 2 of board a. [Phenomenon]When we applied various input voltages and measured the output, we found that the output dropped by approximately 800 LSB (equivalent to about 0.04 V) within the input voltage ranges of 0.825–1.65 V and 2.475–3.3 V (1/4–2/4 and 3/4–4/4 of full scale).*The input voltage conditions (accuracy, ripple) were identical across all boards and channels. [Board Information]ADC Channel 2 Assignment: PA3Resolution: 16-bit modeSampling Time: 16.5 cyclesSampling Frequency: 250 kHz (timer-triggered) Since this phenomenon is not observed on other boards or channels, we suspect that some kind of malfunction is occurring. Based on the symptoms, we also suspect a failure within the successive approximation ADC. If you know the cause of this phenomenon, please let us know.Also, if there are
Moving the motor in small steps how to avoid phantom steps, I notice for example the the stepper moves 50 times 10 steps, moves 15 to 25 more steps, could you describe how to stop when a motion is completed.ATT
Hello ST Community,We are working with the STM32N657X0H3Q controller and interfacing an S80KS5123GABHB020 HyperRAM using the XSPI1 (Octal SPI) interface. The external HyperRAM is intended to be used as the LTDC frame buffer.We have configured the HyperRAM in memory-mapped mode, and according to our configuration, it should be accessible at the address 0x90000000.However, we are unable to access this memory region. Any read or write operation to 0x90000000 fails. For initial testing, we have configured the XSPI clock to 2 MHz.Our setup is based on the STM32N657-DK board example, and we have followed the same memory-mapped configuration.Could you please let us know if any additional configuration is required to access the HyperRAM at 0x90000000? Specifically, we would like to know:Are there any additional XSPI configurations required for memory-mapped mode? Does the MPU or cache need to be configured for this external memory region? Are there any system, clock, or pin configurations that
OverviewThe STM32C542 & SENSOR is an evaluation kit based on the STM32C5 series microcontroller. Built on ST's 40 nm process technology, the STM32C5 offers faster Flash access, higher performance, and lower power consumption.The board also features a rich set of peripherals and interfaces, including dedicated connectors for the ST MEMS sensor (SENSOR) series, providing developers with a convenient and flexible platform for rapid prototyping and application development.In this tutorial, we will perform a simple LED blinking test by configuring a GPIO pin as an output.Hardware PreparationFirst, prepare an STM32C542 development board. In this tutorial, I will use a custom-designed development board. If you are interested in using the same board, feel free to contact me for samples.Main MCU: STM32C542CCT6Reference ProjectThe complete project source code is available on GitHub :GitHub: https://github.com/CoreMaker-lab/STM32C542_SENSOR Creating a Project with STM32CubeMX 2This tutorial u
OverviewIn practical project development and mass-production maintenance, in addition to using ST-LINK for programming, firmware updates are often performed through interfaces such as USART, USB DFU, SPI, or FDCAN. In these cases, the MCU must first enter the factory-programmed System Memory Bootloader before the Flash memory can be programmed through these interfaces. For the STM32C5 series, whether the external BOOT0 pin is used to enter the Bootloader is closely related to the BOOT_SEL setting in the Option Bytes.Simply put, BOOT_SEL is used to select the source of the BOOT0 signal. When BOOT_SEL enables the external BOOT0 pin, the MCU can enter the System Memory Bootloader by pulling BOOT0 high and resetting the device. When BOOT_SEL selects the internal Option Bit, the boot mode is determined by the BOOT0 configuration in the Option Bytes. Therefore, understanding the relationship between BOOT_SEL, the BOOT0 pin, and the System Memory Bootloader is important for subsequent firmwar
OverviewTimers are among the most commonly used peripherals in an MCU. They can be used for periodic timing, PWM generation, input capture, output compare, motor control, and many other applications.This tutorial is based on the STM32C542CCT6. It uses STM32CubeMX2 to configure TIM1 and demonstrates how to modify the prescaler (PSC) and auto-reload register (ARR) using the built-in HAL2 functions, thereby changing the timer output frequency. It also introduces the basic usage of multi-channel PWM output. Hardware PreparationFirst, prepare a development board. In this tutorial, I use a custom-designed development board. If you are interested in obtaining one, you can apply for a sample.The main controller is the STM32C542CCT6. Reference ProjectThe reference project is available on GitHub:https://github.com/CoreMaker-lab/STM32C542_SENSOR Creating a Project with STM32CubeMX2Use STM32CubeMX2 to generate the example project. The MCU used in this tutorial is the STM32C542CCT6. Open STM32Cub
OverviewIn the previous experiment, TIM1 was used to generate PWM output, and the PWM frequency and duty cycle were controlled by modifying the PSC, ARR, and CCR values.Building on that experiment, this article uses the TIM15 input capture function to measure the PWM signal generated by TIM1, thereby detecting its frequency and duty cycle. Hardware PreparationFirst, prepare a development board. In this tutorial, I use a custom-designed development board. If you are interested in obtaining one, you can apply for a sample.The main controller is the STM32C542CCT6. Reference ProjectThe reference project is available on GitHub:https://github.com/CoreMaker-lab/STM32C542_SENSOR UART ConfigurationRefer to the schematic and note that PA9 and PA10 are connected to the UART interface on the development board. In the Peripherals panel, navigate to Connectivity → USART1. Set Mode to Async to configure USART1 for asynchronous communication. Verify that Function used by the component is d
OverviewIn traditional STM32 development, we typically use STM32CubeMX to configure the USART peripheral and redirect printf() to the serial port for debugging output. With the STM32C5 series, ST introduces the new STM32CubeMX2 configuration tool and the HAL2 driver framework. Compared with the legacy HAL, the project structure and some API names have changed, so the UART configuration process and application code require slight modifications accordingly. Hardware PreparationFirst, prepare a development board. In this tutorial, I use a custom-designed development board. If you are interested in obtaining one, you can apply for a sample.The main controller is the STM32C542CCT6. Reference ProjectThe reference project is available on GitHub:https://github.com/CoreMaker-lab/STM32C542_SENSOR Creating a Project with STM32CubeMX2Use STM32CubeMX2 to generate the example project. The MCU used in this tutorial is the STM32C542CCT6. Open STM32CubeMX2 and go to the Home page. Click MCU to creat
When setting high pass filter mode to HPM=01, the values in the reference registers (3Ah-3Fh) need different scaling compared to the data output registers (28h-2Dh). I am following the algorithm specified on p.18 of AN4662 using the following C code:void accel_set_reference(void){ int16_t xyz[3]; lis2hh12_acceleration_raw_get(accel1, xyz); // extra dummy read lis2hh12_acceleration_raw_get(accel1, xyz); xyz[0] /= 8; xyz[1] /= 8; xyz[2] /= 8; lis2hh12_xl_filter_reference_set(accel1, xyz); lis2hh12_xl_filter_hp_bandwidth_set(accel1, LIS2HH12_HP_ODR_DIV_50_REF_MD); lis2hh12_xl_filter_out_path_set(accel1, LIS2HH12_FILT_HP);}For some reason, I need to divide the raw acceleration values by 8 before setting them as the reference values. Observe the graphs of acceleration data I obtain (the step change occurs when this function is called). First, without scaling down by 8:Now when scaling down by 8:Why is this scaling necessary? It is not documented anywhere (as far
Hello Team, We are using a custom board based on QCS8550 processor with LE r90 release. This release has lsm6dsv driver available as part of the ssc framework of the qualcomm. Our custom board includes two LSM6DSVTR IMU sensors which are interfaced over SSC (sensor core based) I2Cs and we are able to get the data through see_workhorse (i.e. qualcomm's userspace utility for sensors) Use Case Requirements: There is a requirement from client regarding sampling the data from IMU sensors on the edge of the reference signal which needs to be provided on the INT2 pin of the LSM6DSVTR sensors. Same reference signal also work as sync signal for the camera as well. so we can consider like sampling the data of IMU and capturing the frame over camera should be somewhat simultaneously. Current Status:In the current driver implementation located at:source/adsp_proc/ssc_drivers/lsm6dsvFrom the driver code analysis, we observed that data is currently being received using a FIFO-based mechanism.Additio
In TouchGFX/target/generated/OSWrappers.cpp at row 38 & 39 the lines : static TX_SEMAPHORE frame_buffer_sem = { 0 };static TX_QUEUE vsync_q = { 0 };will produce a GCC compiler error when the compiler settings are set at -Werror. error: missing initializer for member 'TX_SEMAPHORE_STRUCT::tx_semaphore_name' [-Werror=missing-field-initializers]Compiled with these relevant flagsarm-none-eabi-g++ "../TouchGFX/target/generated/OSWrappers.cpp" -mcpu=cortex-m7 -std=gnu++17 -g3 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-use-cxa-atexit -Wall -Wextra -Werror
Product: STM32CubeMX2 (.ioc2)Version: generic Linux 1.1.0Appeared with MCU: STM32C542CCU6HAL package: stm32c5xx_hal_drivers 2.1.0Project type: CMSIS-Toolbox / CMake generationSummary:On STM32C5, four ADC1 external channels (IN2, IN5, IN6, IN7) have an alternate GPIO pad selectable via the SBS_PMCR pin-remap bits (ADC1_IN2_REMAP -> PC4, IN5_REMAP -> PC5, IN6_REMAP -> PB0, IN7_REMAP -> PB1 on STM32C542). CubeMX2's pin configurator lets you assign the remapped pad in the graphical pinout, accepts it, and generates both the GPIO analog-mode config for that pad and the ADC channel/sequencer configuration for the channel. However, it never emits the corresponding SBS_PMCR remap-enable write. The generated firmware therefore samples the default (non-remapped) pad, while the pin the schematic actually uses is left unread.There is no generation warning, no build error, and no runtime fault. The ADC returns a stable, plausible, but wrong 12-bit code. Reproduction:1. Assign ADC1_IN7 t
We are designing an independent current monitoring circuit for a motor driven by the powerSTEP01. We are using a 0.1 ohm low-side sense resistor (RSENSE).When probing the voltage across this sense resistor with an oscilloscope, we are observing a distinct PWM waveform where the negative voltage pulses have almost the exact same amplitude as the positive voltage pulses (flipping symmetrically below ground, e.g., +0.5V and -0.5V. )Screenshot: RSENSE voltage generated across 0.1ohm when motor is rotating in current mode Before I modify my external analog front-end (currently using an RC filter, a clamp diode and an op-amp) to handle these negative swings, I want to double-check my findings.Is this symmetrical negative voltage pulse an expected physical phenomenon of the powerSTEP01 H-bridge operating in Fast Decay / synchronous rectification mode? Or am I likely dealing with an oscilloscope probing/grounding issue, such as ground bounce or parasitic inductance artifacts?Any insights into
while programming the stm32h753ZI board via uart through stm32 programmer ide im getting this error , "Error: Activating device: KO. Please, verify the boot modeconfiguration and check the serial port configuration.Reset your device then try again ..." but ive looked into the memory bootmode config and connected the boot0 pin to 3v3 (pin 5-7 in CN11) if there is any suggetions to solve this please let me know.
I am working with an STM32H743VIT6 and I am trying to migrate an existing bare-metal LVGL + SDMMC + FatFs project to FreeRTOS + LVGL + SDMMC + FatFsIn my previous bare-metal project, the SD card worked correctly.However, after creating a new project using STM32CubeMX with FreeRTOS + SDMMC + FatFs, the FatFs mount operation fails from the beginning.The problem occurs when calling:f_mount(&SDFatFS, SDPath, 1);void LVGL_Task(void *argument) { (void)argument; printf("LVGL Task START\r\n"); FRESULT fres; printf("before f_mount\r\n"); fres = f_mount(&SDFatFS, (TCHAR const *)SDPath, 1); printf("after f_mount, result = %d\r\n", fres); if (fres == FR_OK) { printf("SD success\r\n"); } else { printf("SD fail\r\n"); } printf("before ui_init\r\n"); ui_init(); printf("after ui_init\r\n"); while (1) { uint32_t delay = lv_timer_handler(); if (delay > 1000) delay = 10; osDelay(delay); }} I have placed the buf address in AXI SRAM and confirmed that the addres
HiI recently received a NUCLEO-WB55RG (the big board, not the USB dongle) and tried installing the demo from the STM32CubeWB repository.I saw that I need to flash the FUS + Stack first which I did. STM32CubeProg reports FUS State: FUS_IDLEFUS Status: FUS_NO_ERRORFUS Version: V2.2.0.0STACK Version: V1.24.0.3STACK Address: 0x80D0000FUS Operator: v3.1.0The files I flashed were:STM32CubeWB-master\Projects\STM32WB_Copro_Wireless_Binaries\STM32WB5x\stm32wb5x_BLE_Stack_full_fw.binSTM32CubeWB-master\Projects\STM32WB_Copro_Wireless_Binaries\STM32WB5x\stm32wb5x_FUS_fw.binAs application I chose the p2pServer applicationSTM32CubeWB-master\Projects\P-NUCLEO-WB55.Nucleo\Applications\BLE\BLE_p2pServer\Binary\BLE_p2pServer_reference.hexWhen I disconnect the SWD Interface and press the reset button I get the following output (nothing else):Wireless Firmware version 1.24.0 Wireless Firmware build 3 FUS version 2.2.0 >>== SHCI_SUB_EVT_CODE_READY >>== SHCI_SUB_EVT_CODE_READY - FUS_FW
Currently we are developing an AI Industrial camera using STM32N6570, we are exploring the compatible SPI Flash for the implementation. Could you share your recomendation of 1Gb Octal SPI Flash.
Hello,I have encountered a critical issue regarding the USB OTG peripheral FIFO allocation during the static initialization phase (before calling HAL_PCD_Start() ).The Issue:If I resize the Rx/Tx FIFOs twice with the sequence of "Large Size first, then Small Size", the Endpoint 0 (EP0 IN) completely fails to transmit any data (it freezes/stalls) after the hardware starts.Scenario A (Works perfectly): Set Rx FIFO to 0x100 (Words) ➡️ Set Tx FIFO 0 to 0x16. (Single configuration works). Scenario B (Fails completely): First call: Set Rx FIFO to 0x100, Tx FIFO 0 to 0x16. Second call (immediately after): Set Rx FIFO to 0x25, Tx FIFO 0 to 0x16.Result: EP0 IN never transmits any packet afterward.My ultimate goal is to dynamically reconfigure and shrink the FIFO layout at runtime when receiving the SET_CONFIGURATION request from the host, allowing the device to adapt to different configurations
I recently download and installed the latest version of STMCube Programmer and I see that the Signing Tool is now gone. In its place is the STM32 Trusted Package Creator. Unfortunately, support for the STM32N6 appears to be missing. Where may I find the old signing tool?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.