Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi, I am trying to jump into system bootloader but board is not getting detected in USB DFU on STM32CubeProgrammer. I tried below two methods:1) By connecting Boot0 pin to HIGH and resetting the board and tried connecting on STM32CubeProgrammer.2) By Jumping to system Bootloader start address from application.In the second method I tried setting option bits manually in software and board got connected in USB DFU for one or two times only.Let me know how can I jump to system bootloader and do application reprogramming.Thanks,Vishwanath Devara
I want to let the user LEDs blinken, however it is not working. When I run the code the LD4(COM) is blinking red and green. after the run the LD4(COM) is red the whole time and the user LEDs do not blink. Should the LD4(COM) be lighting green?
Hi everyone,I'm working with the STM32F303CCT6 chip, and I've configured the system clock such that HCLK is running at 72 MHz.I'm trying to configure SPI1 in full-duplex master mode using CubeMX / STM32CubeIDE. However, when I attempt to set the prescaler to 2, it gives me the following warning:"With this Prescaler value and APB2 Clock Frequency (72.0 MHz), Baud Rate is more than 18.0 MBits/s.Please set Prescaler more than 4."This is confusing because I thought SPI1 could go up to 32 Mbit/s.Has anyone encountered this?Is this a limitation from CubeMX or HAL?Is it safe to ignore this warning and proceed manually in code?Or is there a hardware limitation I'm overlooking?Any insights or workarounds would be greatly appreciated!Thanks in advance!
Hi Community,I am about to work on STM32H7471-DISCO Development BoardCan you provide Schematic of this Board.I found all the technical documents from https://www.st.com/en/evaluation-tools/stm32h747i-disco.html# but I do not found board schematic.
Hi, I am using Nucleo-144 boards in my project where I have changed the clock source for STLINK IC to external crystal using STLINK firmware upgrade tool. Before it was HSI/2 =8MHz. Now I am trying to revert the configuration back to 8MHz but I am not able to detect the Nucleo board now with 8 MHz. Is this known issue? I tried configuring it back to 5MHz using tool below and it works fine , detects all the time in MATLAB. But not with 8MHz (HSI/2). How to revert back the configuration and make the board detectable?
I am using the Nucleo-L433RC-P board and want to use LPUART RX on pin PA3.But the schematic shows that pin PA3 is used for STLINK_RX. What is STLINK_RX / STLINK_TX used for ?Can I remove SB75 to access the pin or would this stop STLINK from working ?
Hello, I am trying to implement an edge AI application on the B-U585I-IOT02A board alternating between active mode for inference and stop2 mode. I based the implementation on the PWR_LPMODE_RTC example for the U575 board, I have attached main.c below.I am using Power Profiler Kit II in source meter mode to measure energy consumption. I have disabled ST-LINK via the SWD MCU switch. I power the board with 3.3V using the 3V3 pin through PPKII. I left the jumper at 5V_USB_STLK and I am using the default values in PPKII. During measurements, I observe a current of approx. 100mA in active mode and 80mA (instead of a few μΑ) in stop2 mode. I wanted to check whether:There is a bug in my implementation and the board never enters Stop2 correctlyThere is a bug in my implementation and there are still peripherals or clocks active during Stop2 modeThe B-U585I-IOT02A is not really meant to be used for energy consumption measurements since there are components that consume po
stlink-V3pwr current : 21mA X-NUCLEO-LPMO01A current :17mA actual current : 15mA
When creating a new project based on STM32U5G9J-DK2, TouchGFX designer defaults the project name to My_Application#, but when the project is generated it' still based on the TBS default package name of STM32U5G9J-DK2.This seems to cause issues when opening the .ioc project in STM32CubeIDE, because the .ioc is still named STM32U5G9J-DK2.ioc and not the same as the application name: There are further issues with the linker file not matching, and a sub project being created with the name STM32U5G9J-DK2 and then main.c and other files in the sub project being used for build.This seems to mean that if you have an actual project named STM32U5G9J-DK2 (e.g. the demo) and then created a second project named MyApplication_4 when you try to compile MyApplication_4, files from STM32U5G9J-DK2 project will be used.Not sure if this issue exists on other boards, or if I'm doing something wrong.
I am using STM32H573 and I have tried to enable PVD some what like this:void PVD_Init() { PWR_PVDTypeDef pvdconfig; HAL_NVIC_SetPriority(PVD_AVD_IRQn, 5, 0); HAL_NVIC_EnableIRQ(PVD_AVD_IRQn); pvdconfig.Mode = PWR_PVD_MODE_IT_RISING_FALLING; pvdconfig.PVDLevel = PWR_PVDLEVEL_7; HAL_PWR_ConfigPVD(&pvdconfig); HAL_PWR_EnablePVD(); } void HAL_PWR_PVDCallback() { // HAL_GPIO_WritePin(GPIOC, LED_1_Pin, GPIO_PIN_SET); printf("\rBefore RESET COUNT: %.2f\n", counter); EEPROM_Write_NUM(0, 0, counter); }Someone might say to enable the clock but for this module I don't think we need to manually enable the clock. I have looked into it and am pretty sure about it. If anyone else have some other theories please let me know. Also made sure that EXTI 16 is connected internally.
Hella All, While working with the STM32H533RE microcontroller and using VS Code with PlatformIO for debugging, I noticed that the SCB (System Control Block) peripheral definitions appear to be missing from the SVD file. The SCB is a critical ARM Cortex-M33 core peripheral that should include registers such as:CPUID (CPU ID Base Register) - 0xE000ED00ICSR (Interrupt Control and State Register) - 0xE000ED04VTOR (Vector Table Offset Register) - 0xE000ED08AIRCR (Application Interrupt and Reset Control Register) - 0xE000ED0CSCR (System Control Register) - 0xE000ED10CCR (Configuration and Control Register) - 0xE000ED14And other SCB registers in the 0xE000E000-0xE000EFFF address range The missing SCB definitions limit our ability to:Monitor system control registers during debuggingAnalyze interrupt and exception behaviorDebug power management and system configuration issuesPerform comprehensive system-level debugging I would greatly appreciate your assistance in
Hi All,I’m working on a project with the STM32U5G9ZJT6, where I’ve implemented a bootloader in internal flash at 0x08000000. The application is stored in external OctoSPI NOR flash (MX66LM1G45G), which is memory-mapped to address 0xA0000000 using Octal STR mode.I'm flashing the application binary into external flash using an external loader (.stldr) via STM32CubeIDE.Although the application is successfully stored in external flash, when I try to execute it via memory-mapped mode, it fails (shows “Target Failed” or halts). I’m not sure whether it’s due to memory mapping, stack configuration, MPU, or something else.Could someone guide me on the correct procedure or help me troubleshoot this issue? What I’ve Done So Far:Bootloader:Configured OSPI (HSPI1 / OCTOSPI2) to enable memory-mapped mode using MX66LM1G45G_EnableSTRMemoryMappedMode().Verified that data can be read from 0xA0000000.Read the initial MSP and Reset_Handler from external flash:uint32_t app_msp = *(uint32_t*)0xA0000000
Hi all Do you have any SPi protocol example for stm32f407VGTx board . B.R Ash
Hello,I am working on a project using the STM32WBA microcontroller and looking for a way to provide Wi-Fi connectivity in order to connect the system to a web server.I've read in several places across ST's website that the STM32WBA series supports OpenThread Border Router (OTBR).However, I couldn't find clear information on whether the STM32WBA can act as a standalone OTBR, or if it's limited to acting as a Radio Co-Processor (RCP) like some examples for the STM32WB series.Does anyone know if it's possible to use the STM32WBA alone as a full OTBR? Or would I need to connect it to an external host that handles the Wi-Fi stack?Any clarification or pointers to official documentation would be really appreciated!
I am developing libraries for STM32G070RB and starting with DMAs TX and RX; the interrupts trigger for both modes. I am using STM32G070RB, Cube IDE (1.19.0)Description of task:I wish to make the library optional for the user.1. Option DMA (TX & RX) hardcoded to Channel 2 & 3.2. Option receiving an interrupt and write polling. The MCU has limited DMA, so I am dedicating Channels 2 & 3 for the USART: a single buffer if interrupt mode was selected and a double buffer in DMA with the IDLE interrupt trigger. Though a generic template class for the 4 USARTs, I am currently testing using USART1.In the main.cpp file, I toggle PC1 to be sure the DMA and RXNE interrupts trigger. which appear fine. I also check within the handlerDMA and handlerIRQ, and all are working fine. The issue at hand:In DMA mode, if I read the DMA buffer (__dmarxbuf), I will see the exact received character; I also confirmed that in the DMA countdown register. I implemented
My company is developing a system that needs to download thousands of images from a computer to an STM32 development board via a local area network. The total size of the images may reach tens of GB (if possible, the data should remain even in the event of a power outage)At first, I considered using an external flash, but it seemed that STM32 did not support flash memory exceeding 256 MBytes. It appears that an SD card is the only solution; STM32 seems to support SD cards up to several TB.Am I correct?
IDE : STM32CubeIDE Version: 1.16.1Board : STM32F407VG DISC1SYS Timebase Source : TIM6 Hello,In my project, i use I2C and multiple UARTs. It worked fine before adding FreeRTOS tasks. Recently i need add buttons to my project, so i add a new task to handle interrupts. To synchonize my EXIT ISR (callback) and the button handling task, a binary semaphore is adpoted. Strange things happened, after creating a binary semaphore with xSemaphoreCreateBinary(), all I/Os, I2C and UARTs, are failed. Even HAL_Delay() did not work, bebugger died in HAL_GetTick() in HAL_Delay. all abnormalities happened before starting FreeRTOS kernel and initializing tasks. Commenting the xSemaphoreCreateBinary() system is back to normal. Can someone tell me what causes the problem.
Hi,I'm configuring the independent watchdog in the STM32F103xx medium-density using the registers.During the IWDG the PVU bit is not cleared by the hardware. The reference manual (page 498) says the following:"PVU: Watchdog prescaler value updateThis bit is set by hardware to indicate that an update of the prescaler value is ongoing. It isreset by hardware when the prescaler update operation is completed in the VDD voltagedomain (takes up to 5 RC 40 kHz cycles).Prescaler value can be updated only when PVU bit is reset." RCC->CSR |= (0x1 << 0); // Enable LSI while (!(RCC->CSR & (0x1 << 1))); // Wait for the LSI to be ready IWDG->KR = 0x5555; // unlock PR and RLR IWDG->PR = 0x3; // Divided by 32 IWDG->RLR = 0xFFF; // 4096 - counter value while (IWDG->SR & (1 << 0)); // PVU <- #### GET TRAPPED IN HERE #### while (IWDG->SR & (1 << 1)); // RVU IWDG->KR = 0xAAAA; // reload the counter IWDG->KR = 0xCCCC
i have created a USBx ramdisk which enumerates with windows and a usb disk is shown. when i look at the properties it is 0bytes in size and wont let me format it.if ULONG USBD_STORAGE_GetMediaLastLba(VOID) and USBD_STORAGE_GetMediaBlocklength are set to0 the USB will enumerates. if they are any other size then the USB wont enumerate. i have attched the design. Any pointers would be great. i will eventually be adding an external SD card inthe design. but just want to get the ramdisk working first.
I am unable to start a PWM signal on my Nucleo board --> I was not able to observe a signal on an oscilloscope.Please see the following code and Cube configurations.1) Is the following code all that is necessary to start a PWM on a channel (given it is configured correctly in IOC)?2) I confirmed that I am connected to the right pin by toggling a GPIO prior to configuring for PWMHAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); TIM2->CCR1 = 30;
I have experienced this issue on STM32L4R and STM32U5. If debugging through STOP mode (with DBGMCU_CR_DBG_STOP set), the flash memory occasionally seems to read out garbage as the MCU is coming out of STOP mode. This typically causes the CPU to hard fault.Disconnecting the debugger and power cycling the MCU (to clear DBGMCU_CR_DBG_STOP), causes the same code to run perfectly. Alternatively, making any small code change that causes the WFI and subsequent code to change its address alignment in the flash also seems to fix the issue, even when running in the debugger. Another alternative is to increase the number of wait states, which also fixes the issue.Is this a known issue? Has anyone else experienced it?
Hello everyone,I'm a beginner learning STM32 and working on a small project with the STM32H755 (NUCLEO-H755ZI-Q). I'm trying to use an EXTI interrupt on PA0 (push button) to toggle an LED on PB0 on the Cortex-M7 (CM7) core. I need help to figure out what's wrong!Thanks a lot!
I am currently using STM32H723 MCU for a project. I want to use PTP to synchronise different peripherals that will send data and their timings need to be precisely synchronised. The reference manual has got a whole section for programming IEEE 1588 timestamping. But going through the different files that implement the ethernet driver, I found this comment: -@- The PTP protocol offload APIs are not supported in this driver. The offload feature is most vital to me. I am wondering whether that is an old message or if this driver still doesn't support hardware timestamping. Has anyone have luck with this??
Hello,I am currently working on a bootloader code. I successfully managed to execute the app code by copying to the RAM address (0x20000000). However, whenever I try to copy the app code to SDRAM (0xC0000000) instead of RAM, bootloader never executes the app code. In the linker script file of my app, I follow the same process with the "RAM Version" of the code: I used SDRAM address for all sectors (.data, .text, .bss...). My jump code is basically like: uint32_t app_sp = *((volatile uint32_t*)APP_SDRAM_ADDRESS); uint32_t app_pc = *((volatile uint32_t*)(APP_SDRAM_ADDRESS + 4)); SCB->VTOR = APP_SDRAM_ADDRESS; __set_MSP(app_sp); ((void (*)(void))app_pc)(); Thanks.
When I'm enabling DMA and run the code, the debugger hangs at "SCB_EnableDCache();" even though the function is correctly excuting when I go step by step. Also as seen in the examples the problem gets solved when using a static declaration "static void CPU_CACHE_Enable(void);"Is it the issue with the debugger or the code.
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.