Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Dear ST Support Team,I am currently working on verifying a LoRaWAN proof of concept using STM32 hardware.My setup consists of a LoRaWAN end node and a gateway connected to the Loriot network server. From the Loriot dashboard, I can confirm that the gateway comes online successfully whenever powered and is in a ready state, waiting for packets.However, my end node has not been able to successfully join the network.I have carefully verified the following possible causes:Frequency configuration (ensured no mismatch between node and gateway region)LoRaWAN region settingsDevEUI, AppEUI (JoinEUI), and AppKey configurationNetwork activation method (OTAA)Gateway operational status on Loriot dashboardAll parameters appear to be correctly configured, yet the end node consistently fails to join.I would appreciate your guidance on:Additional debugging steps to determine why the join procedure is failing.Recommended methods to confirm whether Join Requests are actually being transmitted from the en
DescriptionHello, I am using STM32F411RET and STM32F407ZGT microcontrollers.Using STM32CubeMX, I configure a PWM output on GPIOB Pin 8 using TIM10 Channel 1.After code generation, the following GPIO initialization code is produced: GPIO_InitStruct.Pin = GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF3_TIM10; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); The PWM output works correctly on hardware.However, when full assertions are enabled by defining USE_FULL_ASSERT, an assertion failure occurs inside HAL_GPIO_Init() at the following check: assert_param(IS_GPIO_AF(GPIO_Init->Alternate)); After inspecting the IS_GPIO_AF() macro for STM32F4 devices, I noticed that GPIO_AF3_TIM10 is not included in the list of valid alternate functions, even though TIM10 uses AF3 on STM32F4 devices and is correctly generated by STM32CubeMX.This causes a false assertion failure when using
I'm connecting a 12-Way rotary switch to an STM32G071 as shown:Board room is extremely limited, so I'm using the MCUs built in Pull Ups. However when I read the lowest four bits of PORTD->IDR (for switch positions 7,8,9 and 10) it reads 0xA when it should read 0xF (The rotary is at position 1, so PORTD0:3 should all be pulled up).Cube MX confirms PULL UP is enabled for all switch inputs:The only other peripherals enabled on the chip are DAC output on PA4 and GPIO Output on PA15I have carefully examined the board, and there are definitely no shorts to ground, and the switch it operating perfectly.If I measure the voltage on all the PORTD0:3 pins, all are pulled up to 3.3v except PD0 and PD2, when they should be.Any suggestions?
we are facing after migrating our design from STM32F405ZGT7 to STM32H743ZI.We have an automotive application where a horn load creates significant EMI transients. With our previous design using STM32F405ZGT7, the system was stable and did not experience any MCU freezing or malfunction during horn activation.However, after migrating to STM32H743ZI — while keeping the PCB layout, grounding strategy, power architecture, filtering components, and external circuitry identical — we began experiencing intermittent MCU freezing during horn actuation.After extensive debugging and hardware validation, we observed the following:The issue only occurs when ST-Link is connected.When ST-Link is disconnected, the system behaves significantly more reliably.The noise appears to be injected through the ST-Link interface path.The horn generates high transient noise despite having local snubbers and filtering.We have already implemented:RC snubber across the horn loadEMI input filtering near MCU supplyProp
I have created my secure boot demo project on STM32H563ZI using the link below.https://wiki.st.com/stm32mcu/wiki/Security:How_to_start_with_STM32CubeMX_OEMiRoT_Boot_path_on_STM32H563During provisioning, the secure image is signed by the TPC (STM32TrustedPackageCreator) tool. TPC supports the standard MCUboot signing process: calculating SHA256, generating the firmare image signature TLV (e.g., ECDSA256 0x22) using the specified private key, and adding standard TLVs. All these work just fine with the TPC tool.Now, I need to append a full public key (IMAGE_TLV_PUBKEY 0x02) as an additional TLV into the image. And one more layer of TLV (IMAGE_TLV_ECDSA256 0x22) for the signature of this pub key. Does TPC support custom TLVs by changing its config file (e.g., OEMiROT_S_Code_Image.xml)?I acually couldn't find ways to do that via TPC, so I switched to use imgtool. imgtool sign --key "C:/Work/nucleo_h563zi/Secure/ROT_Provisioning/OEMiROT/Keys/OEMiROT_Authentication_S.pem" --header-s
I noticed two holes at Bottom of the MCU area on the STM32G4 Nucleo board. What is their purpose?
Our current product uses the STM32H533 microcontroller and password based Debug Authentication. We have a need to generate a large number of different DA passwords and corresponding OB Keys provisioning data. This is possible by creating our own tool to generate OB Keys .xml files and passing those into the STM32TrustedPackageCreator_CLI.exe tool, but it would be nice to cut out the .xml files and need to use the Trusted Package Creator tool. Given that the input .xml file contains a 'hash' tag and that output .obk file contains 512 bits of seemingly random data, I suspect this is a SHA-512 of the password, however I cannot manually re-create the same hash. I've attempted padding the password to various different lengths, with various different values, additionally including the additional bytes that are included in the created 'password.bin' file that accompanies the .obk file. What process/data goes into creating the contents of the .obk file? Is
There's a bug in STM32N6 HAL DCMIPP driver function DCMIPP_SetConfig.It only sets capture mode bits for PIPE0 to PIPE2, but does not clear them: /* Set the capture mode */ hdcmipp->Instance->P0FCTCR |= CaptureMode;CaptureMode options are:#define DCMIPP_MODE_CONTINUOUS 0U /*!< DCMIPP continuous mode (preview) */ #define DCMIPP_MODE_SNAPSHOT DCMIPP_P0FCTCR_CPTMODE /*!< DCMIPP snapshot mode */As a result, after having DCMIPP in snapshot mode it is not possible to re-configure DCMIPP into continuous mode using HAL.Workaround is to manually clear CPTMODE bit.
I am using a STM32H747I DISCO board as the target to evaluate the Audio Weaver Designer from DSP Concepts. In order to connect with Audio Weaver, the STM32747I DISCO board needs to be programmed with the Audio Weaver BSP for this board.I need to program my board to connect up with Audio Weaver. I need to get either the binary or the BSP source (or ideally both). I cannot find this anywhere online and could not find it on DSP Concepts website anywhere. From what I can tell each target partner maintains the BSP, so does ST have this?
Hello ST Community,I am using TSD HD Gen4-STM32-43CT-01 display module which has STM32H7S7I8T6 MCU.I am facing an issue where I am unable to connect or disconnect the debugger using MB1440C, while the same debugger works perfectly with other TSD HD Gen4 displays.Debugger setupDebugger: MB1440CInterface: SWDConnections:SWDIO → JTMSSWCLK → JCLKGND → GNDThis setup was working earlier on the same board.What changedThe last firmware flashed was a boot-level application intended to write custom data into external QSPI flash:External Flash: GD25Q127CS (128 Mbit)After flashing this boot code:The MCU is no longer connectable via SWDST-LINK / MB1440C cannot attachPower cycling does not helpObservationsSame MB1440C debugger + same CubeIDE works fine with other TSD HD displaysIssue is specific to this board after boot code flashingI suspect:SWD pins may be reconfigured as GPIOOption Bytes may have been modifiedBoot code may be disabling debug or putting MCU in low-power/reset loopExternal QS
Chip model: STM32H723VGTxBoth the RX and TX buffers are allocated in the D2 domain.1.CubMx settings are correct.2.HAL_UART_Transmit_DMA runs normally on the first run.However, after running HAL_UART_AbortReceive, HAL_UART_Transmit_DMA fails.Tracing the HAL_UART_Transmit_DMA function:The huart->gState value is always 0x33.
I am trying to build a fresh project using STM32CUBEMX to run STM32H750B-DK -FMC-QSPI-LTDCProject is sucessfully build and all the respected files are generated, Now I copy the Linker file from the existing project(Touchgfx Sample project for STM32H750B-DK which is running fine) But after the modification I am getting ExtMem/bootloader.o is not compiled even if I have added the files in the respective directry. arm-none-eabi-gcc "../Core/Src/syscalls.c" -mcpu=cortex-m7 -std=gnu11 -g3 -DDEBUG -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H750xx -c -I../Core/Inc -I../LIBJPEG/App -I../LIBJPEG/Target -I../TouchGFX/App -I../TouchGFX/target/generated -I../TouchGFX/target -I../Drivers/STM32H7xx_HAL_Driver/Inc -I../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I../Utilities/JPEG -I../Middlewares/Third_Party/FreeRTOS/Source/include -I../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -I../Middlewares/Third_Party/LibJPE
HelloI want to create sort of application that transmit and receive messages between 2 STM32F407 DISC0 and echo the transmited and received messages in PC screen(sort of chatbox)any hints how can I do it?and is it easier using USART or SPI?
HelloI'am new to STM32 and i want to create project that interface with user using uart with serial monitori configured usart and used hal_uart tarsnmit function but it didnt work when the tutorial im following worked for himwhat can be the issue?
Hello All, I need some guidance from you. I have a project with an STM32 microcontroller, encoders with push buttons, USB communication (for firmware updates and communicating with a Windows app, etc). MIDI in out communication, digital potentiometers, and digital switches. Can someone help me, please, and take a look at my diagram to correct it before starting to make the prototype board? My experience with stm is really limited. I heard that a lot of decoupling capacitors are needed. Can you please give me some support and point out what I should correc tin the attached diagram? Thank you very much! Alex
I would like to ask for your guidance regarding the motor current setting under a specific torque condition.Based on the motor datasheet,I derived a linear torque–speed relationship and confirmed that, at a torque of 2928.86 gf·cm,the motor is expected to operate at 444 rpm, requiring approximately 6.6784 A according to the calculation.The assumptions and parameters used are as follows:No-load speed: 5000 rpmRated speed: 4000 rpmRated torque: 0.063 Nm (642.86 gf·cm)The derived relationship is:n = A × T + BwhereA = −1.55556, B = 5000At the target speed of 444 rpm, the estimated torque is:→ 2928.86 gf·cmThe required current was estimated using the torque constant calculated from the rated condition:Rated current: 1.7 ANo-load current (I₀): 0.3 AKt = 642.86 / (1.7 − 0.3) = 459.184 gf·cm/AUsing this value, the estimated current is:I = (2928.86 / 459.184) + 0.3 ≈ 6.6784 AHowever, when measuring the same motor using ST Profiler to obtain the Electrical Model and Mechanical Model, the result
Hey, I made a pixracer clone using STM32F427VIT6, it works after i flash it with SWD using CUBE prog. but it wont turn on after a power cycle. the system works fine after flash as long as I don't disconnect power. I have added the schematics. BOOT0 is pulled down with 10k BOOT1 is pulled down with 10k and connected to 3v3 though boot switchnRST is pulled up with 10k to 3v3 I thought its nRST 3v3 stability issue, I manually tied nRST to gnd to keep it In restart mode till 3v3 stabilise , still same behaviour. I also disabled the 24mhz HSE, still the same behaviour, works after fresh flash, dies after power cycle. The schematic is a clone of MRO pixracer flight controller, only difference is I didn't use a power supervisor , instead i pulled nRST to 3v3 with 10k.any inputs are appreciated thanks!
I’m currently working with an STM32F4 series MCU and using UART with DMA for receiving data from an external module.The incoming data packets are variable length and don’t always end with a fixed delimiter. Right now I’m using:HAL_UART_Receive_DMA()Circular DMA modeIDLE line interrupt to detect end of frameHowever, I’m noticing occasional frame misalignment when packets arrive back-to-back with minimal delay.A few questions:Is using the UART IDLE interrupt still considered the most reliable method for variable-length packet detection?Would switching to LL drivers improve timing control significantly in high-throughput scenarios?Are there recommended buffering strategies to avoid data corruption when processing data inside the IRQ context?System details:MCU: STM32F4Baud rate: 115200No RTOS currentlyProcessing happens in main loopAny advice or production-proven approaches would be appreciated.Thanks!
Hello All, Could you kindly provide RoHS, REACH and material declaration certifications for the following ST components: 1. STM32G474MBT62.VL53L1X-SATEL I checked for obtaining these documents through ST Micro e-store but unfortunately 404 error was obtained (Page not found). Kindly help and provide the documents for the same. Requesting for your immediate support.
Hello,I hope someone with more experience with the STM32N6 and ThreadX can help me get an efficient solution.I'm using STM32N6 to communicate with multiple peripheral devices via UART. The protocol they are using to send data however, does not allow me to know what the message is in advance, or how many bytes the received packet would be. I only know the packet ends with 0x0D 0x0A. Other MCUs I've used in the past have some built in Pattern matching in the DMA so the DMA interrupts when a combination of symbols is received (0x0D 0x0A). However I don't see something like that in the STM32N6 HAL. I did a driver using the simple HAL_UART_Receive_IT(huart, &UART2_rxByte, 1); and interrupt on every byte to check if a packet is received, but It is really painful to know CPU time is wasted on entering interrupts when I need it for processing data. Maybe ThreadX can be more efficient with some polling thread? Or I missed some configuration option? What would you suggest?
I'm creating a CANopen protocol, but I'm having a problem with the code. I used two while loops, and as far as I understand, this is preventing me from seeing the data I'm getting from the sensor in the 'live expression' section. Do you have any suggestions?/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2026 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h"
Hi, I have a problem with activating USART bootloader. I use USART1. Please for details about how to going in bootloader mode. Pattern 12 in AN2606 is super complicated for me. I use now boot pin. I put it to GND and power ON . By me MCU going in bootloader mode, software put it with J-link is not started, but STM programmer show : Activating device: KO.Please, verify the boot mode configuration and check serial port configuration. Reset your device then try again.. Please for details how to put in USART1 boot mode.
Hello ST Community,I read in the follow post question about boot sequences for STM32:STM32H7 dual core: How to start with a busy-waitin... - STMicroelectronics CommunitySo, in the post above, I see that is explain the first three Boot order of the Table 8 of the RM0399 (I put this table below), but not the last modality: Both Cortex®-M7 and Cortex®-M4 are booting.My question is: is possible to have a explanation similar to the one in the post above, but refer to Both Cortex®-M7 and Cortex®-M4 are booting?Thanks in advance,Dino
Hello,I'm working on a project where, per SPI channel, I need to:Read voltage from four AD4630, 2x6 bytes read and 2x3 bytes read.Calculate outputSet 4 MAX5719 DAC output 4x3 bytes transferEach of them use separate cs pinI need to handle 3 channels like one described, so the blocking method is not possible. For now, I manage to achieve a 25 kHZ update loop of a single channel update working in a loop, where after triggering MAX5719, I immediately trigger conversion of AD4630 and another SPI transfers.My setup consists of:STM32H755ZIQ, firmware runs on M7 coreI set up a project with CubeMX and then modified the HAL SPI DMA TRANSFER/RECEIVE functions to remove all unnecessary boilerplate codeAccess the chip select GPIO by directly modifying the BSRR registerInlined a bunch of functions related to handling the interruptsEnabled O3 optimizationOptimised/Removed all data processing and focused only on transferMy loop is affected by the transfer speed of the SPI in the following way:12.
Hello,I have a project on STM32WL55 which runs on dual core CM0+ and CM4.When i put it in debug mode using the development board STM32WL55 Nuleo-64 (NUCLEO-WL55JC1), it goes into debug mode without any issue. Both the cores are getting debugged.Procedure : Launching the configurationsLaunch the Cortex®‑M4 configuration to download both the Cortex®‑M0+ and Cortex®‑M4 images.Resume the Cortex®‑M4 core until the C2BOOT bit is set in power control register 4 (PWR_CR4) to enablethe Cortex®‑M0+.Launch the Cortex®‑M0+ configuration using the arrow next to the debug icon. The Cortex®‑M0+ is in therunning mode and the user can halt it after the debugger is started.Now, I want to debug the same code in a customized PC having STM32WL55CCU6. It is not going in debug mode which means it gets stuck here : void MBMUXIF_SystemSendCmd(FEAT_INFO_IdTypeDef SystemPrioFeat) { /* USER CODE BEGIN MBMUXIF_SystemSendCmd_1 */ /* USER CODE END MBMUXIF_SystemSendCmd_1 */ if (SystemPrioFeat == FEAT_
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.