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
I have a project which can pass the flash test while starting address is at 0x08000000. After changing the starting address to 0x08008000, the flash test failed. I have made the following changes: 1. main.c // #define TEST_ROM_START_ADDR 0x08000000U #define TEST_ROM_START_ADDR 0x08008000U 2. system_stm32f4xx.c #define USER_VECT_TAB_ADDRESS #if defined(USER_VECT_TAB_ADDRESS) /*!< Uncomment the following line if you need to relocate your vector Table in Sram else user remap will be done in Flash. */ /* #define VECT_TAB_SRAM */ #if defined(VECT_TAB_SRAM) #define VECT_TAB_BASE_ADDRESS SRAM_BASE /*!< Vector Table base address field. This value must be a multiple of 0x200. */ #define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. This value must be a multiple of 0x200. */ #else #define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field. This value must be a multiple of 0x200. */ //#define VECT_TAB_OFFSET 0x00000000U /*!< Vector T
Hello ST experts,I’m working with an STM32WLE5CC using the LoRaWAN stack in STM32CubeIDE. Even though AU915 is selected as the active region, the device always transmits on the default sub-band AU915_CH0_7, while my gateway is configured for AU915_CH8_15.UART log example:###### AppKey: F1:11:B1:A0:A5:CE:4A:4C:1E:3B:E3:46:94:ED:8F:56###### NwkKey: F1:11:B1:A0:A5:CE:4A:4C:1E:3B:E3:46:94:ED:8F:56###### AppSKey: 2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C###### NwkSKey: 2B:7E:15:16:28:AE:D2:A6:AB:F7:15:88:09:CF:4F:3C###### DevEUI: CB:59:4B:0E:2D:2F:9D:D5###### AppEUI: 40:20:93:67:C4:C4:5F:AF###### DevAddr: 06:6A:AA:FE0s029:TX on freq 916600000 Hz at DR 20s401:MAC txDone5s384:RX_1 on freq 927500000 Hz at DR 105s433:IRQ_RX_TX_TIMEOUT5s433:MAC rxTimeOut6s396:RX_2 on freq 923300000 Hz at DR 86s461:IRQ_RX_TX_TIMEOUT6s461:MAC rxTimeOutThe node never receives the Join-Accept because it is transmitting on the wrong sub-band.Question:Where do I configure the AU915 sub-band so that the stack use
The controller on the board is erased via STM32CubeProgrammer.At the same time, the multimeter shows 1V on pin PC3 CN7:37 relative to GND CN7:8. How can this be?
There appears to be mislabeling of PINs PC0 and PC1 on the MB1779B schematic pack. found here on sheet 3 of 8. The PC0 and PC1 pins are mislabeled as UART1s but according to the datasheet for STM32WL5MOC they are actually LPUART1 as Alternate AF8.
I am trying to convert the G491re openbootloader example to the F413 mcu. I take it that everything that needs to changed is in the openbootloader_conf.h file. I believe I have the correct map configuration as shown below, but I am confused as how I figure out how to define the parameters at lines 74 and beyond. Are those just command codes? Also, how does the bootloader know there is only 1 bank instead of 2 like in the example?/** ****************************************************************************** * @file openbootloader_conf.h * @author MCD Application Team * @brief Contains Open Bootloader configuration ****************************************************************************** * @attention * * Copyright (c) 2019 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 i
I'm using a custom board with an STM32WB5MMG acting as an SPI slave. The board should receive data frames from a master via SPI, and send them to the computer via BLE. The SPI works fine, but as soon as the BLE advertising starts, the SPI reception breaks. I'm using SPI1 with a circular DMA to identify terminators of single data frames sent by the master. I've already tried 2 configurations:a circular DMA 1024 bit large, the HAL_SPI_Receive_DMA called in the while(1) and data parsing in the while(1);a normal DMA, the HAL_SPI_Receive_DMA is called in the HAL_GPIO_EXTI_Callback when CS goes low and data parsing in the HAL_SPI_RxCpltCallback.My hypothesis is that the BLE introduces a latency on the CPU that causes the SPI reception to be slower than the transmission from the master, that causes mis-alignment of data frames, which means that the terminators are not identified anymore. Is this possible?Also, a weird thing that I noticed, is that as soon as the terminators are
Dear ST community,I have a custom board with small external NOR flash MX25U1632F connected to STM32H573. I have written a custom external flash loader for this device. The loader works, for example, from stm32cubeprogrammer gui, and can read the external flash memory, and erase sectors.My problem is during secure manager provisioning. I have built a sfi package using the provisioning.py --sfi-gen script provided in the x-cube-sec-m-h5-v2-1-0.zip.During provisioning, initially, the device is in OB_PROD_STATE_OPEN state. Here, the sector erases complete successfully. With -vb=3 logging enable in STM32_Programmer_CLI:2025-11-26 16:42:28,808 - DEBUG - Init flashloader...2025-11-26 16:42:28,809 - DEBUG - halt ap 12025-11-26 16:42:28,811 - DEBUG - w ap 1 reg 0 R0 0x000000012025-11-26 16:42:28,812 - DEBUG - w ap 1 reg 1 R1 0x000000002025-11-26 16:42:28,813 - DEBUG - w ap 1 reg 2 R2 0x000000002025-11-26 16:42:28,814 - DEBUG - w ap 1 reg 3 R3 0x000000002025-11-26 16:42:28,815 - D
Hello,I am currently working with STM32G431RB, and I have an SD card connector on my board. When the CPU clock is below 80MHz, everything works fine. However, when I increase the clock frequency and insert the SD card into the slot, the program crashes and gives different hard fault errors (stack overflow, bus hard fault, etc.). This is the SD card slot schematic.
Hi there.I’m trying to generate a 12 ns pulse for a time-of-flight (ToF) application.I’m using an STM32U5 microcontroller, and I’d like to know whether one of the general-purpose timers (TIM2/TIM3/TIM4/TIM5) can produce a pulse that narrow. With a 160 MHz timer clock, the time resolution is about 6 ns, so in principle it seems feasible, but I may be overlooking something.Thanks!
How can I build the M33TD Yocto images from sources?stm32mp2-m33td-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11 I managed to build the A35 flavor following this excellent summary:Solved: stm32mp257f-EV1 yocto - STMicroelectronics Community But now I would like to do the same for the M33TD boot mode. My board is a STM32MP257F-EV1
I'm trying to install ./SetupSTM32CubeProgrammer-2.21.0.linux -q But it just keeps failing or waiting for user response. Its not quiet if it asks for interaction. Moreover I have a tried a varfile but it expects a specific format (XML? Schema?)I can't find any documentation on how to install this without user interaction. Can anyone help or point me to the documentation? Thank you
I made a new project by importing an .ioc file. When the project opened/created, I was introduced into pinout view of the MCU.While I was there, the software (Stm32CubeIDE) got updated, asked me to restart to finish the update.I accept the restart.After the restart, I open my projectIf I double click my .ioc file, it just opens the file with txt editor:I do not know how to enter pinout view again.Obviously, I have tried looking on all the tabs/options, right clicking everywhere. It should be something easy, I just missed it.STM32CubeIDE Version: 2.0.0 Build: 26820_20251114_1348 (UTC) (C) 2025 STMicroelectronics ALL RIGHTS RESERVED
Hello,I came across an old book in a bookstore that has some interesting bare metal C projects for a NUCLEO-F030. Other than setting the clock speed to 80 MHz and adjusting for some pin variance, will code written for it run on a NUCLEO-F3 or -F4?Thanks.
Hi,I need to write the same kind of NDEF data to ~20 different NFC stickers placed on a panel. The idea is to have ~20 small antennas, select one at a time, and write to the sticker sitting above that antenna.Questions:Can I do this with X-NUCLEO-NFC12A1 + STM32 by multiplexing the RF path (switches/decoder → select 1-of-20 antennas)?Any recommended switch/multiplexer parts or reference designs for 13.56 MHz?What are the practical limits on antenna count and cable/trace length when switching like this?Do I need individual tuning (matching caps) per antenna position?Is there a better Nucleo shield for this use-case (e.g., higher RF drive) or is NFC12A1 enough?Goal: operator chooses pad 1…20, we write an NDEF, verify, then move to the next pad.Kindly advise—example schematics/app notes or code pointers would be great.Rgds,Rp#stm32 #nfc #x-nucleo-nfc12a1 #antenna #multiplexing #ndef
Setup:TouchGFX v4.23.0STM32H747Scroll wheel with selected item template Issue:I dynamically set the number of items in the scroll wheel using the function setNumberOfItems() so in the TouchGFX designer I set the Number of Items to 0. As an example, I am displaying 4 items but have 8 to choose from. When the scroll wheel is first shown, the first 4 items (index 0 - 3) are rendered correctly. When I push down, the screen correctly shifts and shows items 1 - 4. When I push down again, the first item (index 2) is shown in the first, selected position and is shown in the 4 position as well. As I continue to navigate down in the list, sometimes there are other duplicates, sometimes the list is correct. Workaround:I tried a few different things but setting the Number of Items in the designer to 2 (I didn't try any other value) solved the duplicate glitch. So it seems, that having the Number of Items set to 0 is what causes this issue in t
I’m using the Class B Flash self‑test on an STM32F407. My post‑build step injects CRCs with: STM32_Programmer_CLI -sl Firmware.elf 0x08000000 0x08100000 0x400 I Inspected the CRC of the first section via arm-none-eabi-objdump -s -j "CRCs area" Firmware.elf | head -n2 After this I re‑computed the CRC to verify which method it used. I used srec_cat and I used the following method: arm-none-eabi-objcopy -O binary Firmware.elf full_flash.bin dd if=full_flash.bin of=region.bin bs=1 count=1024 srec_cat region.bin -Binary \ -CRC32_Little_Endian 0x400 \ -crop 0x400 0x404 \ -output - -binary \ | hexdump -e '1/4 "CRC32: 0x%08X\n"' After this I figured out that the CRC checksum stored in the memory for the first 0x400 section matched with the srec_cat output. However at runtime, when STL_SCH_RunFlashTM() (compiled with both -DSTL_SW_CRC and without it) computes the CRC over the exact same 0x400 bytes which is different than the expected value. As a result,&n
I'm trying to implement the ADC to get V_BAT. I've done the set up in CubeMX in the IDE.I then went to the examples to see how a single ADC reading was done. I'm confused about the use of the following variables... /* Variables for ADC conversion data */ __IO uint16_t uhADCxConvertedData = VAR_CONVERTED_DATA_INIT_VALUE; /* ADC group regular conversion data */ /* Variables for ADC conversion data computation to physical values */ uint16_t uhADCxConvertedData_Voltage_mVolt = 0; /* Value of voltage calculated from ADC conversion data (unit: mV) */ /* Variable to report status of ADC group regular unitary conversion */ /* 0: ADC group regular unitary conversion is not completed */ /* 1: ADC group regular unitary conversion is completed */ /* 2: ADC group regular unitary conversion has not been started yet */ /* (initial state) */ __IO uint8_t ubAdcGrpRegularUnitaryConvStatus = 2; /* Variable set into ADC interruption callback */ In the rest of the example code these are used as
Hello,Why is there a significant difference between the values obtained through the ADC and DTS for the internal temperature measurement of STM32H563?Below is the measurement program of ADC. The following is the measurement procedure of DTS. 3. Here are the measurement results. They vary significantly. Why is that?Thank you for your help.
Hello,It's been two years since version 1.14.1 (everything was fine there) – is it really that hard to remove these white scrollbars? It's impossible to use STM32CubeIDE...BR
Hello everyone. This is my first post so pardon me if I do something wrong. I have a custom made board with STM32H7S7 MCU and external NOR Flash. Since it is some cheap chinese IC from LCSC I had to make my own External Loader. I didn't use the generated ExtMemLoader project from CubeIDE because it seemed too complex, was hard to understand how it works and mainly it didn't worked at all. I made the external loader with help of some YouTube videos and forum posts. Writing, reading and sector erasing works fine (though I have a problem to erase more than one sector at once) but only if I pull the BOOT0 pin HIGH, so my undestanding is that when BOOT0 is LOW the code in internal flash is executed and intializes the system and some peripherlas so if external loader tries to do the same then some conflict occurs. I have a limited options when debugging the external loader (I am using LED blinking to signalize at which part it breaks) but I found out the code execution won't get p
When I create a new GPIO port configured as OUTPUT in STM32CubeMX, the pin definitely exists on my board. However, after I click Generate Code, the new pin configuration does not appear in main.c (for example, I don’t see the initialization code for that pin in MX_GPIO_Init()).Why does this happen? I tried to investigate but couldn't find the reason.My STM32CubeIDE version is 1.19.0.The MCU I am using is STM32G071RBT3, and the specific pin I am trying to add is GPIOD pin 3 — but I also don’t see any other newly added pins in the generated code. None of the new GPIO ports appear after code generation. THANKS
Hi everyone,I am using the IHM07M1 inverter board to run a PMSM motor, and I need to measure the phase current using the low-side shunt resistor. Currently, I configured the ADC in injected mode and trigger it from a timer event on the falling edge of the PWM.I have a few doubts:Is triggering the ADC on the PWM falling edge the correct method for accurate low-side current sampling?Since current flows through the low-side shunt only when the low-side MOSFET is ON, should I trigger the ADC only during the low-side ON time, or is it valid to sample at any moment in the PWM cycle?I am using Timer1 with 3 channels for PWM generation, and Channel 4 (CH4) as a compare channel to trigger the injected ADC.What value should I assign to OCxREF4 for correct sampling timing?I’m confused about how to choose the right compare value inside the PWM period. If anyone has experience with this setup, please share your guidance. Thanks!
Good morning.I'm still trying to develop in STM code.I have an open-source code developed for the STM32L476.Questions:If I generate a compiled HEX for the STM32L476, will it run on the 411?Are they compatible?Is it possible to migrate to an STMF303 or an STM32F411?These are the ones I have to continue developing my studies.I still don't have enough knowledge.I've been trying to adapt it to the various available STM controllers.Thank you.Valter Matos
Hi,I am evaluating ESDCAN24‑2BLY for long-term reliability in CAN application. The datasheet specifies peak pulse ratings, but I could not find continuous power dissipation / power-cycle lifetime data.Could you provide any internal test results or recommended derating guidelines for continuous or long-term operation?Thanks & regards,Aravind R
Hi everyone. I am relatively new to working with STM32 devices, and I am currently attempting to design a USB microphone with an analog input using the Nucleo-L476RG development board in combination with the X-NUCLEO-CCA02M2 USB audio expansion board. To configure the system parameters in STM32CubeIDE, I followed the procedure described at the following reference: STM32F4 USB microphone | Details | Hackaday.io. Using this configuration, the computer successfully recognizes the device as a USB microphone; however, no audio data is being transmitted. I have attached the relevant configuration files—usbd_audio.c, usbd_audio.h, and main.c—in case someone might help identify any mistakes or oversights in my implementation. The analog signal is acquired through a single ADC channel using DMA with interrupt callbacks. The USB audio streaming is configured for a sampling rate of 48 kHz, and Timer 8 is used to trigger the ADC conversions. Any assistance or guidance would be greatly appreciated.
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.