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
Hi,How do I serve request Get Source Capabilities Extended? I'm using STM32G0B1 with a port configured as SRC.When a SINK sends the Get Source Capabilities Extended the STM PD library responds with 'Not Supported' and my code is not aware that this even did happen. Is there way to intercept and serve this request? At least the callback structure does not appear to have direct support for this. USBPD_DPM_ExtendedMessageReceived is never called. /* CAD callback definition */ static const USBPD_PE_Callbacks dpmCallbacks = { USBPD_DPM_SetupNewPower, USBPD_DPM_HardReset, USBPD_DPM_EvaluatePowerRoleSwap, USBPD_DPM_Notification, USBPD_DPM_ExtendedMessageReceived, USBPD_DPM_GetDataInfo, USBPD_DPM_SetDataInfo, USBPD_DPM_EvaluateRequest, USBPD_DPM_SNK_EvaluateCapabilities, USBPD_DPM_PowerRoleSwap, USBPD_PE_TaskWakeUp, #if defined(_VCONN_SUPPORT) USBPD_DPM_EvaluateVconnSwap, USBPD_DPM_PE_VconnPwr, #else NULL, NULL, #endif /* _VCONN_SUPPORT */ USBPD_DPM_EnterErrorR
A couple of weeks ago STM32Cube disappeared off my computer. I went a got the install file for the most recent version (2.1.1). Since I have installed this when I try to import an old project into the workspace or use MX to generate code when trying to configure the pin outs to start a new project it keep trying to import lots of additional projects giving prompts that the project is old, it will be removed the new version will be installed. It then tries to import the STM32072B_EVAL project and hangs up.All the projects I'm trying to work with at the moment are based on the NUCLEO-F413 board.These are the imported projects, none of these are the project I'm trying to import.This is when it hangs.
Hello all,There might be a possible bug in HAL_UART_DeInit(). When calling HAL_UART_DeInit() when it is already initialized could lead to CPU starvation. Assume that an interrupt fires after calling __HAL_UART_DISABLE(huart); and before huart->Instance->CR1 = 0x0U; the interrupt is going to keep firing provided that some conditions are met. I was able to run a debug session and saw that only the interrupt was firing.From the ref. manual -> Note: If TE bit is reset and no transmission is on going, the TC bit is immediately set.This means that the TC bit is always going to be set and the interrupt is constantly going to fire regardless of clearing the TCF in ICR. The reference manual also mentions to ensure TC bit is being set before calling __HAL_UART_DISABLE(huart).I am running into this issue when TE is reset and TXIE is set after calling __HAL_UART_DISABLE(huart). This happens extremely rarely but I am able to reproduc
Looking for something to try. I'm want to recover from a failed firmware update of an MLite-880 from Elecevolve after their their 1-click installer. Elecevolve suggested a manual install using the firmware binary and STM32CubeProgrammer. I can put the device in its "DFU FW update mode" and connect to the device from the STM32CubeProgrammer using USB. After connect, the log shows:08:45:07 : STM32CubeProgrammer API v2.22.0 | Windows-64Bits08:45:35 : Disconnected from device.08:46:01 : USB speed : Full Speed (12MBit/s)08:46:01 : Manuf. ID : MALAHITEAM08:46:01 : Product ID : Malahit-Lite DFU08:46:01 : SN : 305B376E313308:46:01 : DFU protocol: 1.108:46:01 : Board : --08:46:01 : IAP08:46:01 : UPLOADING ...08:46:01 : Size : 1024 Bytes08:46:01 : Address : 0x800000008:46:01 : Read progress:08:46:01 : Data read successfully08:46:01 : Time elapsed during the read operation is: 00:00:00.053When I click Start Programming, literally nothing happens except the progress bar at the bottom previous
is there a template for developing a custom bootloader that uses the lpuart?Has the application firmware the ability to trigger a bootloader state so I can upload the new application firmware into stm32g051g8?What are the changes that I have to do on the application firmware?Thank you all.
Hi everybody.I have a problem with my Arduino GIGA R1 + Giga Display shield, configured by CubeMX. I configured the external RAM and flash and it works fine. I also successfully configured TouchGFX.My only remaining problem is the startup of the board. When I power it up, it doesn't boot. Even the ST-Link can't see the MCU. I must start it with BOOT_O at 0 (there is a button on the board) and it enter in bootloader mode and the DFU connection works. I can then connect the programmer, flash the Arduino firmware and after that, I can program/debug via ST-Link, I can reset it it still working. I verified the BOOT_ADDRESS it's on the good memory and not changed by Arduino firmware. As it work under reset, I presume memories are well configured.I can't find what could prevent the core to start. Both core start well on reset (verified with onboard LEDs) but nothing happen on power on. Does anyone have an idea of what could fail or give me some hints on what to look
Can anyone explain this footer note in the electirical characteristics sheet for the STM32F777xx STM32F778AxSTM32F779xx. on page 110.2. 216 MHz maximum frequency for 6 suffix version (200 MHz maximum frequency for 7 suffix version). I am using the STM32F779NI. Is the suffix 7 or 9? I dont see it specificed anywhere. Thanks!
Hello ST Community,I am working on the NUCLEO-N657X0-Q board with a TrustZone project configured in STM32CubeMX with three contexts: FSBL, AppSecure (AppS), and AppNonSecure (AppNS). The FSBL is working correctly and jumping to AppS successfully.I was having an issue with the SAU Configuration. As per the wiki article, "How to start with RIF on STM32N6 MCUs" https://wiki.st.com/stm32mcu/wiki/Security:How_to_start_with_RIF_on_STM32N6_MCUsI configured the SAU region. I configured the FLEXRAM, AXISRAM1 and AXISRAM 2 in STM32Cube IDE. But it stays disabled when I tried to generate code. My partition_stm32n657xx.h file looks like :How to resolve this issue?
After porting the application "STM32Cube_FW_U5_V1.8.0\Projects\B-U585I-IOT02A\Applications\SBSFU" to our own board we have everything operational apart from the ability to invoke the local loader in production mode (RDP2).I have reverted to the original B-U585I-IOT02A board and project and have a similar issue so I am wondering if this is broken or we have misunderstood something. The loader can be invoked in TFM_DEV_MODE with RDP0 but not in production mode with RDP2. The SBSFU application runs fine.Changes from the default STM SBSFU project settings we used to test this on B-U585I-IOT02A1) In SBSFU_Boot project remove the TFM_DEV_MODE pre-processor symbol definition2) In boot_hal_cfg.h >> #define TFM_TAMPER_ENABLE NO_TAMPER3) In boot_hal_cfg.h >> #define #define TFM_OB_BOOT_LOCK 04) In flash_layout.h >> //#define MCUBOOT_PRIMARY_ONLY (definition commented out)5) In flash_layout.h >> #define MCUBOOT_APP_IMAGE_NUMBER 26) In hardening.sh
Hi,I have a OTP provisioning script that wrote OTP 1 with value 0x000000ff, executing a partial close of security state B. The board now passes ROM/FSBL/OP-TEE/U-Boot but resets when the Linux kernel probes the first RIF-protected peripheral (HPDMA3). Disabling HPDMA3 in DT causes the same reset on HPDMA2, indicating closed-state RIF policy is being enforced globally regardless of the device tree configuration applied by OP-TEECan the board be returned to a open state using an rma procedure? Kind Regards,Jack Redpath
Hi all, I've developed an external loader for STM32H563ZIT6 nucleo board for W25Q128JV external memory. I've followed the ST guide on how to implement it and it's currently working on cube programmer:verified mass erase, download of a .hex file, verify through data read and everything is ok. When I load the external loader into the debugger section of my main program, flagging initialize and enable flags, the debugger gives me errors; attached the .txt file with the console log. I've added a gpio pin on the init() function of the loader to check if the init starts when loading through debugger, but the led have never tourned on. Can someone please give me a hand to solve this problem? Thanks
Has anyone had success installing the Cube IDE on a Raspberry Pi 5? I first got the error message "Installation dir cannot be temporary one: /home/my_name/Downloads/makeself_dir_o70WRx"I tried various workarounds suggested by Gemini, ultimately creating new directory/opt/stm32_installermoving the unzipped file to this new directory and then trying .../opt/stm32_installer$ sudo ./file_name.shIt went right ahead and created a new temporary folder in opt/stm32_installer and failed in the same way again!If anyone has succeeded in getting the Cube IDE to work on a R Pi 5, please let me know how you did it.Thanks for reading this far.
I have installed version 13.3.rel1, clean the files and re compile the code :I have a linker error "undefined reference" to a function although the function referenced in the files and declared in the H file who was included. " C:/ST/STM32CubeIDE_2.0.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.13.3.rel1.win32_1.0.100.202509120712/tools/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: ./Core/Src/stm32u0xx_hal_msp.o: in function `HAL_PCD_MspInit':C:/Users/../Electronics/../Software/USB_CDC_U0/USB_CDC_U0/Debug/../Core/Src/stm32u0xx_hal_msp.c:102:(.text.HAL_PCD_MspInit+0x4c): undefined reference to `MX_USB_CDC_Init'collect2.exe: error: ld returned 1 exit statusmake: *** [makefile:65: USB_CDC_U0.elf] Error 1"make -j12 all" terminated with exit code 2. Build might be incomplete.15:33:51 Build Failed. 2 errors, 0 warnings. (took 13s.995ms)I have tried the following:1. I have tried changing the file order in "
Hello , i wanted to know what the process of debugging projects generated by Cube Ai Studio ? The automatic flash from cube ai studio to the board works , but when i wanted to debug the exported projected via stm cube ide , it doesnt work , can u please share a tutorial of whats the recommended process ?Im using the nucleo n657x0-q board
Connected STEVAL_$MKI243AA board to a nucleo-g491re board using 4 wire spi interface. The spi bus is setup to run @ 146 Kbits/sec. Reading back bad data. WHO_AM_I is 0x48PIN_CTRL is 0x3E Not sure but seem like the device is power
I am working with the MDF peripheral and find this to be a great peripheral. However the CubeMX generated code for multiple DMA based filters is not correct.I am using two filters with DMA and CubeMX generates the following descriptors:MDF_HandleTypeDef MdfHandle0;MDF_FilterConfigTypeDef MdfFilterConfig0;MDF_HandleTypeDef MdfHandle1;MDF_FilterConfigTypeDef MdfFilterConfig1;DMA_NodeTypeDef Node_GPDMA1_Channel1;DMA_QListTypeDef List_GPDMA1_Channel1;DMA_HandleTypeDef handle_GPDMA1_Channel1;DMA_NodeTypeDef Node_GPDMA1_Channel0;DMA_QListTypeDef List_GPDMA1_Channel0;DMA_HandleTypeDef handle_GPDMA1_Channel0; When starting the application I found that both MdfHandle0 and MdfHandle1 refer the same DMA handle, handle_GPDMA1_Channel1. Likewise both handle_GPDMA1_Channel0.Parent and handle_GPDMA1_Channel1.Parent refer the same filter handle, MdfHandle0.This is caused by generated function HAL_MDF_MspInit which is called when starting a filter using HA
hello ST Community, Is it possible to change the RDP "Read Out Protection" level from level 1 to level 0 without erasing the flash data? I've currently been able to change the level from RDP level 1 to level 0 for Nucleo-H755ZI-Q, but changing the level causes a mass erase of the flash drive. Is it possible to avoid this? If so, is there a code example? Thanks for your support.
Hello,I am working on the boot process and security of the STM32H757.For my tests, I have placed the two boot addresses for the two cores (ADD0 and ADD1 for CM7 and CM4) in the internal flash memory, with an ISR vector at each boot address :ADD0: standard ISR vector calling the standard Reset_Handler, which in turn calls the main function g_pfnVectors: .word __initial_spTop /* Use internal RAM for stack for calling SystemInit. */ .word Reset_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler ... and ADD1: virtually the same ISR vector but calling BootPin_Handler instead of Reset_Handlerg_bootPinVectors: .word __initial_spTop .word BootPin_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler ... Everything seems to be working properly, at least up until the security test.When RDP is set to level 0 or 1, everything is fine and
I’m working on STM32F405RGT6, receiving audio from ICS43432 (MSB First, 24bit on 32 bit frame).sing Circular DMA (double buffering) to read it in. After 3 days of debugging and millions of mem corruptions and stackoverflows later I finally managed to get the pipeline to work without MemCorruptions.Basically my implementation:I have a UItask, that handles button presses and changes the system states. The StartWriteAudioTask() starts the DMA and creates a .wav file. Also sets the systemState to STATE_RECORDING. DMA fills the buffer and gives semaphore to my MicTask, which basically does an endian conversion and writes a wav block. Just in case I also implemented a copy of the audiobuffer, because DMA might overwrite before I can manage to write it to a wav block. Using the debugger I see that my state machine logic and start/stop works fine, file initialization works as well and even the file appears and is playable. But the tim
The issue I am facing when using the STM32U585 microcontroller in the MATLAB and Simulink (M&S) Environment.1. The controller is the STM32U585Allx. Discovery kit. 2. We are working on a project in Simulink (Model-Based Design). As a first stage, we are sensing three-phase AC currents and a PWM generator as a part of our project. For this project the hardware is provided by STM32 U585-based Discovery kit. All hardware support packages have been installed in the M&S environment. We are setting up the hardware in STM32CubeMX, configuring ADC1 and Timer1. All the desired parameters are set and we are generating the code.ioc file. The ADC is set for injected signal inputs. TRG0 provides the trigger for the ADC1. The ADC1 block in Simulink is not getting linked with .ioc file generated in SubeMX. The error is: Index exceeds the number of array elements. So we cannot proceed further. We would like to get
Thank you @B.Montanari for the complete guide. Unfortunately on my computer the project is not created as packs can't be downloaded, error is the following (in this case for button pack): Error installing STMicroelectronics.button_part_drivers.2.0.0 pack Could not save pack of pack-URL: https://developer.st.com/st-pack-server/api/v1/pack/STMicroelectronics.button_part_drivers.2.0.0.pack, got: Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL protocol must be "http:". I'm behind a proxy (set at system level), and if I use the URL listed I'm able to download and manually install the pack. I tried setting proxy information on MX2 as IP:port with no result. Is there a way to solve this? BR Edit: moved from How to create a new project with STM32CubeMX2
Post Edited by ST moderator to apply source code formatting Hello, To need to disable external read/write access to flash in stm32c071 i have changed the RDP from level 0(0xAA) to level 1(0xBB) and was successful in doing so. But when I try to change from level 1 to level 0 i am unable to change it. code to change from level 1 to level 0. eFLASH_ErrorType_t FlashReadWriteEnable(void) { eFLASH_ErrorType_t err_code = e_SUCCESS; // Check if flash is busy err_code = CheckFlashBusy(); if(err_code == e_SUCCESS) { // Unlock flash err_code = flashUnlock(); if(err_code == e_FLASH_UNLOCKED) { // user options unlock err_code = flashOptUnlock(); if(err_code == e_FLASH_OPT_UNLOCKED) { FLASH->OPTR &= (~FLASH_OPTR_RDP_Msk); FLASH->OPTR |= (0xAA << FLASH_OPTR_RDP_Pos); FLASH->CR |= FLASH_CR_OPTSTRT; // Check if flash is busy err_code = CheckFlashBusy(); if(err_code == e_SUCCESS) { FLASH->CR |= FLASH_CR_OBL_LAUNCH; } } } } return err_code;
I want to try the multi antena design mentioned in AN6121. where can I either download the gerber files for the PCB or order a PCB?
Hi,i tried to migrate my project to CubeMx v6.17.0 coming from v6.16.0As a result, the firmware package was also updated to FW_MP1 V1.7.0I am using CubeIDE 2.0.0After migration the compilation fails with following error in auto-generated FreeRTOSConfig.hDescription Resource Path Location Type each undeclared identifier is reported only once for each function it appears in FreeRTOSConfig.h /PROJECT_CM4/Inc line 71 C/C++ Problem/* USER CODE BEGIN Header */ /* * FreeRTOS Kernel V10.6.2 * Portion Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. * Portion Copyright (C) 2019 StMicroelectronics, Inc. All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * the Softw
EDIT: Resolved! It looks like this was an issue with the pin reporting on our end. Hello, We would like to use MC workbench, however we want to move from ADC1/2 to ADC12 for the current sense, VBUS and temperature NTC. Is there a way to implement this alternate ADC configuration in MC workbench? If we need to manually change the FW, is there anything we need to watch out for?We are moving from the following dev kit setup to a custom PCBAAlgorithm: FOCType : MODULARControl BoardNUCLEO-G474REMcuSTM32G474REBridgeX-NUCLEO-IHM09M2Power BoardSTEVAL-IPM08B
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.