Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi all,we are designing a product based on a STM32U083. The device is battery powered (not removable) and it can remain in storage for at least 2 years. To reduce battery drain we are putting the mcu in shutdown mode to then wake him up via a button connected to one of the defined wakeup pin. We already implmeneted/tested this mechanism and it works great but we were asking ourselfs if it is reliable and if it will still work correctly even if the device remain dorment for 2 years.Can you please provide some confirmation or additional information about our concernings? Thank you.Stefano
We are implementing a software-driven OTA update system using TouchGFX and a 64MB external QSPI flash. We store the following asset sections in QSPI:ExtFlashSectionFontFlashSectionTextFlashSectionThese are bundled into an ExternalFlash.bin asset file, which should be shared between firmware partitions (A/B). Since the data contains only static assets, it must remain bank-independent for OTA to work properly. Problem:In the generated TypedTextDatabase.cpp, the following array is incorrectly marked with TEXT_LOCATION_FLASH_ATTRIBUTE:TEXT_LOCATION_FLASH_PRAGMA const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[] TEXT_LOCATION_FLASH_ATTRIBUTE = { typedText_database_GB, typedText_database_ESP };This array is placed into TextFlashSection, which is part of ExternalFlash.bin. However, the array contains pointers to other flash-resident data (typedText_database_GB, etc.), which are already placed correctly in TextFlashSection.Storing the array itself in flash causes a
CubeIDE, P-Nucleo STM32WB55 I have a BLE project that works, it sends data from 2 temperature sensors & 2 accelerometers (x, y & z for each)Within Cube I copied the project then pasted with a new name.Added some code to take 1000 samples of the accelerometer data and calculate the mean for each axis on each sensor. That's the only addition to the code, everything else is exactly the same.Compiles & gets on the board with no issues.Check the serial debug, all senors up & running, averaging is working just fineThe device just doesn't show up when scanning BLE devices. Revert to previous project & there it is advertising as it should. reflash.... nope no such device.What's going on there?
Hi, I am working on a project with the STM32H730. In order to make full use of the onboard memory I have the project set up to load some objects into DTCMRAM. This works, however the binary size is huge, like 403 MB, and subsequently is crashing cube programmer:It seems like something is going wrong here and a huge amount of unnecessary information is getting stored in the binary file. Can you recommend a way to fix this while still using DTCMRAM for data?Here is the DTCMRAM section of my linker file, and how I am allocating objects to DTCMRAM:/* Define output sections */SECTIONS{ /* The startup code goes first into FLASH */ .isr_vector : { . = ALIGN(4); KEEP(*(.isr_vector)) /* Startup code */ . = ALIGN(4); } >FLASH .dtcm_ram : { . = ALIGN(4);_sDTCMData=.; *(.dtcm_ram) .=ALIGN(4);_eDTCMData=.; /* create a global symbol at
HiI am trying to perform a secure boot implementation in STM32F439ZIT6. The datasheet shows that, there is Hash, RNG, AECS and TDES. Can I perform secure boot functionality using only STM32F439ZIT6 without using any external chip and if so, are there any library files which contain functions to perform this secure boot operation and is there any application notes, example codes or videos I can refer to perform this functionality? Thanks and Regards@avbST
Hello! I'm coding board based on STM32 C031C6T6. Everything works fine except EXTI interrupts - it doesn't fire. I use PB5, PB6 and PB7 for buttons. I checked signals on hardware - it's ok, I can register falling edge. I use external pull-up. I use CudeIDE 1.19.0. main.c code: /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2025 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 ------------------------------------------------------------------*
So I am new to STM32 , what I want to implement is to receive large data(preferably over 1MB) which is greater than the size of receive buffer of UART so how should I proceed with it. Since the data I am receiving is in the form of hex, I also have to program the flash using the same data.
I've tested the OOB function using 2 BLE MCU WBA54,case 1, one provide the OOB data then send to the other case 2, both proved the OOB data then send to each other 2 cases are OK, pairing success and bonded.OOB data provide use:ret = aci_gap_set_oob_data(0x00, 0x00, 0x00, 0x00, 0x00, 0x00);ret = aci_gap_get_oob_data(0x01, &addtype, address, &len, random);ret = aci_gap_get_oob_data(0x02, &addtype, address, &len, confirm);OOB data set use:ret = aci_gap_set_oob_data(0x01, addtype, address, 0x01, 16, random);ret = aci_gap_set_oob_data(0x01, addtype, address, 0x02, 16, confirm); There is a problem when I want to use OOB pairing with IOS, for IOS cannot provide OOB data or force OOB pairing request, now the only possible way is WBA54 provide the OOB data and send to IOS and also force OOB pairing feature. But when WBA54 only provide OOB data, it seems that it cannot trigger the OOB in SMP pairing feature exchange.I've tested that the OOB f
This is a very basic question.I built a custom board using the STM32L433.After applying power (+3.3V), I checked the NRST pin state, but it did not reach the default voltage.Could you please tell me any possible causes?For reference, I have confirmed the STM32L433's power pin is at +3.3V. I have also confirmed the clock oscillator is operating at 4MHz.Thank you in advance.
Hi,Master:MCU: STM32H743IIQuestion:I configure the MPU for RAM as follows:mpu_set_protection( 0x24000000, MPU_REGION_SIZE_512KB, MPU_REGION_NUMBER1, MPU_REGION_FULL_ACCESS, MPU_ACCESS_SHAREABLE, MPU_ACCESS_NOT_CACHEABLE, MPU_ACCESS_NOT_BUFFERABLE); I found that an unaligned access fault is triggered at the location shown in Figure 1. The address shown in Figure 2 is within the MPU configuration range shown in Figure 3, but I do not understand why the fault is triggered.Thank you very much!
Hi,I have been trying to connect PSRAM and NOR FLASH to STM32H563 nucleo board using Dual-Quad-SPI.I was able to successfully read/write to PSRAM and NOR Flash individually in single-Quad-SPI mode with base address 0x90000000. i'm not clear how the addressing is taken care, when we connect both PSRAM and NOR Flash in dual-Quad-SPI mode.
Hello,I am working with Nucleo-STM32U385RG to implement the Root of Trust (Secure Boot) feature, following the wiki guide: https://wiki.st.com/stm32mcu/wiki/Security:How_to_start_with_OEMiRoT_on_STM32U3My test environment is STM32Cube_FW_U3_V1.2.0.During step-by-step testing, I faced two issues that I need help with:.(1) OEMiRoT_Boot build error (postbuild.bat)When I build OEMiRoT_Boot with EWARM IAR v9.32 + STM32U3 patch, the build finishes but throws an error during the postbuild.bat step.The wiki doesn’t explain anything about postbuild in this step.Still, I got a binary file, so I could continue the flow.https://wiki.st.com/stm32mcu/wiki/Security:How_to_start_with_OEMiRoT_on_STM32U3#OEMiRoT_Boot_firmware_compilationFor comparison, I also tried with STM32H5 OEMiRoT_Boot build, but I encountered a very similar error: https://wiki.st.com/stm32mcu/wiki/Security:How_to_start_with_OEMiRoT_on_STM32H573_and_563%E2%80%93TrustZone_enabled#STM32CubeFW_provided_code_compilation 
HiI notice STM32CubeExpansion_Audio_V1.1.1\Middlewares\ST\STM32_Audio\Addons has many dsp libs without source code . And it hasn't been upgraded since 2018.Can St provide source code of these libs for reference?
I've got a Nucleo STM32L476 board and noticed in the STMCubeF4 Repo the demonstration for the Adafruit TFT 1.8'' with Joystick and SD Card reader.I've found this quite interesting and ordered the Adafruit shield. Unfortunately I've got the Adafruit shield v2 that is using the so called Seesaw chip as and interface for the shield.The demo example from the repo doesn't work with this v2 shield and it's hard to find any example that could be used to modify the demo to get the v2 shield running.Did anybody has the same experience and could help here? Will ST work on a new version of the demo to support v2 as well? ThanksBernhard
I am trying to compile in stm32h753xx.h into a project. It has a number of lines like this:#define SPI3 ((SPI_TypeDef *) SPI3_BASE)I am getting this error on that line:In file included from ../src/libraries/CMSIS/Device/ST/STM32H7xx/Include/stm32h7xx.h:124, from ../src/rt-arm/STM32F4/i2cComm.hh:17, from ../src/rt-arm/busses/i2c.cc:12: ../src/libraries/CMSIS/Device/ST/STM32H7xx/Include/stm32h753xx.h:2510:30: error: 'reinterpret_cast<SPI_TypeDef*>(1073757184)' is not a constant expression 2510 | #define SPI3 ((SPI_TypeDef *) SPI3_BASE) | ~^~~~~~~~~~~~~~~~~~~~~~~~~~ ../src/rt-arm/STM32F4/dma.hh:178:64: note: in expansion of macro 'SPI3' 178 | plate<> struct dma_perph<1,0,0> { enum {addr = (uint64_t)(&SPI3->RXDR)}; }; //"SPI3_Rx" | ^~~~Other lines like that one also get a similar error. What I don't understand is that the SPI3_BASE is a constant and therefore I would think everything in ((SPI_TypeDef *) SPI3_BASE) would be considered a constant.&n
Hello all, MCU: STM32H733ZG I am facing issue as i am trying to jump from bootloader to the Application code which is located in the SDRAM. In the bootloader stage when the MCU receives the binary from OTA it is stored inside the External Flash. After receiving the binary image and storing it inside the External Flash, the image is copied from External Flash inside the SDRAM and then jumps to the application code. When it jumps to the application code, i open disassembly view and it starts running instructions stored inside the SDRAM until it reaches a specific address `0xC000150E` which is inside the `SystemInit` function. After calling the instruction at this address the disassembly closes up and a text of can not read register at `0xDEADBEE` appears. When checking the line located at this address and commenting that line which is this the problem persists at the same address of `0xC000150E` even though the previous line was commented out. It always crashes at this
Hello all -I am attempting to upgrade an old design from an STM32f4 device to an STM32h753 device. The old design used the STM32_USB_OTG_Driver. It seems to appear that the OTG driver no longer exists for the STM32h753. Any ideas about how to upgrade the code to use the new processor with this driver issue in mind?Thanks,John
Hello, I am working with the FDCAN peripheral on the STM32N6 Nucleo Board. While logging all received and transmitted messages, I noticed that some messages are received twice. Is there a specific reason for this behavior? Should I introduce a delay before reading the RxFIFO again? Thank you in advance for your support. Best regards,Guillermina
When I try to build the firmware for a L011D4 (16kB flash/2kB RAM) I get an "section `._user_heap_stack' will not fit in region `RAM'" and "region `RAM' overflowed" error even on an empty project (empty Arduino setup() and loop() functions).What do I need to do to get around this? I can't believe an empty project already fills up 2kB of RAM just for the Arduino core. If there really IS something using that much RAM, how could I find out what it is? I know there's also the ldscript.ld file, but I don't dare yet to change anything there, because I don't know what I'm doing ;) .In the end the MCU should just react to two buttons, control two LEDs, read two ADC channels and control a PWM output based on that. I also need a calibration value, which is why I chose the L011D4 in the first place (it's one of the few with an EEPROM). The L011D4 should be plenty for that. My project is configured as follows. I am using Visual Studio Code with platformIO for all my MCU (STM32, AVR,
Are there any plans to make a Linux version of the Motor Control Workbench.
Hi Team,I have design for the custom inverter for the STM32G4A1VET6 controller and motor driver is Infineon.custom board is designed and the while generating the code getting error as "1.4.0psdc: PSDC Version is not supported"while I tried to download this package manually couldn't download showing error "FP-SNS-STBOX1" support package.
I'm working with an STM32WB55 Nucleo board and encountering a strange issue. My project uses an SPI display and an I2C accelerometer, along with BLE.When the board is powered via the ST-Link/USB, everything works perfectly: the BLE functions, the onboard LEDs toggle, and both the SPI display and I2C accelerometer work as expected.However, when I try to power the board from a Nordic Power Profiler Kit (PPK) and remove the jumpers as instructed to isolate the ST-Link (see attached image), the SPI display and I2C accelerometer stop working entirely. The BLE and LED toggling functions continue to work correctly, which is puzzling.Why would the peripherals fail in this specific power configuration, while the rest of the code continues to run? Any insights into what could be causing this are greatly appreciated.
Hi everyone,I’m working with the STM32C011F6U6 in my design and would like to flash it using the system bootloader (USART1 on PA9/PA10 as described in the datasheet).Before finalizing my design, I ordered the MB1684B board with the STM32C011F6U6 to test this.However, I’m struggling to get the MCU into bootloader mode. It seems like the device never enters the system bootloader at all.Here’s what I did:I previously flashed a simple LED blink program, which works fine.I connected a push button to the BOOT0 pin (pressing the button ties BOOT0 to VDD).While holding BOOT0 high, I pressed the NRST button to reset the MCU.After reset, the LED is still blinking, which suggests the code in flash is running, not the system bootloader.On my NUCLEO-L412RB-P, doing the same BOOT0 + reset sequence works correctly and I can flash via UART. I assumed the STM32C0 family would behave the same, since the boot mode section in the datasheet looks similar.Why does the MB1684B (STM32C011F6U6) not enter the s
Hi Team, We are running into a problem on TouchGFX (v4.25) on configuring our 480x272 display on the above discovery board I mentioned. We want to configure a text box and display this color I attached below. We found that the RGB we have is RGB565 and we may need RGB888. But I do not see any difference even after the change in this configuration. We want to understand if it is really possible to achieve this color or is it a limitation of the board selected?This information will help us to choose this controller for our further development or choose other products to achieve this. Looking forward for your response as soon as possible. Thank you so much.Changed config:
I've created a project for my Nucleo MB1404 - STM32HM563ZI board which uses USART2 and USART3 to send and receive data to a computer. I've just configured both UARTS in the same way with the same parameters with STM32CubeMX. The USART3 works without problems ( can send and receive data),that is the UART connected to the onboard debugging microporcessor which implements a USB virtual COM and the debugging functionallities. The problem is with USART2. I connected a "FTDI like" device that connects and converts the USART2 lines to a virual COM through USB in the computer. I can send bytes from the nucleo board to the computer and read them in the terminal software, but when I send data from the terminal software to the board I get HAL_TIMEOUT and can't read it. If I check the state of the USART with HAL_UART_GetState(&huart2); I get HAL_UART_STATE_READY. I keep calling HAR_UART_Receive(... ) in a while for 20 seconds but it reads nothing, I only getTIMEOUT.uint8_
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.