Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
HelloSTM32H7R3L8I have trouble using the circular mode of GPDMA when trying to transmit data over SPI4. When I set the GPDMA channel 12 to be in circular mode, it generates the GPDMA channel init in the msp init file instead of the main file as if it is a linked list. When I try to start the SPI DMA transmit with function HAL_SPI_Transmit_DMA, then I get an error in the following section of the function’s code/* Packing mode management is enabled by the DMA settings */ if (((hspi->Init.DataSize > SPI_DATASIZE_16BIT) && (hspi->hdmatx->Init.SrcDataWidth != DMA_SRC_DATAWIDTH_WORD) && \ (IS_SPI_FULL_INSTANCE(hspi->Instance))) || \ ((hspi->Init.DataSize > SPI_DATASIZE_8BIT) && (hspi->hdmatx->Init.SrcDataWidth == DMA_SRC_DATAWIDTH_BYTE))) { /* Restriction the DMA data received is not allowed in this mode */ __HAL_UNLOCK(hspi); return HAL_ERROR; } However the transmission works fine if the GPDMA was in standard, non circular and n
Hello All,We have made a custom board design with STM32WB55CGU6.But we are struggling to detect the device with STM32CubeProgrammer. I am using P-NUCLEO-WB55's ST-LINK connection to detect and flash the M0 Firmware with STM32CubeProgrammer.SWDIO, SWCLK, RESET, GROUND and Power connections are fine.Could some experts suggest how to go ahead?Thanks and regards,Paul
Hi,I’m working on a project with an STM32G491 board and need to document our firmware-upgrade process.Current setup:Initial flashing is done with ST-Link/CubeProgrammer.Later updates come from an embedded Linux device that runs a custom binary to flash the MCU over UART/I²C.We already have a basic document that covers the application side, but we’d like to add a brief section explaining the MCU-side flashing flow.Does anyone have a flowchart or reference diagram showing the STM32 flashing process—either using CubeProgrammer (ST-Link) or via UART/I²C bootloader—that we could include or adapt?Thanks!
I have a custom board with a 1024x600 display. It works fine.Some demo examples only work in lower resolution. I want to get those to work on my display.I was able to trick TouchGFX Designer to think lower resolutions are supported by changing AvailableResolutions in ApplicationTemplate.touchgfx.part. This sort of works, but you see some objects out of the window. It's wasted rendering time too.By changing pLayerCfg.ImageHeight of the LTDC I was able to get lower vertical resolution work. For instance 1024x300. This way the bottom half is black. Which is good.However, when I change pLayerCfg.ImageWidth to 800 I get garbage. I I set it to 1022 the image is skewed. I also played with pLayerCfg.WindowX0 and pLayerCfg.WindowX1, but it doesn't seem to do anything. #include "ltdc.h" /* USER CODE BEGIN 0 */ #include <gui_generated/common/SimConstants.hpp> /* USER CODE END 0 */ LTDC_HandleTypeDef hltdc; /* LTDC init function */ void MX_LTDC_Init(void) { /* USER CODE BEGIN LTDC_
I have a question about configuring pin D1 for UART1 TX (in conjunction with pin E2, UART1 RX).Pin D1 has the option for PA11, [PA9], PA8Pin E2 has the option for PA12, [PA10], PA71. To use pin D1 for UART1 TX, PA11 must be switched to PA9 (SYSCFG_CFGR1: PA11_RMP: = 1).2. To use pin E2 as PA12, E2 (PA7 default) must be switched to PA12 (SYSCFG_CFGR3: PINMUX4[1:0] = 1).3. To use pin E2 for UART1 RX, PA12 must be switched to PA10 (SYSCFG_CFGR1: PA12_RMP: = 1). Question:What is the default setting for pin D1 (PA11 or PA8)? How is PA11 bound to pin D1? I am missing a setting like (2.) for pin D1. I could not find anything in the manual.When I configure this setting with STM32CubeMX, the following code is generated:HAL_SYSCFG_EnableRemap(SYSCFG_REMAP_PA11); // (1.) HAL_SYSCFG_EnableRemap(SYSCFG_REMAP_PA12); // (3.) HAL_SYSCFG_SetPinBinding(HAL_BIND_WLCSP12_PINE2_PA12); // (2.)Where is the binding for pin D1? Many thanks in advance.Dirk
Hello,I’m working on a custom board with STM32WB15CC, dual-core mode with BLE stack.I noticed an issue related to PESD (Program/Erase Suspend) when CPU2 enters STOP mode.In my application, I call Adv_Cancel(); and this makes CPU2 enter STOP autonomously.Then I call UTIL_LPM_EnterLowPower(); and CPU1 also goes to STOP correctly.My application uses reduced wake cycles, and sometimes I do not restart advertising after wake-up (so CPU2 stays stopped).Sporadically, in these reduced cycles, I see PESD=1 even though I am not accessing flash on CPU1.This causes CPU1 to block in while(LL_FLASH_IsActiveFlag_OperationSuspended()); inside ProcessSingleFlashOperation() in flash_driver.c (the official ST file for dual-core flash management with PESD).The situation looks like CPU2 goes to STOP with flash still occupied (PESD set).At that point, any flash write from CPU1 remains blocked forever.At the moment, my only workaround is:Before writing to flash, I check PESD, andIf PESD=1, I make BLE di
Hi all,I am a newer STM32 programmer, and I have been working on the STM32H745 Discovery board for the last few months. Something that I would like to do is be able to switch into USB DFU Mode within a UI that I have made for this board. I took inspiration from this post and changed the address to the appropriate one for the STM32H745. I would like to prerequisite that the USB port is initially configured as a VCP/CDC device. Here is the code that I have:void (*SysMemBootJump) (void); void USB_BootloaderInit() { volatile uint32_t addr = 0x1FFF9800; //from AN2606 __disable_irq(); // Reset USB OTG_FS // Disable caches SCB_DisableICache(); SCB_DisableDCache(); // Remap vector table HAL_RCC_DeInit(); //Reset the system clock SysTick->CTRL = 0; //Reset the SysTick Timer SysTick->LOAD = 0; SysTick->VAL = 0; SysMemBootJump = (void (*)(void)) (*((uint32_t *)(addr + 4))); //Point the PC to the System Memory reset vector __set_MSP(*(uint32_t *)addr); //Set the M
Hi everyone,I’m working on an STM32 firmware project (HAL + CubeIDE). I’m trying to output debug messages to Tera Term via UART using printf and puts.Here’s the situation:Debug build: Both printf and puts work perfectly.Release build: Calling printf or puts causes the MCU to reset immediately. Maybe due to watchdog reset and these function call cause the MCU freezing.I also retarget the printf function by implemented the following: int __io_putchar(int ch) { while (!(huart1.Instance->ISR & USART_ISR_TXE)); huart1.Instance->TDR = (uint16_t)ch; return ch; } int _write(int file, char *ptr, int len) { for (int i = 0; i < len; i++) { __io_putchar(ptr[i]); } return len; }My questions:Why do printf and puts crash/reset in Release but work in Debug?Are there known issues with _write or __io_putchar in Release builds?Any recommended approach to safely use printf/puts in Release firmware for UART output?Thanks in advance!
STM32CUBEMX is using very old version of FreeRTOS 10.3.1 for stm32 series microcontroller? Please can you update FreeRTOS version to latest version of FreeRTOS? Do you shifting your focus from using FreeRTOS to some other OS for stm32?
Hello,I am trying to establish UART communication between STM32G070RBTX and ESP32 Devkit using AT commands.Connections: STM32 UART TX ESP32 RX, STM32 UART RX ESP32 TX, and common GNDPower ESP32 powered from 5V pin by usb or base boardBaud rate 115200On reset, ESP32 does not print ok or any AT response.Very rarely once in many tries I get a single AT command response,but after that no communication happens.Even pressing the reset button does not bring it back. When I connect the ESP32 module via USB to Dockight and send AT commands, the communication works fine.
Hi Sir,We managed to use HS USB port as FS USB on our PCB(there is no external PHY), but our partner comments that there is no driver available for that purpose. Indeed I only see USB examples for HS USB or FS USB at STM32H7 source tar ball. I believe that there must be such usage. Where can I get the example ? Thanks. Sincerely,Jimmy
Hi there,I am using STM32G473CBT6, and work with a bootloader and application.When I set the application address at 0x08008000, everything works well.However, when I change the application address to 0x0800A000, the application download fails, except when I download the bootloader (configuring it as 'erase all chip') first.I checked the reference manual, and the flash is separated into 2K/4K on each page.That means both 0x08008000 and 0x0800A000 addresses are at the page edge.Why can't the application at 0x0800A000 work smoothly?Thanks for your help!
HELLO ,In STM32F103C8T6, the RTC time is preserved after power off, but the date always resets to 01/01/2000 even if I set the current date and time.
Hi,I am using STM32L4R9ZIJ6 microcontroller.I have connected an external reference voltage of 3.3V to VREF+ pin and wanted to use internal reference voltage over this one for internal ADC read operation. Is that possible?I tried configuring the MCU to enable VREFINT for internal ADC1 read but I can still see that the external 3.3V is being taken by the ADC for conversions. Can someone please answer this?Thanks.
Dear STMicroelectronics Support Team,I am working with the STM32U585I-IOT02A development board, and I need assistance with the following:Entering and waking from low power modes (STOP2 or STANDBY) using the RTC wakeup timerConfiguring UART1 with DMA and ensuring it resumes correctly after waking upHandling interrupts before and after sleep modesI have tried implementing the configuration using STM32CubeIDE and HAL libraries. However, I'm encountering issues where UART DMA does not resume correctly after wake-up.I would appreciate any official guidance or example code specific to STM32U585.
Hi, I'm trying to configure an STM32H753 FDCAN peripheral to be compatible with both CAN-FD & CAN 2.0 frames, in both the Tx & Rx directions. How should I configure the FD-CAN peripheral to achieve this? I've been through he RM0433 document as best I can and am struggling to find this information.
I want to use the SMT32N6 VFBGA142 or VFBGA169 package. These parts do NOT have XPSIM_P1(on port PO). They only have XPSIM_P2(on port PN).Can I connect both Octo FLASH and Octo PSRAM on port PN and use the two chip selects (NCS1 & NCS2) to independently talk to the chips? I need to boot off the FLASH and then use the PSRAM to execute the program.Any signal integrity issues or gotchas I need to keep in mind?
Hello everyone,I'm developing a dual-core FreeRTOS application on an STM32H755ZIT6 using STM32CubeIDE, and I'm facing an issue where the HSEM handshake is not working as expected.My goal is to have a FreeRTOS task on the Cortex-M7 block and wait for a signal from the Cortex-M4.Expected Behavior: The M7 task calls HAL_HSEM_Take() and should be blocked by the FreeRTOS scheduler until the M4 calls HAL_HSEM_Release() on the same semaphore.Actual Behavior: The M7 task calls HAL_HSEM_Take() and it returns immediately, without blocking. This happens even when the corresponding HAL_HSEM_Release() call on the M4 is commented out for testing, causing the M7 task to loop continuously. Debugging Steps I Have Already TakenVerified Core IDs: I have confirmed in the project properties that the M4 project has the CORE_CM4 define and the M7 project has the CORE_CM7 define.Implemented Handshake Logic: I have implemented the standard handshake where the M7 "primes" the lock by taking the semaphore o
Hi,The example for FSBL works as describedhttps://community.st.com/t5/stm32-mcus/how-to-configure-the-linked-list-mode-in-stm32cubemx/ta-p/693779But if the same approach is applied to Appli (Secure) code, the "User Setting Error" raised in DMA IRQ.I use the XIP configuration.Could you please elaborate chages to be made in Secure code?
Hello Community, I've been trying without success to setup an SPI interface to a LCD panel. It's an LTDC 24-bit panel but requires configuration over its 3-wire SPI interface. I'm using STM32CubeMX 6.15.0 and STM32CubeIDE 1.19.0. Here's the details: The display contains an ST7701S IC that has a 9-bit, half duplex, SPI interface, operating mode RGB+9b SPI(rise). In this mode the display accepts 9-bit data - the MSB bit (8) indicates whether the following byte is a command or data. I can issue commands to the display and have it do things (turn all pixels ON/OFF as an example) but I'm unable to successfully read from the device. A read is initiated by transmitting a read command and then reading the response over SPI.The display is connected as follows: and I have configured it in CubeMX as follows (Note CS and RESET are configured as GPIO outputs). The timing diagram in the ST7701S datasheet looks like this : This display is using Interface 1
Hi,currently I am working with the NUCLEO-WL55JC1, using the STM32Cube FW_WL V1.3.0 and the LoRaWAN_End_Node example as base.My target is to keep the LoRa stack working as it is on the example, but also to use the RTC to store the current date and time values, since I have to log the measurements with timestamp on an external memory. When I try to use the RTC Bin Mode set to "Free running BCD calender and binary mode" or "Free running BCD calender mode", the example simply stop working. The last log I get on screen is : "MAC txDone".Is that a way to use the internal RTC to save current date and time, and keep the LoRaWAN stack working?System info:STM32CubeIDE : 1.11.2 (Windows version)STM32CubeMX : 6.7.0-RC4I've found someone with a similar problem, but I was not able to solve my problem with the given answer (Question : BCD Calendar and Binary mode (mix mode) alarm is not working in STM32WL55 by digidhamu)Many thanks in advance!
Hello guys!I'm working with STM32WL series using the LoRa application, for that the RTC must be in binary mode.However, I need the calendar and timestamp for my project, which implies that I need to use BCD mode.I'm aware that the RTC3 has the mixed mode, however, whenever I tried using it, the whole project stopped working.I've been reading the AN4759, and the posts about it in the community, but I have some doubts about the solution.LoRa uses the alarm A, which requires the subseconds alarm, and I know that the calendar doesn't work in binary mode, but can I activate somehow by software the calendar and timestamp still in binary mode? (if so, how and where in the code?)Other thing, while using the mixed mode, what I have to do to make it work like in binary mode but with the calendar? Like, I saw that I might have to transform binary date to BCD, is it necessary? If so, I'm confused how and where in the code I do this. Also I need to adjust the alarm A again, right? What do I have to
Hello everyone,I am using MCSDK 6.4.1 to create my custom inverter board. I have configured the internal Op-amp's PGA gain.However, when I load the configuration into the MCSDK project, it is not detected, and I am unable to select a gain of 16.MCSDK doesn't recognize my board config, and it doesn't calculate the current range.If it's not MCSDK that's wrong, please help me fix my wrong configThank you.
I am facing an issue with BLE connection on the NUCLEO-WBA55CG board.Using the same .ioc file:When I generate the code for STM32CubeIDE, the project builds and runs fine, and I can connect to the device successfully using the ST BLE Toolbox app.But when I generate the code for IAR, the project builds and runs, but the device cannot be connected. On the Android app, when I press Connect, it briefly shows Connecting and then reverts back to Connect, without establishing the connection.So the only difference is the toolchain (CubeIDE vs IAR).Environment:STM32CubeMX 6.15STM32Cube_FW_WBA 1.7.0IAR Embedded Workbench (please fill in your version here)STM32CubeIDE 1.19.0IAR 9.60Has anyone experienced this issue? How can I make the BLE connection work properly with IAR as well?
I came across this shared project: Nucleo Mechanism Control Board (link below), which is designed to interface with an STM32 Nucleo board for controlling actuators (vacuum pump, air valve, stepper motor, AX-series actuator, servos).https://www.pcbway.com/project/shareproject/Nucleo_Mechanism_Control_Board_b3dd524d.htmlI have a few questions/suggestions and would appreciate any advice or feedback from people familiar with similar designs:What would be the best practices for ensuring safe power regulation on this kind of board when driving mixed loads (vacuum pump + stepper + servos)?Are there any considerations or potential pitfalls when routing signals and grounding for both high-current actuators and more delicate control signals in this layout?For the stepper & AX-series actuator: would off-the-shelf driver modules be sufficient, or is there benefit in integrating custom driver circuitry (e.g. to improve motion smoothness, reduce noise, or increase reliability)?If I want to
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.