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 creating project in STM32 StellarStudio for SR5E1. But the Makefile might be running using ARM GCC. How can I make the project compile using GHS compiler?
Are there any plans to upgrade STM32CubeIDE to include support for C23?It would be nice to have as it brings things like constexpr in, which makes the use of constants much better as they are subject to compiler checking and can call (constexpr) functions.
Hello Community,I have been involved with embedded Rust since 2020 and I noticed most tutorial, examples, dev boards are targeting the ESP32 processors. This made no sense to me outside of the hobbyist community. I got contacted over a year ago by Manning Publishing about writing a book on Embedded Software with Rust. I decided that I should use STM32 based boards for my examples. The book is now in early release on MEAP (Embedded Software with Rust - David Cabanis). The idea of MEAP is to engage with the early adopters to get feedback to improve the final product (paper book).I was hopping that some of you might want to take a look and offer me some feedback on how to improve the content. You can see the details of the content on the landing page and the Chapter 1 is freely available. Thanks in advance for any of your feedback. It will contribute to the adoption of Rust and put forward STMicroelectonics products in this context. Kindly, David.
How can I debug an STM32N6 project when using a load-and-run configuration? CubeMX generates two separate projects, and I’m able to debug each one individually when the BOOT1 pin is set high. However, it seems that if I only debug the application project, the FSBL never executes, so the system clocks aren’t initialized. What’s the correct approach to debugging both projects together?I came across a debugging guide, but it only applies to the XIP configuration.
Hi everyone, I am facing an issue with an STM32U5 regarding the entry into STOP3 mode after a production programming cycle using the STM32CubeProgrammer CLI. I use a .cmd script to flash the device. In the script, I use the -c port=swd dLPM mode=UR flags to ensure the first connection during the multi-step programming of several binaries. At the end of the script, I perform a software reset via -c port=swd dLPM -rst. After the script finishes and I unplug the ST-Link, the microcontroller fails to enter STOP3 mode (current consumption remains high, in the mA range). I noticed that if I manually connect with the STM32CubeProgrammer GUI without the "Debug in Low Power Mode" (dLPM) option enabled, perform a software reset, and then disconnect the JTAG/SWD, the device enters STOP3 correctly. It seems that the dLPM flag used during the CLI session is "sticky": it sets the DBG_STOP and DBG_STANDBY bits in the DBGMCU_CR register, and these bits persist even after the programmer is physically d
Hi,I am working on STM32MP135 with SGTL5000 codec using ALSA/ASoC.Playback is working correctly:aplay -D default /home/audio/test_audio.wavBut audio capture is failing with Input/output error:root@stm32mp135-comtrol:~# arecord -D hw:0,1 -f S16_LE -r 48000 -c 2 test.wav Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo arecord: pcm_read:2272: read error: Input/output errorCurrent status:Playback works correctlyCodec detected properlyI2C communication seems OK during playbackCapture stream fails immediately after startroot@stm32mp135-comtrol:~# arecord -l **** List of CAPTURE Hardware Devices **** card 0: STM32SGTL5000 [STM32-SGTL5000], device 1: 4400a024.audio-controller-sgtl5000 sgtl5000-1 [4400a024.audio-controller-sgtl5000 sgtl5000-1] Subdevices: 1/1 Subdevice #0: subdevice #0 Device tree configuration is attached below.Questions:What usually causes pcm_read: Input/output error in ALSA capture?Could this be related to SAI RX configuration?Is there
Hi! I'm using a STM32N657 Nucleo Board, and, considering the 1.8 V reference voltage for the ADC, the value returned by the ADC is half of what it should be. For example, for a 1,410 V value in the pin, the reading is 1742. Here is the initialization for reference: static void MX_ADC2_Init(void) { /* USER CODE BEGIN ADC2_Init 0 */ /* USER CODE END ADC2_Init 0 */ ADC_ChannelConfTypeDef sConfig = {0}; ADC_AnalogWDGConfTypeDef AnalogWDGConfig = {0}; /* USER CODE BEGIN ADC2_Init 1 */ /* USER CODE END ADC2_Init 1 */ /** Common config */ hadc2.Instance = ADC2; hadc2.Init.Resolution = ADC_RESOLUTION_12B; hadc2.Init.GainCompensation = 0; hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE; hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc2.Init.LowPowerAutoWait = DISABLE; hadc2.Init.ContinuousConvMode = DISABLE; hadc2.Init.NbrOfConversion = 1; hadc2.Init.DiscontinuousConvMode = DISABLE; hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc2.Init.ExternalTrigConvEdge
Hello everyoneI'm new here, but i have worked on a flight controller unit FCU with those:FMU Processor: STM32H753IO Processor: STM32F103This FCU then connected to a Raspberry Pi4, auxiliary, where run his drone python software, using MAVlink approach for telemetry data and CAN communication and parameters setup;Right nowWe have a (good) software ready, with some wizard working wellBUTwe have an issue with CAN-motors and our STM chips...Is it possibile that those H753 is NOT able to read a CAN motor ,brand new, out of fabric?or betterIs the chip (H753) ABLE to write a NODE ID on a CAN motor, wich is ut of fabric (nodeID=1) to an actual working NODE ID(10,11,12 etc..)?We had this issue....based on your knowledge..The correct way is to use a CAN-USB to "wake up" motors one by one and then connect to FCU?Thank you
Dear all,is it possible to measure the frequency of the 32,768kHz oscillator (external crystal used) at a buffered pin similar to the MOC pin of the STM32 to tune the frequency by the external capacitors? It would be difficult to do this at pin XTAL32k_IN/OUT without influencing the oscillator frequency.Best regards,Peter
MCU : STM32WLE5CCU6STM32CubeIde version : 2.1.1STMC32CubeMx version : 6.17.0Firmware Package Name and Version : STM32Cube FW_WL V1.5.0Application : FUOTA using LoRaWANSetup : End Node(STM32WL) <===> Gateway(Dragino LPS8) <====> TTNHello everyone,Before i step into complicated FUOTA using LoRaWAN, i was trying some custom downlink packets to switch to Class C from Class A.I was successfully able to send uplink packets.I was successfully able to get the downlink packets both confirmed and unconfirmed and glow led's and perform operations.Now i want to send a downlink packet which switches to class c.I have not enabled Additional LoRaWAN packages yet, i figured switching to class c might really don't need this as long as i am calling the correct API'sBasically if i send a downlink packet 0x01 from TTN, the device switches to Class C.For switching to Class C, I am using `smtc_modem_set_class(STACK_ID, SMTC_MODEM_CLASS_C)` which itself doesn't return any erro
Hello!We use the VL53L0X as a time-of-flight sensor on a custom PCB. We used Arduino to configure and read the VL53L0X during development of our embedded system. Now later in development, we find differences between Arduino readings and readings taken from our Linux-based Embedded System (LES). I am investigating what differences exist between our Arduino application used during development and the application running on the LES. While not every sensor is showing shifts in range measurement, the worst case shifts are 6-7mm difference and repeatable.I have collected all I2C communication with the VL53L0X from boot to when we enter the measurement loop for both Arduino and LES hosts. I see some differences and have investigated what I can, but I have a hard time understanding what exactly those differences mean without a register map and descriptions. I understand ST will not provide this information, so I am hoping you can instead provide any insight on my below questions. The
I am developing a custom board using the STM32MP255F-AK.After configuring the kernel via menuconfig, the .config file reverts to its default state for some reason.The custom board settings and device tree are located in `meta-st-stm32mp-addons`.I have already fetched the source code using `devtool modify virtual/kernel`.Run `bitbake -c menuconfig virtual/kernel`ADIN_PHY was set to yThe .config file is saved in the following location:workspace/source/linux-stm32mp/.config.new -> ~/OpenSTLinux/distpkg_ev1/build-openstlinuxweston-stm32mp25 -disco/tmp-glibc/work/stm32mp25_disco-ostl-linux/linux-stm32mp/6.6.48-stm32mp-r1/build/.configNext,I ran `bitbake virtual/kernel`The ADIN_PHY=y setting remained in .configI tried running bitbake virtual/kernel againThe ADIN_PHY=y setting remains in .configI tried modifying the kernel's DeviceTreeI ran bitbake virtual/kernelIt reverted back to “ADIN_PHY is not set.” Also, the build result showed that the ADIN_PHY driver was not included.How can I prev
Hello teachers, I am a developer of the STM32MP157F chip and would like to ask you a question about device tree configuration. Please help me. The version I am currently using is as follows: optee 4.10 uboot 2023.10 linux 6.6 At present, the system startup is stuck in the kernel stage. I have attached the device tree and system startup log. Can you help me analyze the specific reasons? Thank you very much. I've been stuck on this problem for many days。NOTICE: CPU: STM32MP157FAD Rev.ZNOTICE: Model: STMicroelectronics STM32MP157F eval OSTL daughter on eval motherINFO: PMIC version = 0x21NOTICE: Reset reason (0x15):INFO: Power-on Reset (rst_por)INFO: FCONF: Reading TB_FW firmware configuration file from: 0x2ffe1000INFO: FCONF: Reading firmware configuration information for: stm32mp_fuseINFO: FCONF: Reading firmware configuration information for: stm32mp_ioINFO: Using SDMMCINFO: Instance 1INFO: Boot used partition fsbl1NOTICE: BL2: v2.10-stm32mp1-r2.0(debug):()NOTI
Hi there! First of all, thank you for taking the time to read this!!! Any input is welcome. I'm working on a project with a Nucleo-H563ZI board, and did something quite dumb: went and set the PRODUCT_STATE to CLOSED from within some dummy FW, and now I'm stuck. I can see the FW is running (LED task is blinking), but now I can't seem to access the device through Debug Authentication to bring it back to OPEN. When I click on Full Regression STM32CubeProgrammer complains about "Password file not found" Which is more than logical because I did not provide one (you can see on the first image). Since I didn't set any password, I tried passing in an empty file created by running: touch empty.bin And then, it complains with: Is there some way to run a regression? Or do I now have a pretty brick? Thanks in advance!!
How is it with availability, are we updating what was once part of CubeMX? namely STemWin, i.e. the Segger enWIN version that was offered for free for the STM32 processor?I didn't find anything about ST, except that it's not part of newer versions of CubeMX.You can find STemWIN on Segger's website, but they're basically just trying to sell emWIN at a discount.Alternatively, where can I download the latest version of this library?Thank you for the information.
STM32H523CET6 stuck in PRODUCT_STATE=0x17 (PROVISIONING)TZEN=0xC3 (disabled), DA not configured, BOOT_UBE=0xB4CubeProgrammer v2.22, all regression attempts faildebugauth=2 returns: "unable to boot on RSS_DA or is in OPEN mode"After this function it bricked:void LockCode(void) { FLASH_OBProgramInitTypeDef OBInit = {0}; HAL_FLASH_Unlock(); HAL_FLASH_OB_Unlock(); HAL_FLASHEx_OBGetConfig(&OBInit); if (OBInit.ProductState == OB_PROD_STATE_OPEN) { OBInit.OptionType = OPTIONBYTE_PROD_STATE; OBInit.ProductState = OB_PROD_STATE_PROVISIONING; HAL_FLASHEx_OBProgram(&OBInit); HAL_FLASH_OB_Launch(); } HAL_FLASH_OB_Lock(); HAL_FLASH_Lock(); }Edited to apply source code formatting - please see How to insert source code for future reference.
Hello everyone,I am developing a cellular IoT device using STM32L4 + SIM7600G-H 4G module. The goal is to create a highly reliable driver that can handle every possible disconnection, network drop, MQTT event, and recovery scenario without losing data or getting stuck.Requirements:Heavy use of UART DMA (Circular RX buffer + IDLE line detection)Full finite state machine for modem management (Power on → Network → PDP → MQTT → Operational → Recovery)Robust parsing of all URCs (+CMQTTDISC, +CLOSED, registration changes, etc.)MQTT communication with ThingsBoard (telemetry, client attributes, shared attributes, RPC, firmware OTA/FOTA)Reliable reconnection logic with exponential backoff, message queuing during offline periods, and modem watchdog (power cycle on repeated failures)Questions:What is currently the best recommended way in 2026 to implement such a driver on STM32L4?Has anyone successfully used X-CUBE-CELLULAR with SIM7600 series? Is it worth porting, or is it too LPWAN-oriented for
Hello,I would like to request an enhancement to the search functionality in STM32CubeMX's pinout view.Currently, the search works well for exact or partial matches — for example, typing "usart1_rx" highlights the relevant pins. However, it would be very useful to support wildcard characters, allowing searches such as:- usart?_rx — match RX pins across all USART peripherals (USART1, USART2, etc.)- usart1_?x — match both RX and TX on USART1- *art*_?x — match all RX and TX signals on LPUART, UART, USARTThis would be especially helpful on larger packages with many peripherals, where you want to quickly visualize all pins serving a particular role across multiple instances of the same peripheral.The implementation complexity should be low — this is essentially replacing the existing string match with a simple wildcard pattern matcher against the same search index.Thank you for considering this improvement!
Hello, ST experts It is found that USB_D+&USB_D- pins(PA12&PA11) of STM32U595 in our own design are very sensitive to ESD strike. When USBPHY power is not on as reference manual said, I think it is only 3.3V tolerant in this case, but not 5V tolerant, am I right?And in 3.3V tolerant case, what ESD protection way should do? e.g. USBLC6 can be effective? Best RegardsYang
Hello, I have recently received a shipment of STM32F446RCT6 microcontrollers and I need verification of the ST label for quality assurance and production clearance. Could you please assist in confirming if the attached label and packaging details conform to official STMicroelectronics standards? [Photo removed to prevent bulk ID abuse]
I would like to use the board's built-in microphone to display audio data visualization on an LCD screen. I want to add more display modes later, but at the moment I only have basic waveform time domain display.I use the built-in microphone to record audio, which I then convert to PCM using PDM2PCM middleware. However, there seem to be no correlation between the sound and the pcm values. Whether I speak, turn the music on, or do nothing at all - pcm values are about the same.Moreover, every position in the PCM buffer hovers around the same value. For example, some positions are about ~-11000 no matter what, and the other are about ~20k no matter what. So, the audio visualization is almost flat with some random noise.I assume that there is something wrong with how I use the mic or pdm2pcm. The I2S and middleware settingsExample PCM values The code/* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN PV */ /* USE
Hardware: STM32 NUCLEO-WB15CC (STM32WB15CCUX) RTOS: FreeRTOS BLE stack: STM32WB WPAN / BLE via CPU2 (M0+) Hi, When writing a small configuration block (~48 bytes) to the internal Flash from CPU1 (M4 FreeRTOS task), the BLE connection drops immediately. The disconnect event is received on the host side with no prior warning, and the firmware logs a HCI_DISCONNECTION_COMPLETE_EVT shortly after the Flash erase/write sequence begins. The Flash region used is a dedicated 2 KB NVM page at address 0x0801B000 (defined in the linker script as FLASH_NVM): FLASH_NVM (rx) : ORIGIN = 0x0801B000, LENGTH = 2K --- Data Written --- The payload written is 48 bytes (already 8-byte aligned), structured as: [magic: uint32_t (4 B)] [Config_t (40 B)] [checksum: uint32_t (4 B)] The Config_t struct: typedef struct { uint16_t volume_shown; uint16_t client_timeout_ms; uint16_t cup_detection_threshold; uint16_t flow_timeout_forward_ms; uint16_t flow_timeout_backward_ms; uin
Hi Team,I am working on board design using STM32H745 (LQFP176 package), and I would like to confirm the correct external memory selection for my smart kitchen application.Application details:- MCU: STM32H745 (dual core)- Package: LQFP176- USB OTG FS used as HOST to interface a USB camera- Camera usage: Snapshot (JPEG only, no continuous video streaming)- Current: 2MP- Future plan: up to 5MP snapshot- Additional peripherals:- I2S (audio codec interface)- 4× I2C buses- UART / RS485- 2× SPI For external memory, can I use QSPI PSRAM (APS6404L 8MB), or should I use SDRAM via FMC? Please advise which memory type is recommended. Any guidance or recommended reference designs would be helpful. ThanksSathiya
Hi everyone, I’m using MotorControl Workbench with X-NUCLEO-IHM08M1 and NUCLEO-G474RE and browsing through the user manual: file:///C:/Program%20Files%20(x86)/STMicroelectronics/MC_SDK_6.4.2/Documentation/html/pages.htmlIn my project (under the various headings in the left-hand section), there are a few settings that I don’t know how to configure, and I can’t find any explanation for them in the manual. I will list the parameters in question, grouping them by category.1) PWM Generation1a) What is PWM Idle state high side? And low?Should I set them according to what is written in the L6398? If it uses active high inputs for the upper side (HIN) and active low inputs for the lower side (LIN), I think I should set them that way, right?1b) How to set Charge boot capacitor duty and Charge boot capacitor time?I will refer to “AN5789 Considerations on bootstrap circuitry for gate drivers",but I ask you for advice on these two parameters (duty and time)2) Current Sensing2a)
Hello, I was able to successfully implement a way to read motor status and various parameters through UART on putty with my B-G431B-ESC1. However, when I tried following tutorials to add a way to also control the motor status (turning it on and off), I keep getting no response from the motor when I type commands in putty. I don't know if something is wrong with my code or with the way I set up putty, but im leaning more towards the code since the TX part works well. Im quite a beginner with this so maybe its something very ***, but i really cant wrap my head around it. Linked to the post is my main.c. thank you.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.