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 may have found a CubeMX migration bug. I'm using version 6.14.1.I am developing a product based on the STM32G0B1 subfamily. The original MCU is STM32G0B1KBU6 which has 128K Flash.I need more flash, so I need to migrate the source code to the STM32G0B1KEU6, which has 512K Flash. The other functionality (e.g. pin outs, peripherals) are identical.To migrate the CubeMX project, This procedure was followed:https://community.st.com/t5/stm32-mcus/how-to-switch-from-one-stm32-to-another-using-stm32cubemx/ta-p/49884That post, which was posted by an ST Employee, was updated on August 6, 2025 (less than three months ago).I was able to import my existing KBU6 CubeMX project into a new project that targeted the KEU6 MCU. When I clicked GENERATE CODE, it eventually gave me this error dialog:EclipsecAn error has occurred. See the log fileC:\Users\XXXXX\.stm32cubeide\workspace_7364571360629961633\metadata\.log.That log file fairly short, it's at the bottom of this post. I was still able to
I tried to use YOLOv8n instead of YOLOX in the people detection and tracking project. However, after modifying the related files (app_config.h, postprocess_conf.h, and main.c) and generating the model weights for YOLOv8n, the people detection and tracking demo does not work as expected. I can build and boot the program through dev mode, but no tracking boxes or text overlays (e.g. inference speed) are displayed—only raw camera capture is shown.What is the possible issue that happened, and how should I debug? What addtional infromation should i provide?
Hi,Looking into STM32CubeN6\Projects\STM32N6570-DK\Examples\SD\SD_ReadWrite_DMA example,I see that quite heavy operations are used:SCB_CleanDCache_by_Addr (aTxBuffer, BUFFER_SIZE); // ... SCB_InvalidateDCache_by_Addr (aRxBuffer, BUFFER_SIZE);while the aRxBuffer[] and aTxBuffer[] are located in a noncacheable memory region.uint8_t aTxBuffer[BUFFER_SIZE]__NON_CACHEABLE; uint8_t aRxBuffer[BUFFER_SIZE ]__NON_CACHEABLE;Could you please explain why?Regards,A
Dear STM32 Support Team,Good afternoon.I am currently working on an STM32H7-based project using the Cortex-M7 core. The firmware is compiling and flashing successfully without any errors. However, I am facing an issue during live debugging — the breakpoints are not being hit, and it seems that the main stack pointer is not running as expected.I have already enabled serial wire debugging (SWD) through STM32CubeMX, and my current debugger configuration in Keil is as follows:RAM for Algorithm: 0x24000000, Size: 0x00080000Flash Algorithm: STM32H7x_2MB_FlashErase Full Chip: CheckedProgram / Verify: CheckedDespite these configurations, the code does not stop at main() or any user-defined breakpoints during debug sessions.Kindly assist in diagnosing the possible cause or suggest the correct configuration steps to ensure proper debugging on the M7 core.Thank you for your support.Regards,Rahul KumarEmbedded Firmware Engineer
Dear community, On my board, a STM32WB55CEU6. My aim is to add the DFU BLE possibility for code update.On the first picture, you will see mu CUbeProgrammer Interface.After click on "Read FUS infos", i'm able to read status.The FUS is ok, but the stack version ( 0.0.0) seems to say "no version".When i'm trying to flash the official binary of BLE_STACK_light (Light, full, extended,... same problem).I'v got an warning.An idea ?
Hello,I’m currently exploring the STM32N6570 MCU for an embedded AI/computer vision application.I would like to know how to port OpenCV or other AI inference frameworks to this device.Could you please guide me on:Whether OpenCV is already supported on the STM32N6570 (or within the STM32N6 MPU/MCU ecosystem)?Recommended toolchain or SDK to build and deploy OpenCV (STM32MPU SDK / Cube.AI integration)?Any available examples or reference projects combining camera input + AI processing on this MCU?Thank you in advance for your help.Best regards,Bobban K. S.
STM32H757 has FreeRTOS running. The goal is to stream JPEG data to the display using HAL interfaces to get performance. However, it is not working yet and I am here to get some guidance. I have it working with using third party library libJPEG. HAL Interfaces I am relying on: HAL_JPEG_DeInit(m_phjpeg) HAL_JPEG_Init(m_phjpeg) HAL_JPEG_DecodeCpltCallback() and HAL_JPEG_ErrorCallback() have been setup to release semaphore. HAL_JPEG_Decode_DMA() for non blocking decode DMA2D: RGB888 To ARGB8888 HAL_DMA2D_Init(&hdma2d) HAL_DMA2D_ConfigLayer() HAL_DMA2D_Start() HAL_DMA2D_PollForTransfer() with 1000 timeout DMA2D: BlendARGB To RGB888 (Blend to FG) stm32h7xx_hal_dma2d.h has the following macros that I am using: #define DMA2D_BACKGROUND_LAYER 0x00000000U /*!< DMA2D Background Layer (layer 0) */#define DMA2D_FOREGROUND_LAYER 0x00000001U /*!< DMA2D Foreground Layer (layer 1) */ Once the dma2d handle members are setup, the following happens: HAL_DMA2D_Init(&hdm
I porting yolov11 model to stm32mp257. and The target detection model I use ,The output tensor is a combination of [1x7x8400] and [1x4x8400]. [1x7x8400] should be our classification because I have set 7 categories, and [1x4x8400] should be our positional information. 1. best.pt changed to best.onnxfrom ultralytics import YOLO# Load the YOLO11 modelmodel = YOLO("best.pt")# Export the model to ONNX formatmodel.export(format="onnx") # creates 'yolo11n.onnx' 2. best.onnx changed to best.nb./stedgeai generate -m path/to/onnx/model --target stm32mp25 3. into broad stm32mp257 ,and get output shape. #C++float *pfloatdata = static_cast<float*>(nn_model->get_output(0));std::vector<ObjDetect_Results> returnx = parseModelOutput(pfloatdata); std::vector<ObjDetect_Results> parseModelOutput(float* output, int num_classes = 7, float confidence_threshold = 0.55f){std::vector<ObjDetect_Results> detections;float *data = output;const int num_boxes = 8400
Hello everyone,I'd first like to mention that this project is being developed with support from ST Brasil, which has provided important components to aid in this development.I'm working on firmware for motor control and, being new to this area, I'm looking for guidance on the best way to implement a specific part of the logic. 1. Summary and Context Here is a summary of the hardware and MCU configuration:Hardware: 3 low-side shunts. The signal from the Phase U shunt resistor is shared, acting as a common input for two of the MCU's integrated op-amps.MCU Config:1.1. Timer 1: Configured for Center-Aligned Mode 1. * CH1/CH1N, CH2/CH2N, CH3/CH3N are complementary PWM outputs. * CH4 is used to generate a capture-compare interrupt.1.2. ARR Value: The ARR (Auto-Reload Register) value is 1000.1.3. Interrupt Trigger: Timer 1 CH4 is set to generate a capture-compare interrupt when the CNT (counter) reaches 900.1.4. Modulation Index: For modulation index purposes, the maximum value for
When generating code with CubeMx version 6.15.0 there is a bug.No ClockPrescaler setting is found in the generaded code at the UART'SMCU: STM32H563Peripherals: USART1,2,3 and LPUART1When you generated the Code, a ClockPrescaler was not generated (missing).The Code goes in Error-Handler, because Prescaler is 1 by default. /** * @brief LPUART1 Initialization Function * @PAram None * @retval None */ static void MX_LPUART1_UART_Init(void) { /* USER CODE BEGIN LPUART1_Init 0 */ /* USER CODE END LPUART1_Init 0 */ /* USER CODE BEGIN LPUART1_Init 1 */ // #### THIS WAS NOT GENERATED by STM32CubeMX: #### // #### Code goes in Error_Handler #### hlpuart1.Init.ClockPrescaler = UART_PRESCALER_DIV16; /* USER CODE END LPUART1_Init 1 */ hlpuart1.Instance = LPUART1; hlpuart1.Init.BaudRate = 9600; hlpuart1.Init.WordLength = UART_WORDLENGTH_8B; hlpuart1.Init.StopBits = UART_STOPBITS_1; hlpuart1.Init.Parity = UART_PARITY_NONE; hlpuart1.Init.Mode = UART_MODE_TX_RX; hlpu
Hello Expert, I am working on an STM32F303VET6 project using the MCSDK. I want to configure TIM16 to generate a 10 ms periodic interrupt . However, I noticed that on this MCU, TIM16 shares its NVIC vector with TIM1 (TIM1_UP_TIM16_IRQHandler), which is already used by MCSDK for motor control.Could you please advise:Can I safely use TIM16 for my 10 ms task while TIM1 is used by MCSDK?If yes, what is the recommended way to handle the shared interrupt? Are there any potential conflicts or timing issues I should be aware of?If the solution could be illustrated with an example, it would make me so happy. In MCSDK- 6.41 , #define TIMx_UP_M1_IRQHandler TIM1_UP_TIM16_IRQHandlervoid TIMx_UP_M1_IRQHandler(void){/* USER CODE BEGIN TIMx_UP_M1_IRQn 0 *//* USER CODE END TIMx_UP_M1_IRQn 0 */LL_TIM_ClearFlag_UPDATE(TIM1);R3_2_TIMx_UP_IRQHandler(&PWM_Handle_M1);TSK_DualDriveFIFOUpdate(M1);/* USER CODE BEGIN TIMx_UP_M1_IRQn 1 *//* USER CODE END TIMx_UP_M1_IRQn 1 */}
Hello,I am learning bare metal programming for STM32F446RE and am trying to write a simple transmit driver for USART2. I managed to do it but my only problem is when I use HSI 16Mhz clock speed (or anything lower) I get a weird first character. When I use a higher clock speed it works fine (using another clock source). Does anyone know the reason for that?Thank you void USART_init(){ RCC->APB1ENR|=(1<<17); USART2->CR1&=~(1<<12); USART2->CR1&=~(1<<10); USART2->CR1&=~(1<<15); USART2->CR1|=(1<<13); // Baud Rate of 115200 and Clock of 16Mhz USART2->BRR=(8<<4 | 11); USART2->CR1|=(1<<3); USART2->CR1|=(1<<2); char g[15]; sprintf(g,"Hello\r\n"); for(int i=0;i<strlen(g);i++){ while(!(USART2->SR & (1<<7))); USART2->DR=g[i]; } while(!(USART2->SR & (1<<6)));
Dear STM experts: I am using the STM32G473RET6 chip for classic mode communication debugging in FDCAN, but there is a phenomenon where I cannot send information. In FDCAN-PSR, I can see an error of LEC being 5. After removing the CAN chip (SN65HVD230, R pin floating), an error of LECt being 2 appears. I am preparing to replace it with SN65HVD232,Is there any STM with similar routines to refer to? If so, where can I find it? Thanks. Best regards!
We have a batch of custom boards using the STM32H725IGK3 and have experienced several failures getting started with them as the SWD interface appears to be fried. Initially we thought just bad luck with the first couple (inexperienced engineers or ?) but the most recent unit failed after a few successful programming and debugging sessions. Do these processors need special handling or design considerations ? Our debug header follows previous designs, with Vcc, GND, nRST, SWDIO, SWCLK provided. nRST is gated with a couple other inputs to the MCU while SWDIO and SWCLK just have 100R series resistors to protect possible voltage conflict. So far just default 3v3 supply.When the boards were working, SWDIO showed Vcc while SWCLK showed 0V before any connections (expected based on internal pullups) while now the pins show about 0.8V until the STLINK/V2 is connected (upon which its pullup/downs take over). The STLINK pod has been tested and working on a NUCLEO_H723.It looks like we'll
I have an STM32L4R5ZI-P on a custom PCB. When designing the PCB I did not think far ahead enough and do my due diligence when it came to assigning and wiring pins on the STM32 in order to flash it. My design incorporates USB D connected to my PCB which supplies power, and such, along with connections to USB_DM and USB_DP on my STM32. I did not wire BOOT0 or NRST. After looking online a bit, I heard that I must pull BOOT0 high and NRST low, allowing the STM32 to enter boot mode and then I can flash my STM32 via the DM and DP pins (using the CubeIDE and CubeProgrammer, etc.). I was just planning to jump BOOT0 to 3.3V and NRST to GND and then use my DM and DP pins on the USB to program is somehow using my PC. Am I thinking about this correctly? Is there an easier way to flash my virgin STM32 on my custom PCB? I do have a NUCLEO evaluation board for my specific STM32L4, which I have programmed and ran code on already. I was wondering if I can utilize the ST-LINK that is on the NUCLEO
Testing a board with STM32U5A5. VDD is 3.3VI have configured one GPIO as input with an external pullup to 3.3V through a 470k ohm resistor.The input reads high, but when I measure the input with a scope, I read 2.2V on the input, which is below 0.7VDD which is guaranteed as V_IH, but above 0.5VDD+0.2 which is specified by design as V_IH.Is 470k ohm too high of a pullup resistance?
Hello ST Community teamThe pin F11 on the TFBGA216 figure (figure 4 of the AN4660) should be VDD and not VSS according to the products datasheets (for the STM32F469N and STM32F769Nx6). That should be rectified on the next doc revision. Best Regards.II
Title edited with correct board part number. Hello ST Community, I’m working on integrating the NUCLEO-W67W62M1 Wi-Fi module with an STM32H723ZG(spi ptotocol) board using the Arduino connectors.I followed the official documentation for the CLI example and generated the .ioc project accordingly. The project builds and flashes successfully, but I’m getting stuck during the modem initialization. Host MCU: STM32H723ZG (Nucleo-H723ZG board) Wi-Fi Module: NUCLEO-67W61M1 Connection: Arduino connectors Firmware on Wi-Fi module: t01.bin (flashed in standalone mode) Example used: CLI project generated from STM32CubeMX (following ST documentation) RTOS: FreeRTOS(cmsis-v2) (default configuration) problem1: During initialization in W61_AT_ModemInit(W61_Object_t *Obj), the function fails at the semaphore wait: xReturned = xSemaphoreTake(mdm->sem_if_ready, pdMS_TO_TICKS(4000)); if (xReturned != pdPASS) { SYS_LOG_ERROR("sem_if_ready not received\n"); ret = -1; g
Hi,I'm developing a SW project in a WINSTAR display (MCU STM32F750) and using the STM SW (TouchGFX Designer, STM32CubeIDE and STM32CubeProgrammer).Until now, I design different screens and some parameters are saved and managed by means of the Model.cpp & Model.hpp.But now I need to save some values in the non-volatile memory because I need the screen starts with specific values stored.What I need to configure and add in the code (and where) to enable the writing and reading in non-volatile memory?Thanks in advance for your time :)Josep
I have been working with sensorless BLDC motor control using NUCLEO-U575ZI-Q + NUCLEO-IHM08M1. When I work with Motor Control Workbench I see this warning "IWConnect: BEMFSensingADC BEMF_V is not connected to any matching input (ADC[0-9]*)_IN(?!N)" Can anyone explain this? Is there any physical wiring needed?
Hello, our company is concerned about potential export control restrictions affecting Nexperia products.We currently use several automotive logic devices from Nexperia and would like to know if STMicroelectronics offers equivalent parts as alternatives. Could you please advise?Thanks,Claude.
I am trying to apply this configuration to my STM32H757 MCU where I am making a development board. here few things confuses me. 1. I have selected this configuration for better efficiency + noise performance. guide me if I am wrong2. What is the VDD External it seems like another input other than VDD.
Hi.I'm trying to develop some SW on the M4 core of STM32MP157FAD1 on custom board with custom Linux.After 2 days of fighting I'm finally able to run the tty echo example on it.But I still struggle with connection to the board.Why CubeIDE Debugger requires Serial port?We have the SSH accessible through the USB ETH over IP, that should be enough.The Debugger resolve wrongly IP of the board:We have pppd interface in the Linux. The debugger wrongly detects it's IP as the debugger IP.It results with this error:I'm also getting this error in console, it looks like the script/commands are interpreted wrongly:I'm still not able to get the ST-Link to work. It always ends with this error: Thank youP.S.For others who also struggle to get it to work, check your device tree, CubeMX doesn't generate proper mbox m4_rproc. Add to end of the dts to the user section this:&m4_rproc { mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>, <&ipcc 3>; mbox-names =
Hi,I'm trying to deploy a quantized ONNX neural network on a STM32N6-Nucleo and inference on board returns clipped values (see clipped-output.png). Previously, I've exported and quantized my torch neural network to onnx using the following configuration (the same is used in this end-to-end notebook example) torch.onnx.export( model, inputs, str(onnx_path), input_names=input_names, output_names=output_names, opset_version=15, export_params=True, do_constant_folding=True, ) quantize_static( str(onnx_path), str(int8_path), CalibReader(str(calib_path)), calibrate_method=CalibrationMethod.MinMax, quant_format=QuantFormat.QDQ, per_channel=True, weight_type=QuantType.QInt8, activation_type=QuantType.QInt8, reduce_range=True, extra_options={'WeightSymmetric': True, 'ActivationSymmetric': False})I've generated c-files related to this ONNX model using the following command : stedgeai generate --target stm32n6 --model "int8.onnx" \--st
Hello,I am testing the LIS2MDL magnetometer in single-shot mode with offset cancellation enabled, according to the datasheet (DS12144 - Rev 6, page 22). The documentation states that in single-shot mode both bits OFF_CANC and OFF_CANC_ONE_SHOT in register CFG_REG_B must be set to 1.However, when these bits are both set (CFG_REG_B) and a single measurement is triggered by writing md = 01b in CFG_REG_A the measurement never completes — the ZYXDA flag in STATUS_REG remains 0 permanently.If only OFF_CANC_ONE_SHOT=1 is set, the measurement finishes normally and ZYXDA is asserted, but the output values look identical to normal single-shot measurements (no visible offset compensation effect).Test conditions:4WSPIBDU=1verified data readout sequence (reading all 6 output bytes resets ZYXDA properly)communication via SPI verified by WHO_AM_I = 0x40It appears that combining OFF_CANC=1 and OFF_CANC_ONE_SHOT=1 prevents the internal FSM from completing a single measurement.Questions:Is this a k
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.