Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I am working on a project to connect QSPI flash memory to a PC as a USB mass storage device (MSC) using USBX, FILEX, LVLX, and THREADX on an STM32. This setup should allow the QSPI flash to appear as a drive in Windows.Previously, I successfully implemented a similar project using the MCU's internal RAM as the storage medium. However, after switching to QSPI flash, I encounter the error message: 'Please insert a disk into USB Drive' when connecting the device to a PC.To debug this issue, I tested the QSPI flash read/write functionality using FILEX + LVLX + THREADX without USBX, and it worked perfectly. This suggests the problem lies in the integration with USB MSC.I am including my code for review. Could anyone help identify any potential errors or missing steps in my implementation? Additionally, are there specific areas I should focus on to resolve this issue? Thank you.EDIT :lastlba ux_device_msc.c
Hello,I am trying to set up FileX with USBX, but my computer recognizes a disk drive but does not see any volume.Can you help me determine whether I am using the fx_media_format and fx_media_open functions correctly, given that they do not return any errors? UINT ret = FX_SUCCESS; /* USER CODE BEGIN MX_FileX_Init */ UINT RETT = lx_stm32_nor_custom_driver_initialize(&nor_flash); /* USER CODE END MX_FileX_Init */ /* Initialize FileX. */ fx_system_initialize(); /* USER CODE BEGIN MX_FileX_Init 1*/ /* Format the NOR flash as FAT */ status = fx_media_format(&nor_flash_disk, fx_stm32_levelx_nor_driver, // Driver entry (VOID*)&nor_flash, // Device info pointer (VOID*)NOR_CUSTOM_DRIVER_ID (UCHAR*)media_memory, // Media buffer pointer sizeof(media_memory), // Media buffer size "NOR_FLASH_DISK", // Volume Name 1, // Number of FATs 32, // Directory Entries 0, // Hidden sectors TOTAL_SECTOR_LOGICAL, // Total sectors SECTOR_SIZE
I’m developing a Zigbee end-device app on STM32WB55 (Zigbee_OnOff_Client_SED), following ST’s Zigbee guide, but my debugger keeps showing “Target is not responding, retrying…” . I disabled low power (CFG_FULL_LOW_POWER=0 / CFG_LPM_SUPPORTED=0), set Connect under reset in CubeIDE, and updated the ST-LINK, but the issue persists and the node won’t join my network. Could this be the CPU2 wireless firmware (RFD vs FFD) or a FUS/Option Bytes problem? If anyone has a proven recovery checklist (mass erase under reset, correct CPU2 image, OB settings, etc.) or other tips to make SWD reliable and get the device to join, I’d really appreciate it.
Hi,I would greatly appreciate it if someone could share their thoughts here and let me know if my understanding is correct.Question 1. The STM32H573 supports both USB Host and Device, but why are “USB_OTG_FS” or “USB_DRD_FS” not visible in CubeMX?It appears to be due to the USB IP architecture. The STM32H573 integrates a dedicated USB 2.0 Full-Speed Host & Device block, but unlike some other STM32 series, it does not provide an OTG/DRD block with ID-pin based automatic role switching.As a result, CubeMX only exposes it as “USB (FS)”, and the user has to manually select either Host or Device mode.Question 2. Is the current CubeMX GUI template for the STM32H5 series limited to Device-only USB configuration?Both Host and Device functionality are supported by the hardware, but in CubeMX the GUI is still modeled primarily for Device-only use.This means that CubeMX does not automatically generate the corresponding code for Host operation, and the developer must manually initialize the HA
Hello ST Community,I am trying to download the latest version of the X-CUBE-MCSDK, but the "Get Software" button on the official product page is not working. When I click the button, the download does not start.**Problem Page:**https://www.st.com/en/embedded-software/x-cube-mcsdk.html**Troubleshooting Steps I Have Already Taken:*** Tried while logged into my ST account and also while logged out.* Used multiple web browsers (including Chrome and Firefox).* Cleared all browser cache and cookies.* Disabled browser extensions (like ad blockers) that could interfere.* Tried accessing the page via the STM32 Motor Control Ecosystem page, which leads to the same broken link.Since none of these standard troubleshooting steps have worked, it seems there may be an issue with the website itself.Could someone please provide a direct, working download link for the latest version of X-CUBE-MCSDK?Thank you for your help.
I'm currently working on a final project titled "Design and Communication Security Mechanisms in an Embedded Gateway Module for Electric Vehicle Networks." I'll be creating a security mechanism using AES-128 and a hash function, and securing data from Ethernet communication protocols. I'd like to ask:1. How can I integrate Ethernet communication and security using the STM32F767ZIT6? 2. How can I create an encryption and decryption mechanism using AES-128 cryptography on the STM32F767ZIT6?
So Im trying to move heap to my external SDRAM and the problem is that it hardfaults after 3s and do not know why.In startup file before__libc_init_array i call fmc function which init SDRAM.Fmc function looks like this: void fmc(void) { HAL_Init(); SystemClock_Config(); PeriphCommonClock_Config(); MX_GPIO_Init(); MX_FMC_Init(); MPU_Config(); // mark SDRAM cacheable SCB_EnableICache(); SCB_EnableDCache(); } Im using TouchGFX, STM32H743ZIT6 and IS42S16400J-6TLI SDRAM. Ive already changed my sbrk, linker and MPU. I add code fragments: /* ****************************************************************************** ** ** File : LinkerScript.ld ** ** Author : STM32CubeIDE ** ** Abstract : Linker script for STM32H7 series ** 2048Kbytes FLASH and 1056Kbytes RAM ** ** Set heap size, stack size and stack location according ** to application requirements. ** ** Set memory bank area and size if external memory is used. ** ** Target : STMicroelectronics STM32 ** ** Distributio
I have three questions regarding the STM32U083RC: 1.Why is the reset value of EXTI_IMR1 register 0xFFF80000?The EXTI line 19-21 is configurable lines。 2.I encountered a problem: when I used the NUCLEO-U083RC demo program to PWR_STOP2_RTC, I found that when the bit28 of the EXTI_IMR1 register was configured to 0 or 1, the RTC could wake up the MCU from stop mode. Why is the function of EXTI_IMR1 register not working? 3.Why does RTC/TAMP describe combined with EXTI lines 19 & 21 in the Vector table?
I want to add a custom motor under "New_Project" in MC Workbench. As soon as i am clonign previous motors, i am not able to edit it and the edit window is getting closed automatically.Please suggest me what i should do.
Hello,I'm working with B-WL5M-SUBG1 hardware for experiencing STM32WL5MOCH6U. I ran the application from Repository\STM32Cube_FW_WL_V1.3.1\Projects\B-WL5M-SUBG1\Applications\SigfoxI got current of about 2.3mA in standby mode instead of less than 1uA as specified in the datasheet and I discovered that the 5V_PWR LED(LD4 Green) was ON.I broke the SB14 to prevent the 5V_PWR LED from turning on: Current down to 900uA-950uA band with this move.After that I applied this post's recommendations. Current down to 875uA-810uA band. But I unfortinatelly I'm still far away from 1uA. Anyone has soluion?
I’m working on a project that involves reading audio samples from ADF1 and storing them in an internal RAM buffer using the GPDMA. The GPDMA is configured using Linked Lists in circular mode. An interrupt is generated when the buffer is half-full and full. The STM32 should remain in STOP1 mode while the buffer is filled, and wake up when either of the two interrupts occur.Note that FatFs is also used to write the buffered data to an SD card through the SDMMC interface.I have this all working perfectly on my custom STM32U575 pcb, but only when I put the STM32 into sleep mode. It does not work in STOPMODE1. The interrupts never occur and the device never wakes from STOPMODE1. What am I missing? How can I make this work? I’ve looked for existing example code using GPDMA and STOP1, but have come up empty. See below for CUBEMX configuration and code:Most of my code is in the main() function:int main(void) { FRESULT ReturnResult; FIL MyFile; int numberOfWrites = 16; HAL_Init();
Dear All, I am having difficulty with the Bootloader on an STM32469.It is on a custom PCB (which works fine in all other respects), and I can use the SWD interface via J-Link perfectly OK (with both STM32CubeIDE and STM32CubeProgrammer).My starting point is a board where the Readout Protection was set to Level 1. Note that this is true for all hardware I have access to, so I cannot try with a board that has never had Readout Protection applied.I can reset the Readout Protection to Level 0 (0xAA) via J-Link. This erases Flash (expected behaviour).I can check the FLASH peripheral registers via STM32CubeProg, and they all look OK.I would now expect to be able to connect via UART with STM32CubeProgrammer.However, when I reset my board with BOOT0 set high, and attempt to connect via UART, I get this:I also get four popup error boxes:1. Initialising the Option Bytes failed2. Uploading Option Bytes bank 0 failed3. READ command not acknowledged at address: 0x1fffc0004. READ command not ac
So I am reading the RM0008 Reference manual because I need to describe some limits for my systemI am looking for the UARTs tolerance of clock drifton page 800 I am confused by these tables: In my case DIV_FRACTION is different from 0 and the M bit is 0The way I read the table... the Noise Flag triggers as an error if there is more than 3.33% clock drift...but... it does not care if there is 3.88%...This makes no sense so... am I misunderstanding something or?Link to the document in question:https://www.st.com/resource/en/reference_manual/rm0008-stm32f101xx-stm32f102xx-stm32f103xx-stm32f105xx-and-stm32f107xx-advanced-armbased-32bit-mcus-stmicroelectronics.pdf
Hi,I am try to STM32WBAG-DK1 PBP source example and try to create multi-channel and stream the data through it. Like in each channel, each language. I got stuck where to modify the code.Could anyone please support the issue. Thank you
Hi,I want to program my STM32H753ZI Nucleo board with Simulink. I successfully programmed it to blink an LED. However, I get the following error when I try to enable a timer (for PWM, or Encoder). C:/ProgramData/MATLAB/SupportPackages/R2023b/toolbox/shared/supportpackages/stm32/src/rtiostream_serial.c:10:10: fatal error: rtiostream.h: No such file or directory 10 | #include "rtiostream.h" | ^~~~~~~~~~~~~~compilation terminated.gmake: *** [rtiostream_serial.o] Error 1 I have tried this with both CubeMx 6.4 and 6.10 (Matlab has recommended to use CubeMx 6.4.).I have also tried the STM32F446RE Nucleo board and the same error emerged.Any suggestions to solve this problem are highly appreciated. Thanks
Hello,I download STM32WBAxx_DFP 2.1.0 in https://www.keil.arm.com/packs/stm32wbaxx_dfp-keil/overview/ There seems no FLM drivers available to program OTP and OPT zone.
Can I ask how to use my PB8 pin as CAN, since it is Boot 0? I pull Boot 0 to Ground to avoid it floating, then how to use it as CAN pin
So, I'm trying to increase my ENOB from 13.7 bits to 16 bits or higher through the hardware Oversampling system, if possible:MCU: STM32H750V1) If I increase the Oversampler ratio to 128 or 256 without any bit shift, do I get the increased ENOB?2) My application does not need the absolute accuracy, only precision(or resolution), and low noise. How can I increase the ADC bits to 17 or 18 bits, and receive 18-bit data in my memory buffer?I use 16-bit DMA transfers into a 16-bit Memory buffer, and everything works. Then, as soon as I change the DMA and buffer size to 32 bits to receive higher bits, I get very large and wrong values, what would be the culprit? I'm out of the Application Notes and Reference Manual to read, and I couldn't see a clear explanation of how to do bit shifting or achieve higher than 16-bit resolutions..And the Fact that I'm a bit of a noob doesn't have to do anything with it of course.Any help would be appreciated.
Hello,I have custom board with STM32N6. I followed guidelines how to enable the ITM console:https://community.st.com/t5/stm32-mcus/using-the-itm-console-for-printf-redirects-and-lwip-debug/ta-p/723472The System Core Clock is set to 600MHz, confirmed with variable SystemCoreClock=600. The Trace Anynchronus Sw is selected and PB3 connected.Simple ITM_SendChar(101); gets executed but no output in the console. I tried 600MHz core clock for the Serial Wire Viewer, also many other clock frequencies like 75MHz (TPIU clock), but none is working.Are there any special steps to configure ITM console on STM32N6?
Post edited by ST moderator to be inline with the community rules especially with the code sharing. In next time please use </> button to paste your code. Please read this post: How to insert source code I have a custom board using an STM32H735VGT6 MCU, and I’m trying to configure it to run at different system frequencies, starting from the lowest (170 MHz) and eventually up to the maximum (520 MHz or 550 MHz). I’m using an external 8 MHz crystal as the clock source. My plan is to start at 170 MHz using VOS3 mode (since it supports up to 170 MHz) and later switch to higher VOS levels (VOS2, VOS1, VOS0) for higher frequencies. To check whether the MCU is running at the desired frequency, I set up a timer and assign the timer counter value to a variable to monitor in STM32CubeMonitor, basically to see how many counts per second I get. Here’s the code: /* USER CODE BEGIN Header */ /** ****************************************************************************** * @file
Hello, I would like to know if this PTP client example from Netxduo can be used on an STM32H723 MCU: https://github.com/eclipse-threadx/rtos-docs/blob/main/rtos-docs/netx-duo/netx-duo-ptp-client/chapter1.md Another MCU, the STM32N6 has this implementation here: https://github.com/STMicroelectronics/STM32CubeN6/tree/main/Projects/NUCLEO-N657X0-Q/Applications/NetXDuo/Nx_PTP_Client I wanted to confirm if the STM32H723 does support that example because i am looking at https://github.com/STMicroelectronics/x-cube-azrtos-h7/tree/main/Projects and I cannot find any ... Thank you.
I am incorporating STM32C011J6M6 (SO8 package) in a new project. This is my first use of C0 series (previously only F1 series, and previously only LQFP48 package.)The STM32C011J6M6 makes available both Port B bit 7 (B7) and Port C bit 14 (C14) on pin 1 of the SO8 package. This is the pin I'm initially working with as it would provide a specific interface capability in my project.My question/problem is this - can I configure both port/bit peripherals (B7 and C14) as enabled on pin 1, provided that the two assignments are electrically compatible (they would both be used open drain, and both be idling in the "GPIO set" (or active high) state?There is a reason for this request - port C14 would be used as a USART_TX peripheral in single-wire, async half-duplex, open drain mode, and port B7 would be used as a GPIO input or output in open drain mode. This way I could use the pin as half duplex async, but also be able monitor the pin continuously to see if it has been externally pulled down (i
I am developing a product which has an STM32H743 device. I am designing the firmware for the first PCBA prototype. The product receives 30fps video signal from an 720i analog video decoder through DCMI (every second bytes are stored, all lines, so 360x240 resolution frames are captured) to external SDRAM. The stm32 does an image conversion and sending the converted data from internal RAM to a second processing unit through parallel bus. The second processing unit displays the data. The parallel bus is a 16bit interface, with 10MHz clock (20Mbyte data rate with ~44% duty cycle – 44% reading, 56% idle). And in the during operation, the device captures two channel audio signals as well.The ideal operation flow is the following:DCMI interface uses DMA1 Stream0 (very high priority, fifo), dma in double buffer mode. DMA moves data from DCMI to FMC external SDRAM. It generates two interrupt signal, half transfer complete and full transfer complete. When full transfer completed the transfer is
I can update fine to FUS version 2.1, and start it, but then when I try to program the BLE_stack_full_fw I get the following error message:Error: FUS_ERROR_INVALID_OB: Option bytes and UFB values do not match.Error:Old Firmware delete failedI have an STM32WB55CEU6 and I'm programming the stack with starting address 0x0805C000, per the release note instructions.Do I need to change some option byte values before trying to program the stack? If so, what?Here is the end of updating the FUS and the problem programming the stack: Followed by this error when trying to start the wireless stack that isn't there:Thanks in advance for any help!
Hi, I have a STM32N6570-DK and I see that the available demo code is up to v1.3.0How do I determine what version of code was shipped on the DK?Is there a document that details how to upgrade the code if it’s needed?STM32N6-OOBSTM32N6570-DK Out-of-the-box demo binary1.3.0Thanks, Tony
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.