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
2.0 of STMCubeIDE loads but is missing the New Project 'wizard' of 1.15:2.0 only allows a blank project to be created, but missing the graphic of the uP.1.15 allows wizard to run but then fails at the last step with error message something to do with embedded software, no matter what I try it always does the same. Is anyone having any sucess of getting this STMCubeIDE to actually run as its supposed to on a Mac?
Hi ST, i have one question for you. Could you please make "examples" more messy? Is it even possible? Lets see, i believe you can do it even worse. To be honest, i have never saw this nonsense and mess in my life. And i have also worked as ABAP developper. Have you ever heard about rule, that strongly recommends NOT to use "goto"? No? I thought so.Have you ever heard about spaghetti code? Because you created one really huge. That example about UsbX for Stm32u5 is awfull. Who did it? Intern? Student? What is wrong with you? Even renesas is now better than you.
Hi. I'm trying to read data from W25Q64 flash memory.These are my connections:And these are my SPI and RCC and GPIO settings:And these are my functions and main code:Using W25Q_ReadID function, i could read device ID.But i can't read data stored on device using W25Q_Read.these are my result that i think they're wrong:what's wrong with my code or configurations?
Hi everyone,This is a follow-up to my previous question about LED behavior on the STM32H755ZI-Q when using OpenAMP communication between CM4 and CM7.https://community.st.com/t5/stm32-mcus-boards-and-hardware/nucleo-h755-led3-not-turning-on-pb14-in-ipc-example/td-p/829379 While debugging why LED3 on PB14 was not turning on (assigned to CM7), I found a very unusual issue in the CM7 startup code generated by STM32CubeMX.CubeMX generates the following D2 domain clock readiness loop:timeout = 0xFFFF; while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) == RESET) && (timeout-- > 0));If I rewrite the loop explicitly:while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) == RESET)) { timeout--; if (timeout < 0) { Error_Handler(); } }then PB14 suddenly starts working normally.But here is the strange part:If I add any variable initialization before the loop, for example:timeout = 0xFFFF; while((__HAL_RCC_GET_FLAG(RCC_FLAG_D2CKRDY) == RESET)) { timeout--; if (timeout < 0) { Error_Handl
Hi all,I've been in the process of switching from the GNU toolchain (which is working alright) to the ST-provided clang but I am having difficulties with the mentioned extension.The following has two links to two different branches of the same repository. First one uses GNU toolchain, and the other uses starm-clang:https://github.com/anttikes/usb-fm-radio/tree/mainhttps://github.com/anttikes/usb-fm-radio/tree/swap-to-clangdThe project can be built in both branches, and works correctly with the first but the latter one has a rather interesting problem with clangd. After configuring and building if you open e.g. "Core/Src/i2s.c" you can see an error message at the very beginning:"Unsupported option '-mcpu=' for target 'x86_64-pc-windows-msvc'".It seems as-if the cross-compilation settings for the clangd program are not set at all. For some reason it belives we are building for the host architecture.There is also a second problem with clangd, but it is related to the STM32CubeF0 repositor
Hi there,I am trying to add the STM32WL3xx chips to embassy-rs and for that I need to be able to generate the peripheral data. They use the SVD files for that information.I was able to find the SVD files for the STM32WL30, WL31 and WL33, but the ones I found seem to be lacking almost all `enumeratedValue` that are present in the other SVD files I could find of other chips. Instead it seems to be described in the description fields but that it way harder to parse.Are there SVD's available anywhere with the data in a way that is it more parse-able?Kind regards
I am facing an issue with my Nucleo-F446RE board. It was working normally before, but now when I connect it via USB, the ST-Link LED lights up red, and I cannot upload code, nor does STM32CubeIDE recognize it. I tried updating the ST-Link firmware using the ST-LinkUpgrade tool (STSW-LINK007), but the program displays an error message: "No ST-Link device detected. Please connect it and then retry," even though the computer recognizes the ST-Link in Device Manager as "STMicroelectronics STLink Virtual COM Port (COM6)."I have verified that the CN2 jumper settings are enabled (ON).I cannot install the drivers or update the firmware because neither ST-LinkUpgrade nor STM32CubeProgrammer recognizes the board.I kindly request your help to identify the reason why ST-Link is not being detected and how to resolve this issue.Thank you in advance for your assistance.
Hello ST experts,I have a weird experience with UART communication between two STM32G4 microcontrollers. MCU1 sends 10 bytes to MCU2 via UART. Both UARTS are configured with 9600 Baud rate with DMA in circular mode. The Problem arises when the MCU1 is turned on, it sends 11 bytes which the first byte is 0x00 in case I need only 10 bytes to be received. Can you help me in this issue?Best,Davood.
Hello,In the AEK-POW-BMSCHAIN example code, I see high-level APIs like: AEK_POW_BMS63EN_GetModule() AEK_POW_BMS63EN_init()But in my AutoDevKit installation, only low-level chain APIs (AEK_POW_BMS63CHAIN_*) are available.Could you clarify:Are the high-level AEK_POW_BMS63EN APIs included in the public AutoDevKit package?If not, are they only available via partner/NDA packages?Should regular users implement high-level functionality using only the low-level APIs?Thanks!
I’ve been trying to run an SPI loopback test, but my code gets stuck in the transmit function. The data never actually transmits, so the function waits indefinitely. When I checked the SPI clock pin with a logic analyzer, it remains low. I also verified the peripheral clock in the SFRs, and it shows that the SPI clock is enabled.For the hardware setup, I connected MOSI to MISO with a jumper wire.I’ve attached images and included the full code—please take a look and help me figure out what’s causing the issue. One more note: I’ve used the same configuration in previous projects and it worked fine, but now it suddenly doesn’t.If the information I’ve provided isn’t clear or sufficient, I apologize—please let me know, and I can share more details./* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @at
Hello,While testing FOC operation using Hall sensors in MCSDK, I encountered an issue that I’d like to discuss.When attempting low-speed BLDC control (around 100-200 RPM) with FOC, the electrical angle updates discontinuously at 60-degree intervals, as shown in the graph below. If I first apply a high-speed/high-torque command so that HALL can interpolate the electrical angle and then switch to low-speed control, the problem is resolved. However, this approach becomes challenging when the motor is under heavy load.Is there any method or idea to make the motor run smoothly at low speed directly from a standstill without going through this intermediate process?Additionally, it seems that in 6-step control, users can only specify a speed reference. Is there any way to set a current (torque) reference without modifying the core MCSDK code? If this feature is not currently supported, I’m curious whether there are plans to enable 6-step control via current reference in the future(in case som
As the subject says. searches over many hours have resulted in several different ways to do this, none of which work.The CLOSEST ive gotten to a reaction out of a textbox outsode of some event is to break the rules, and *** with the autogenerated code. All that resulted in was getting the box to change to "??" which as crazy as it sounds, progress, because I have yet to figure out what methods to call to do this seemingly simple thing.From the documentation: touchgfx::Unicode::strncpy(textArea1Buffer, "string", TEXTAREA1_SIZE); textArea1.resizeToCurrentText(); // optional, will resize the box to fit the text if it is too small textArea1.invalidate(); This does absolutely nothing. Again, from the documentation: // With int/double/UnicodeChar* touchgfx::Unicode::snprintf(textArea1Buffer,TEXTAREA1_SIZE,"My numbers %i %i", my_var_1, my_var_2 ); // With float touchgfx::Unicode::snprintfFloat(textArea1Buffer,TEXTAREA1_SIZE,"My float %f", my_var_float ); textArea1.in
Hello, Microsoft has updated their Visual Studio Marketplace Terms of Use to bar vscode forks from using extensions from their marketplace. I'm currently using the Cursor IDE, which has recently switched over to open-vsx.org for their extension marketplace and thus, I no longer have access to STM32 for Visual Studio Code extensions.Are there any plans to cross-publish the official STM32 for Visual Studio Code extension over to open-vsx.org?
Hi, everyoneI recently encountered a strange phenomenon. I opened three DMA channels on the STM32G474RBT6.The first one is Channel 1 of DMA1 (circular mode), which is used for automatically collecting the data converted by ADC.The second one is channel 8 of DMA2 (normal mode), which is used to transfer the calculated data to the timer for updating the PWM.The third one is Channel 1 of DMA2, which (normal mode) is used to send serial port data of variable length. The first two did not enable the interrupt service function.But if the DMA in the third case does not enable the interrupt, the serial port sending process will be stuck (the HAL library shows that the DMA2channel1 is in the “BUSY" state). If the interrupt is enabled, this situation will not occur.However, the interrupt service of the first two I didn't enable DMA can still run normally. The data of the ADC can be automatically transmitted, and the timer can also send out the correct PWM signal. The priority of DMA has already
In my embedded software project, I need to write a bootloader. I wrote an application code for the bootloader and testing, and everything is fine so far, but the delay function in the application code is not working. I think the reason for this is the Vector Table. I wrote the vector table to the RAM address, but it didn't work at all. It jumps to the application code, turns on the LED, but does not toggle. I would really appreciate your help. (STM32f030c8t6 board)#define APP_START_ADDRESS 0x08006000 // User application start address #define APP_START_ADDR 0x08006000 #define SRAM_BASE_u 0x20000000 #define VECT_TABLE_SIZE 0xC0 // 48 vectors * 4 bytes void JumpToApplication(void) { // 1. Dsiable all interrupts __disable_irq(); // 2. Deinit HAL and RCC (optional if bootloader did init) HAL_DeInit(); HAL_RCC_DeInit(); // 3. Copy vector table memcpy((void*)SRAM_BASE_u, (void*)APP_START_ADDR, VECT_TABLE_SIZE); // 4. Remap SRAM to 0x00000000 SYSCFG->CFGR1 &= ~SYSCFG_CFGR1_
I have tried to import example project, in that after selecting example and board then it tried to unzip the required F4 packages(stm32cube_fw_f4*) but 1280 is unzipped successfully but 1283 cant unzip this error remains what to do to solve this?
Hi everyone,I'm new to STM32 solutions. My goal is to use the RTC Wake-Up Timer (WUT) to wake the MCU from Standby mode. I'm starting with a simple test:Cold Boot - Program the WUT to wake the MCU in 5 seconds and enter Standby.Warm Boot - Blink an LED, increment a counter (in BKPSRAM), and go back to sleep for 5 more seconds.The Problem: The MCU enters Standby, but it never wakes up.I am calculating the WUT for ck_spre (256 Hz) as follows: wakeup_counter = 5 (seconds) * 256 (Hz) = 1280.HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_RTC_Init(); if (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET) { // LSE FAILED! while (1) { //(error) HAL_GPIO_WritePin (LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_SET); HAL_Delay (100); HAL_GPIO_WritePin (LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_RESET); HAL_Delay (100); } } uint32_t time_wkp_seg = 5; uint32_t wakeup_counter = time_wkp_seg * 256; if (__HAL_PWR_GET_FLAG(PWR_FLAG_SBF) != RESET) { // 1. Woke up from Standby // 2.
I would like to add a custom resolution hdmi display (1024x600) to my STM32MP257F-DK board is it possible as the dmesg output is as follows [ 930.525408] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:32:HDMI-A-1] [ 930.590130] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD monitor [ 930.590170] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD size 20, SAD count 0 [ 930.590208] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD monitor [ 930.590223] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD size 20, SAD count 0 [ 930.591397] [drm:drm_mode_debug_printmodeline] Modeline "1024x600": 60 49000 1024 1072 1168 1312 600 603 613 624 0x48 0xa [ 930.591421] [drm:drm_mode_prune_invalid] Not using 1024x600 mode: CLOCK_RANGE [ 930.591433] [drm:drm_mo
Hi I was trying to connect a custom LVDS display to my STM32MP257F-dk board but it does not seem to work, The display has a resolution of 1024x600 pixel and also it uses "vesa-24" scheme, so i assume that i don't need to change the device tree as it matches the specification of the default display which is supplied with the dev kit. If otherwise please advice. Please not that i am not using the touch panel of the display so the i2c connection of the dev kit are not connected to the display board can that disable the LVDS port ? Is there any way to debug the LVDS display, Please advise in this matter. Regards,Samip
Hello,I try to connect the STM32CubeProgrammer (v2.20.0) to the STM32L496 that has enabled Read-Out Protection, but it is not possible. I need just to do the full chip erase and download new firmware.I remember that STM32CubeProgrammer (v2.0.0) allowed to erase the whole ship and connect to MCU successfully. Unfortunately, this old version doesn't work on Windows 11.Please help me to execute these two steps (full chip erase and connect) for the STM32L496 that has Read-Out Protection enabled.Thanks,Alex
I am designing a system that will utilize the dual bank feature of the STM32 devices to make a robust system for OTA updates. I am currently using a STM32U545 for my project and have questions about writing to the FLASH_OPTR to change the SWAP_BANK bit.My setup has an external microcontroller connected to my STM32U545 that interfaces through UART and has control of the BOOT0 pin and the RST pin of the STM32 device. I was confused by the statement in the AN3155 pg. 20 when it talked about the Write Memory command and said "If the Write Memory command is issued to the option byte area, all bytes are erased before writing the new values, and at the end of the command the bootloader generates a systemreset to take into account the new configuration of the option bytes". What does it mean by all bytes are erased? My current plan was to use the read memory command and read the register FLASH_OPTR at 0x4002 2040 and then read bit 20 of that register(SWAP_BANK bit) then perform an operati
I have an other issue at the moment. I cant use the GPIOD, VSSI02 is on 3.3V. Im using stm32g0b1kb. It wont toggle it wont read, it does nothing. I have created a small application far away from my main app just to test the GPIO functions.Hi, I a already Figured it out. But Thank you for the response. I have an other issue at the moment. I cant use the GPIOD, VSSI02 is on 3.3V. Im using stm32g0b1kb. It wont toggle it wont read, it does nothing. What am I missing.I cant toggle, read or write them? PB9 PB6, and PD1 to PD3/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2025 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
Hi,I'm working on a new PCBA design and it will require firmware update over the air of a STM32H563.The ST67W will be used in access point mode at all times.Is it possible to use the ST67W to update a target MCU? Is it done using the built-in bootloader? Is UART or SPI used for it? Can I also update the ST67W's firmware over the air as well?I'm in the PCBA design phase and I want to ensure that all of the required data lines are connected properly, as well as the BOOT0 pin.Any example would be helpful as well.Thanks,Étienne Machabée
Hello ST Community,I’m developing a custom external loader for STM32CubeProgrammer where the STM32 acts as a bridge to program an external MCU (not external flash). The STM32 uses UART5 as a debug port and also as the communication interface to the external MCU.In testing, I see CubeProgrammer calling Write() repeatedly with non‑sector‑aligned sizes and addresses that don’t start at sector boundaries. Sample output from my loader:Starting... Address: 0x90000000 Size: 0x0003C700 Size is not sector aligned:0x0003C700 Address: 0x9003C700 Size: 0x0003C700 Size is not sector aligned:0x0003C700 Address is not start of sector:0x9003C700 ... Address: 0x901E3800 Size: 0x00018E00 Size is not sector aligned:0x00018E00 Address is not start of sector:0x901E3800 Address: 0x901FC600 Size: 0x00018E60 Size is not sector aligned:0x00018E60 Address is not start of sector:0x901FC600This looks like CubeProgrammer is splitting the image into chunks (e.g., 0x3C700, then smaller fragments near the end
We repair Fire Alarm Panels, and I have a known good chip PSD813F1A that I can read and save the data but when I program the blank device it will program but then gives me a verify error and it doesn't function in the panel. I'm using the Logical devices XPRO programmer with the proper adapter DX2052 (PLCC). It is listed in the program's library so that's not the issue. Not sure if there's a source to properly program this device or do I need special programming software and programmer to accomplish this. Any help will be amazing!! Thanks for allowing me post here.
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.