Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Greetings, I know how to solve it , but I do want to reseach on this issue. I use a nucleo's stlink (nucleo F070RB) to program a stm32g030k8tx. However, the target is only detected and, therefore programmed, when the external mcu is not on standby mode. Could it be becasue I do not use the NRST on the SWD? I just use Software Reset, instead. Thanks.
Hi allI'm pretty sure this was already a topic, but i haven't found a solution yet. Since i'm a beginner i definitely need some help here.I'm sending UDP data with LWIP and FreeRTOS. It works, but after some (random) time the code gets stuck at configASSERT( pxQueue->uxItemSize == 0 ); I tried some settings but nothing helps. It is stopping even if I do not send data . Any ideas? Cheers
Hi everyone! I'm using an Arduino Portenta H7 (STM32H747) board mounted on a custom carrier board. I'm using STM32CubeIDE as a development environment, with HAL libraries for peripheral initialization.I'm only using the Portenta's M7 core. Portenta interfaces via GPIO to a parallel bus that drives both a display and other peripherals. I'm also using the RTC module for the system clock only, initialized at startup via HAL. Everything works fine until I try to set the RTC datetime using this function: void tm_wr(struct tm *_tm) { RTC_DateTypeDef sDate; RTC_TimeTypeDef sTime; if (_tm->tm_wday == 0) { sDate.WeekDay = 7; } else { sDate.WeekDay = _tm->tm_wday; } sDate.Month = (uint8_t)_tm->tm_mon + 1; sDate.Date = (uint8_t)_tm->tm_mday; sDate.Year = (uint16_t)(_tm->tm_year-100); HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN); sTime.Hours = (uint8_t)_tm->tm_hour; sTime.Minutes = (uint8_t)_tm->tm_min; sTime.Seconds = (uint8_t)_tm->tm_sec; HAL_RTC_SetTime(&
Hi I have a question that blocked me for several days, Hopefully someone can help, thanks a lot.1:MCU:STM32G0B0CET6,Develop tool:STM32CubeIDE2:I wanna have a test for OTA ,so i create a bootloader project and app project3:Flash segmentation:1)Bootloader(32KB),0x08000000~0x08007FFF APP(240K):0x08008000~0x08047FFF APP BAK(236K):0x08048000~0x08079FFF INFO(8K):0x0807A000~x0807FFFF4:In Bootloader ,try to jump to APP(0x08008000):5:Attached the source code (bootloader and app) and hex file(in debug directory)6:Modifed "ld" file in bootloader project and app project, and I confirm the stack address in 0x08008000 and reset_handler in 0x08008004 is correct.And have set vector in main entry(first line in main()):SCB->VTOR = FLASH_BASE | 0x8000;7:If i use stm32CubeProgrammmer and STM32CubeIDE to start ,app will be run ,But app can not run via bootloader software jump. bootloader jump slide:void RunUserCode( void ) { uint32_t* ucaddr; // i
I enabled the bonding feature in STM32WB5MMGH6TR.Bonding is working correctly. But when the device(STM32WB) is bonded to phone(Android 15), calling disconnect from the phone does not disconnect the device.This problem does not occur when:-1. Phone Android version is less than 15(even after bonding it can disconnect).2. Device is not bonded to the phone(Android 15).
So here is the outline of my code. I'm getting data every 5 seconds (example data: "vref:2975.12, voltage_max:30.00, voltage_min:-1219.00,avg_error: 4136.04") via UART and i transmit it again to view it in putty via ST Link (USART3). Problem is some of the data is getting corrupted, i'm attaching the Putty terminal output. I have verified the input, using logic analyzer and it's correct.Here is the code, can you help me identify what i might be doing wrong/* 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. * **
I am using Motor Pilot 6.4.1 Profiler and noticed that there is no "Start Hall Profiling" option available.Could you please confirm if this feature has been removed or if it is located elsewhere?Best regardsPelino
Hello ST Community,I am working with NUCLEO-WBA55CG and encountering a startup issue when using the BLE_p2pServerThreadX example from STM32CubeWBA v1.8.0.EnvironmentBoard: NUCLEO-WBA55CGMCU: STM32WBA55 (single-core Cortex-M33)SDK: STM32CubeWBA v1.8.0RTOS: Azure RTOS ThreadXExample: BLE_p2pServerThreadXIDE / Toolchain: IAR Embedded Workbench 9.60Debugger: ST-LINK (on-board)Problem DescriptionAfter programming the firmware to the board::cross_mark: On cold power-on (Power-On Reset), the application does not start:white_heavy_check_mark: After pressing the RESET button, the application runs normallyThe issue is 100% reproducibleBLE advertising starts correctly only after a manual reset, not after initial power-up. Additional Tests PerformedThe issue occurs even when Timebase Source is set to SysTickThe MCU is confirmed to be STM32WBA55 (single-core)(not STM32WB, no wireless coprocessor)No user code is executed after early initialization during the failing POR caseAfter RESET, behavio
Hello,I am currently working on a project with an HTTP server, successfully implemented using FreeRTOS. In this setup, I handle client requests for opening and collecting data from the client side. However, since I need to display real-time data on a web page (for an IoT application), it has become necessary to implement the WebSocket protocol.I am looking to implement a WebSocket server on my STM32f746G-DISCO. Unfortunately, I have not been able to find any working examples of WebSocket implementation on STM32.Could you kindly point me in the direction of any relevant examples or provide some guidance on how to get started with this? Also, I would appreciate any insights regarding whether I need to modify my CubeMX configuration when implementing WebSocket, or if the standard initialization is sufficient — enabling ETH, activating lwIP (httpd) without DHCP, and activating FreeRTOS with the default task where the following initialization is done:MX_LWIP_Init();http_server_init();Any he
HiI've been struggling trying to get an Image from a Image sensor over DCMI via the GPDMA on an STM32U575.The image sensor has a resolution of 752*480, though I only want to capture 420*420, which I've configured on the sensor to output. I've also configured it to output a B&W image meaning I only get one byte per pixel.I've used the DCMI_ContinousCap_EmbeddedSychMode example as the basis for my code, though I'm not using an omnivision sensor so I've swapped out the configuration for one required for my image sensor. However, for the most part, I have not modified the GPDMA or linked list settings from this example, just the I2C comms (swapped to SPI) and DCMI to external synchro, and DCMI polarities to match my image sensors output.when I try to pull a full image in one DMA transfer, I get an overflow error after only receiving half the image (88200 bytes). When I make the image size 360*360 I get the full image just fine (129600 bytes).I did try splitting this into 3 requests of
Hi,I have implemented CDC USB device on my custom board using STM32C071CBT6. When i connect USB cable to host PC then I can see Virtual COM Port on PC as 'USB Serial Device (COMxx)' However, I tried transmitting some data which I could not receive on PC side. After debugging I noticed that function USBD_CDC_ACM_Activate() is never getting called. In file, app_usbx_device.c, function MX_USBX_Device_Init() has following code:UINT MX_USBX_Device_Init(VOID){UINT ret = UX_SUCCESS;UCHAR *device_framework_high_speed;UCHAR *device_framework_full_speed;ULONG device_framework_hs_length;ULONG device_framework_fs_length;ULONG string_framework_length;ULONG language_id_framework_length;UCHAR *string_framework;UCHAR *language_id_framework; UCHAR *pointer; /* USER CODE BEGIN MX_USBX_Device_Init0 */ /* USER CODE END MX_USBX_Device_Init0 */pointer = ux_device_byte_pool_buffer; /* Initialize USBX Memory */if (ux_system_initialize(pointer, USBX_DEVICE_MEMORY_STACK_SIZE,
Hey all,I have a Sony IMX686 camera module connected to the STM32N6 Discovery Kit, streaming video to the on-board LCD. The sensor outputs a single-stream RAW Bayer format on Virtual Channel 0, and the DCMIPP receives the data correctly — up to a certain horizontal resolution. The issue appears to be related to a bytes-per-line limit within the DCMIPP or its DMA pipeline.When the IMX686 outputs RAW8, the DCMIPP can only handle horizontal line lengths up to 1552 pixels. If I increase the width beyond 1552 px (e.g., to 1668 px), I begin to see horizontal distortions in the lower portion of the frame. These distortions worsen as the width increases. See the images below.As the width increases further, the distortion grows and eventually affects most of the frame (shown below).When switching the sensor to RAW10, the exact same distortion appears, but it goes away when I reduce the horizontal resolution to 1232 pixels. This matches the expected scaling: 1552 * 8 / 10 ≈ 1241 → nea
hey all, i'm working on a team where most people have little experience with stm32s, and we've designed and manufactured our first board with the STM32H7S3I8T6 chip. we followed the data sheet extensively and did a decent amount of research on peripheral values, and after soldering the chip onto the board we checked that all soldered connections were good (especially D+ and D- on the USB bus). some observations: 1. we tried to first use the USB DFU method using the STM32Cube Programmer, but when plugging the board into the computer, no new usb connection is detected (when holding down boot button to set BOOT0 high). 2. we tried using an ST-link module from a Nucleo board to program the board with SWD, but similarly, no device was detected when programming. 3. when checking the D+, D-, and LSE/HSE oscillator data lines, probing them using an oscilloscope results in no signal / very weak noise. i'll attach our schematic for the chip, any and all feedback is greatly appreciated. curr
I am using STM32U575 Nucleo development board and I am trying to configure DMA through STMCube IDE. I have configured the DMA and generated code through it. Added required code but I am not getting data on serial through DMA. Is there any alternate way to get data on serial using DMA?
I am working on an isolated monitoring system for currents, voltages, and heatsink temperatures, and am using the ADCS on the Nucelo-F446RE to take the readings. Initially testing was going well demonstrating good linearity and accuracy across a range of set-values. However, after having reworked one of my temperature channels, and making minor adjustments to the configuration of the Nucleo board to configure it to read a different ADC channel, the values collected by the ADC suddenly became very erratic (inaccurate) and imprecise (larger range). For example, in the attachments I have included x2 sets of values collected before and after the issue started to occur. A quick summary of the full results can be seen the the table below Pre IssueRaw Value3.3V Ref EQ60V Full Scale EQError vs Ideal (%)Post IssueRaw Value3.3V Ref EQ60V Full Scale EQError vs Ideal (%)Average = 1946.9631.56859828.5199695.06653 Average = 2155.3441.73648331.57242105.2414High =20441.6467772
Post Edited by ST moderator to apply source code formatting and translate from Chinese to English to comply with the community rule: Best regards, Gyessine Hello everyone, I am trying to implement the 6-Step Trapezoidal Control using the COMG event in STM32F411RE as said in the datasheet. Situation: I am using 3 half bridges each driven by a single IR2110, IR2110 requires only one input signal to be high at a time to drive each half bridge as planned. I am using TIM1 PWM mode CH1-3 for HINs and CH1N-3N for LINs of each half bridge's IR2110. So in theory, for example, for first commutation, I only need CH1 & CH3N to be active. But as far as my understanding goes, if CH1 is active, I will be getting a complementary signal at CH1N as well. If IR2110 receives signal at HIN and LIN, it might cause overshoot for MOSFETs. There is a dead-time between both signals but, the point is I don't need the signal from CH1N so in my understanding the best way is to set the CC1NE bit to
Hello everyoneI joined a somewhat finished project, which has working TouchGFX display using assets saved in external flash memory. The next phase is to enable A/B FW update, meaning that now the assets might end up either in the start or middle of the external flash. Ive been tasked with enabling the program to read the assets at runtime, deciding if they exist in the start or middle using a flag provided by the bootloader. So far, I managed to read Images, Videos, Audio and Texts from the back half of the flash by redirecting pointers with an offset, but im having real difficulties with the generated Fonts. For some reason I cant get it to work. My strategy is to intercept the GFX getFont function by a new class inheriting ApplicationFontProvider, but I simply cannot get it to work. Currently I dont think I even managed to connect it properly and I dont think the code even run through it.Is there some sort of example someone made for this scenario? Would greatly appreciate any help.&
Can i use UART + DMA ( normal ) + RTO ? I try to add RTO but when activate RTOE bit the DMA buffer stops fills .I take interrupt with active RTOF , stop DMA , but nothing in buffer !? I use stm32H7 with hardware implemented RTO. Can some one to give working example ?
Hi,I am currently working on the firmware of a PCB with an STM32G031K8T6 as the MCU, supplied by a 1.8V voltage.When I enter Stop 1 mode, the consumption of the MCU drops to 100uA, instead of the 7uA stated in the datasheet.The app_stop function is as follows :void app_stop(void) { timer_uninit(); i2c_slave_uninit(); i2c_master_uninit(); gpio_stop_mode(); HAL_SuspendTick(); SystemClock_Config_StopMode(); HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); } void gpio_stop_mode(void) { GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = GPIO_PIN_All; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_All; GPIO_InitStruct.Pin &= ~(GPIO_WAKEUP_PIN); GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); __HAL_RCC_GPIOB_CLK_DISABLE();
I've seen that, trying to download the STM32CubeH7RS Firmware Package from CubeMX, I'm seeing the latest version is 1.3.0.On the actual documentation and GitHub repository https://github.com/STMicroelectronics/stm32h7rsxx-hal-driver I'm seeing that the version is 1.2.1Dates are the same, so I think the version is the same, just with different numbering; is it correct?
I have an STM32H747I-DISCO board that I am trying to bring up with the Tutti Frutti Demo. I have followed the instructions in UM3008 to program this as it appeared to be blank upon arrival from Digikey. External loader was set to: MT25TL01G_STM32H747I-DISCOProgramming of CM4 with intflash.hex and CM7 with target.hex completed successfully.After programming, the board does not display anything and LD10 just flashes red a couple of times and then pauses on green then repeats.Power LED is good (green). I am not familiar with these development tools so it is likely I'm missing something but whatever it is is not clear to me.I have tried resetting both through STM32CubeProgrammer (V2.21.0) as well as hard reset on the board.Power cycling the board does not help. LD10 just solid red until I connect up STM32CubeProgrammer at which point it cycles between green and red as described above. I have seen this is a common issu
I am currently working with the STM32 Motor Control SDK and would like to ask a question regarding the Placement Electrical Angle.Due to hardware limitations (single-shunt current sensing) and tool constraints, I am unable to use the Motor Profiler.In this situation, I would like to know:Is it possible to measure or determine the Placement Electrical Angle without using the Motor Profiler?If so, does ST recommend a manual or alternative procedure (for example, forced alignment using d-axis current, open-loop control, or hall-sensor-based methods)?Are there any application notes, user manuals, or example projects that describe this procedure in detail?For your reference, I am using a motor with Hall sensors and the STM32 Motor Control SDK.Thank you in advance for your support.Best regards,Pelino
Hi everyone,I'm having a hard time with the FDCAN on a NUCLEO-H723ZG. I’ve tried several setups (external with transceivers, external loopback with wires), but I’ve stripped everything back to Internal Loopback mode on FDCAN1 to simplify things.Current situation: I can actually see that the frame is sent successfully (no TX errors), but the receive interrupt/FIFO never triggers. It’s like the frame is going out into the void and not looping back into the RX FIFO.I'm using the HAL drivers.Here are the errors/status I'm getting via printf:Full code is available here: https://github.com/mpek29/FDCAN-NUCLEO-H723ZGHas anyone experienced this "TX works but RX fails" issue on the H7 series?Thanks for any help! mpek29
Hello everyone,My team and I are working with a custom board based on the STM32WB55RG. Due to limited pin availability, we need to use USB as a virtual COM port for serial communication. We successfully configured the USB Virtual COM and were able to print messages on the console without any issues.However, we encountered a problem after integrating SBSFU.The USB Virtual COM works fine within the SBSFU application, but once the SBSFU process completes and our custom application starts, the USB stops functioning. We can no longer see messages in the terminal, even though our application is running as expected by debugging it with the USART / LPUART.We have already checked the USB and clock configurations in both the SBSFU app and our custom application, and everything seems to be set up correctly. Furthermore, we also attempted the following:Forcing a USB re-enumeration by pulling the D+ pin low for a few milliseconds.Playing around with initializing and de-initializing the USB in both
Hello,I am attempting to measure the current consumption of an STM32L4 before and after entering STOP2 mode using a DC power supply. I expected the initial current of 165mA to drop down to the $\mu A$ range upon entering STOP2 mode, but it only decreased by 5mA.For my configuration, I have only enabled System Core - SYS - Debug - Serial Wire and a single GPIO pin for toggling to monitor the status via an oscilloscope. When STOP2 mode is activated, I confirmed with the oscilloscope that the GPIO toggling stops completely, indicating the CPU has halted. However, the power supply current remains high.I have attached my main.c file for reference. Could you please check if I have missed any necessary configurations or if I am doing something wrong?Thank you in advance for your help.
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.