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
Post edited by ST moderator to be compliant with the ST community rules especially for sharing a code. The latest Cube H5 package (STM32Cube FW_H5 V1.6.0) has broken the use of ADC2_INP0 with the following changes to LL_ADC_EnableChannel0_GPIO and LL_ADC_DisableChannel0_GPIO in STM32H5xxLL_ADC.H. Previous, __STATIC_INLINE void LL_ADC_EnableChannel0_GPIO(const ADC_TypeDef *ADCx) { /* Prevent unused argument(s) compilation warning */ (void)(ADCx); SET_BIT(ADC1->OR, ADC_OR_OP0); } Current, __STATIC_INLINE void LL_ADC_EnableChannel0_GPIO(ADC_TypeDef *ADCx) { SET_BIT(ADCx->OR, ADC_OR_OP0); } Previous, __STATIC_INLINE void LL_ADC_DisableChannel0_GPIO(const ADC_TypeDef *ADCx) { /* Prevent unused argument(s) compilation warning */ (void)(ADCx); CLEAR_BIT(ADC1->OR, ADC_OR_OP0); } Current, __STATIC_INLINE void LL_ADC_DisableChannel0_GPIO(ADC_TypeDef *ADCx) { CLEAR_BIT(ADCx->OR, ADC_OR_OP0); } According to the reference manual t
Hi,What about Simetrix EOR model for the RHFL4913A?? It would be really fine as well to get RHFL7913 BOL and EOR simetrix models.Cheers.
Split from CubeIDE incorrectly flags __attribute__((fallthrough)) as syntax error.I've also noticed it doesn't like the use of static_assert at file scope:
Hi,in AN5225 an anylzer is used (e.g. Fig 22, page 33). Can anyone tell me which analyzer it is?Best regards,Achim
We have a custom stm32mp25 board. On Mickledore we were able to create a/b partitions in our machine conf doing the following: PARTITIONS_IMAGES += "tc-appfs-a tc-appfs-b" STM32MP_TCFS_IMAGE ?= "ti-tc-appfs" STM32MP_TCFS_LABEL_A ?= "tc-appfs-a" STM32MP_TCFS_LABEL_B ?= "tc-appfs-b" STM32MP_TCFS_MOUNTPOINT ?= "/tc-apps" # Proposed value for tc-appfs is 150MB STM32MP_TCFS_SIZE ?= "153600" PARTITIONS_IMAGES[tc-appfs-a] ?= "${STM32MP_TCFS_IMAGE},${STM32MP_TCFS_LABEL_A},${STM32MP_TCFS_MOUNTPOINT},${STM32MP_TCFS_SIZE},FileSystem" PARTITIONS_IMAGES[tc-appfs-b] ?= "${STM32MP_TCFS_IMAGE},${STM32MP_TCFS_LABEL_B},${STM32MP_TCFS_MOUNTPOINT},${STM32MP_TCFS_SIZE},FileSystem" PARTITIONS_LIST += "tc-appfs-a tc-appfs-b" However, in scarthgap this no longer works. We are getting the following error:Cannot generate FlashLayout_emmc_stm32mp257f-m670-optee.tsv file: the ti-tc-appfs-ti-linux-stm32mp25-m670.tc-appfs-a.ext4 binary for tc-appfs-a partition is missing in deplo
Hello STM32 community!I'm relatively new to the embedded field and have been diving into communication protocols through small projects. Currently, I'm working on implementing USB CDC on an STM32H563ZI, and I've been facing challenges for the past two weeks.I've extensively searched the internet and followed various tutorials, but unfortunately, none of them seem to work.One of the tutorial(from STM community) that I followed: https://www.youtube.com/watch?v=LdY2bieaPwkI have added read functions to receive the data. I have made two separate semaphores for read and write functions. (It should work even without semaphores though). When I run the code, it's not taking any input from the terminal. Inside app_usbx_device.c file,these two threads(for read and write) were created inside MX_USBX_Device_Init() function.I am giving semaphore inside the while loop here...Inside ux_device_cdc_acm.c file,I am declaring variables...I am defining the read and write functions like this
HiI would like to know the state of the GPO pin when VCC=0 on the ST25DV64KC-IE8T3. The GPO output is open drain and should be in high independence when VCC=0, but it seems that the MOSFET remains activated. BRGilberto
Hello, I am currently trying to port the ST25R3916B driver to a platform that uses the ThreadX RTOS, but I am encountering some issues. I have previously ported it to a platform using Zephyr, and that process went smoothly.I have already implemented the platform-specific files responsible for I2C communication, IRQ handling, and software timers. The initialization process completes without any errors. However, in the main thread—where I call rfalWorker()—the NFC tag is not detected.Below are some relevant code snippets: Init() { /* Initialize RFAL platform */ rc_st = rfalNfcInitialize(); }Discover() { /* Retrieve default discovery parameters */ rfalNfcDefaultDiscParams(&m_discParam); m_discParam.notifyCb = m_fncPollNotification; m_discParam.p2pNfcaPrio = true; m_discParam.totalDuration = 1000; m_discParam.techs2Find = flags; m_pollDuration = duration; ReturnCode rc = rfalNfcDiscover(&m_discParam); } while (1) { rfalNfcWorker(); state = rfalNfcGetS
I’m trying to get a USB Full-Speed Host Mass Storage example running on the STM32H753I-EVAL2 using ThreadX, USBX, and FileX.I’ve generated the base project from CubeMX, but I’m running into a few issues:VBUS Enable/Detection: VBUS is not being enabled correctly via the MFX (IO expander).Even when manually configuring, the stack doesn’t seem to handle VBUS properly in host mode.Memory Pool & Stack Sizes:Default memory pool size and system/stack sizes seem insufficient, causing failures with Mass Storage class. tried increasing but did not succeed and ended up in memfaultsI’m looking for:A working USB FS Host Mass Storage example for STM32H753I-EVAL2 with ThreadX, USBX, and FileX.Guidance on properly enabling VBUS via MFX or directly on the board.Recommended USBX memory pool and stack sizes for Mass Storage class.BSP package for STM32H753I-EVAL2Any example projects, tips, or guidance would be greatly appreciated.Thanks in advance!
Hi everyone, I'm struggling with a critical synchronization issue between TouchGFX Designer (4.2x) and IAR Embedded Workbench (9.60.2) on an STM32H563 project.Whenever I modify the UI (e.g., deleting a Button or adding a ToggleButton), TouchGFX correctly generates the new .cpp and .hpp files in the "generated/" folder.However, upon flashing the device, the UI is completely corrupted:- Images are replaced by random noise or other assets.- Texts disappear- Moving a widget "off-screen" instead of deleting it works, but adding new ones breaks everything again. I'm using Nucleo-H563ZI with Riverdi screen.I tried these steps without success:- Delete IAR folders: Obj, BrowseInfo and regenerated- Deleted TouchGFX/generated and TouchGFX/build and regenerated- Full chip erase (Internal + External Flash) via STM32CubeProgrammer- Forced "Rebuild All" in IAR Any idea on how to fix this issue?
Hi all. I have been witnessing a rapidly shrinking amount of free space on my C drive. On a regular drive clean up of non-essential data, I can generally remove 1 Gigabyte or so of temporary files. This however, does not account for the rapid depletion of available free space. On further investigation, I looked into the 'Other' (Manage other large folders) section of the 'System -> Storage' properties of my Windows 11 C drive. I was a little gob-smacked to discover that - between them - the ST related folders: stm32cubeide, stm32cubemx, STM32Cube and ST contain over 100Gb of data.Obviously allowing for software packs and the various STM applications in daily use, I found a considerable amount of data was held in several .jxbrowser folders across more than one location. For example, the .jxbrowser-7.38.2 folder inside the stm32cubemx directory - alone - is at a whopping 17.5Gb. I don't see any way of cleaning them or whether or not it is safe
Hi everyone,I have recently upgraded from openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11 to openstlinux-6.6-yocto-scarthgap-mpu-v26.02.18 of the meta-st-stm32mp layer.I am using a custom board based on a STM32MP157 MPU.With the previous revision, my board booted fine but since I updated to the new version it is stuck during boot. Here are the boot logs I got after enabling the early console:Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 6.6.116 (oe-user@oe-host) (arm-oe-linux-gnueabi-gcc (GCC) 13.4.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1 SMP PREEMPT Sun Nov 2 13:14:42 UTC 2025 [ 0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=50c5387d [ 0.000000] CPU: div instructions available: patching division code [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] OF: fdt: Machine model: Eaton Machine [ 0.000000] earlycon: stm32 at MMIO 0x40011000 (options '115200n8') [ 0.00000
I see in STM32CubeMX that a STM32G411 exists but it has the status "restricted". I'm curious why this type is not widely available. I'm currently using the STM32G431 in an application, mainly because of its raw clock speed of 170MHz. I don't actually need its analog functions but the flash size might become too tight. In that case, my only option would be to switch to the G491, which is more expensive and contains even more unneeded peripherals... So... why is the G411 not available to the public?
Hi Team,I'm recently using the STM32U5G9ZJT6Q part in one of my design. I couldn't find the package mechanical information in Datasheet. For now, I'm using the LQFP-144 form the STM32H573ZIT3Q part number. Will it be okay? Can you please help to verify it? Attaching the below Screenshots,Screenshot from the STM32U5 Datasheet. Not having the LQFP-144 details.Screenshot from the STM32H5 Datasheet. Having the LQFP-144 details
How to configure parallel compilation in cubeide, that is, "j-4" "j-8" and I encountered an error in the Windows 87 code, how to solve it, I changed the path and still couldn't do it··········································································································································00:10:38 **** Build of configuration Debug for project fishboat_2 ****make -j4 allarm-none-eabi-gcc "../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32F103xB -c -I"D:/studystudystudy/Cube_32F1/fishboat_2/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM3" -I"D:/studystudystudy/Cube_32F1/fishboat_2/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2" -I"D:/studystudystudy/Cube_32F1/fishboat_2/Drivers/CMSIS/Include" -I"D:/studystudystudy/Cube_32F1/fishboat_2/Drivers/CMSIS/Device/ST/STM32F1xx/Include" -I"D:/studystudystudy/Cube_32F1/fishboat_2/Drivers/STM32F1xx_HAL_Driver/Inc" -I"D
I am running CubeMX in a WIndows on Arm VM on a MacMini, which is connected to a KVM. When I switch the KVM to another machine and come back, all of the windows have changed size (not unexpected). They all revert to their original sizes and positions, but the window for CubeMX does not redraw/scale it's content.For example, I see this before I switch away:And this when I switch back (note the double menu):Dragging the edge of the window to cause a (very small) change in size restores the expected view.CubeIDE and TouchGFX do not show this behaviour.
Greetings,I am in the process of integrating the OpenBootloader Middleware application onto a STM32C011 device.I got the code from the STM32Cube/Repository/STM32Cube_FW_C0_V1.4.0/Middlewares directoryI have the code in an STM32CubeIDE project, and it is not compiling?For example:The C file, Interfaces/Patterns/OPTION BYTES/optionbytes_interface.c, has code to write to aFLASH control register. WRITE_REG(FLASH->PCROP2ASR, (*(Data + 56) | (*(Data + 57) << 8)));Yes, the STM32C0 has not such field name PCROP2ASR in the FLASH_TypeDef structure? ../OpenBootloader/Interfaces/Patterns/OPTION BYTES/optionbytes_interface.c: In function 'OPENBL_OB_Write':../OpenBootloader/Interfaces/Patterns/OPTION BYTES/optionbytes_interface.c:162:22: error: 'FLASH_TypeDef' has no member named 'PCROP2ASR'; did you mean 'PCROP1ASR'?162 | WRITE_REG(FLASH->PCROP2ASR, (*(Data + 56) | (*(Data + 57) << 8)));| ^~~~~~~~~How can this
Hello.I'm currently working on the above cpu and trying to implement a custom ble p2p server app. I have 1 service and 2-3 characteristics and i want to add Freertos for time critical constraints managenments. Correct me if im wrong, but it seems that the Freertos stack is incompatible with a custom ble p2p server template. The only thing that i can choose to use when enabling Freertos is the heart monitor template. Is there any work around or do i have to ditch free rtos all together and go bare metal instead ?
Hello,I'm attempting to work with the SAI using DMA on the H7S using the NUCLEO-H7S3L8, unfortunately there is no SAI example. There is an I2S example using DMA on the STM32H7S78-DK:https://github.com/STMicroelectronics/STM32CubeH7RS/tree/main/Projects/STM32H7S78-DK/Applications/USB_Device/Audio_StandaloneI've generated a project for the Nucleo using CubeMX, and then brought over the DMA code in the HAL_SAI_MspInit from that I2S example, and modified it for SAI. The result runs, but a user settings error is reported in the DMA interrupt:Here's the complete project:https://github.com/mojolabsdotnet/saiDmaH7SWhat is the right way to setup DMA for the SAI on the H7S?Thanks!
I'm attempting to update the firmware for the LIV4 GNSS module, and everything seems to goes well until the CRC step, where it hangs for a few seconds then reports a failure. The module is no longer publishing any data, but when using the 'recovery' method for firmware updating, the module does communicate with Teseo_Suite, but it stops responding on the CRC step. I'm using an FTDI and can see both RX and TX LEDs illuminate during the process, but neither light up during the CRC step. Any help with this would be greatly appreciated.Thanks in advance, -Jake
I am working with the STM32U083RCT6 and I need clarification regarding the exact physical memory addresses of the option bytes.In the reference manual, I can see that the option bytes are located in the system memory area:0x1FFF7000 – 0x1FFF7FFFHowever, the manual only describes the FLASH option registers (OPTR, PCROP1SR, PCROP1ER, WRP1AR, WRP1BR) with register offsets from the FLASH peripheral base address. It does not clearly mention the exact non-volatile storage addresses inside system memory. I would like to confirm:1.What is the officially documented physical start address of the option byte storage in system memory for STM32U083?2. Is 0x1FFF7800 the confirmed start address of OPTR in non-volatile memory?3. If this information is not in the reference manual, in which official document can I find the exact byte-level storage mapping?4. What is the exact physical start address of Option Bytes in STM32U083?5. In which official document is this address explicitly mentioned?I am
Hi ST Community,During my application startup I am facing an issue where TIMx_UP_IRQHandler is constantly triggered while using HAL_Delay(). It seems that the Motor Control SDK is using TIM1 which periodically fires the TIM IRQ handler, interfering with my startup routine.To verify this, I commented out MX_MotorControl_Init() in main.c and my startup routine completed successfully.My startup routine must not be interrupted by the Motor Control tasks. Therefore I need to delay the Motor Control initialization until my startup is complete.Is there an official API to temporarily disable Motor Control Tasks during startup and re-enable them once the application is ready? ( I would like to avoid shifting the MX_MotorControl_Init() function in my startup code) int main(void) { ... /* Initialize all configured peripherals */ ... MX_MotorControl_Init(); MX_IWDG_Init(); MX_SPI2_Init(); /* Initialize interrupts */ MX_NVIC_Init(); // Disable IWDG if core is halted __HAL_DBGMCU
I've a program that receives and transmits audio normally on STM32H7. The problem is that, when I'm using X-Cube-AI, after having generated a custom project with Cube AI Studio and having used the same configuration for I2S and GPDMA1 peripherals, the audio won't start. Appearently the program is looping on HAL_SAI_InitProtocol(&hsai_BlockA1, SAI_I2S_STANDARD, SAI_PROTOCOL_DATASIZE_32BIT, 2) != HAL_OK in MX_SAI1_Init.I don't know if it's due to the lack of documentation for using GPDMA1 controllers when using X-CUBE-AI or it's a bug related to X-CUBE-AI.I'll upload 2 projects: one that is working that does not use X-CUBE-AI (called i2s_h7) and the other one that has the same configured peripherals after having generated it with Cube AI Studio (h7_mcu_ai).
Split from How to program and debug the STM32 using the Arduino IDE.Hi,I am new to this forum having just bought a Nucleo STM32G431 which I want to program using Arduino 2.3.4 on MAC OS 11.7.11. On trying to upload the simple blink example I get the error:Warning: long options not supported due to getopt from FreeBSD usage.getopt: illegal option -- aTerminating...Failed uploading: uploading error: exit status 1Having read around this a little it seems that MACOS is using a BSD version of getopt which doesn't support long options. I believe the problem is in the Arduino core for STM32 MCU based boards (I have version 2.12.0 installed). Do you know of a workaround for this? Do I need to install the GNU version of getopt and is this safe? I am not a MACOS expert. Where would I find that?
Hello Team,Refering to this Thread : https://community.st.com/t5/stm32-mcus-products/updating-firmware-through-usb-dfu-with-readout-protection-level/m-p/838635We want to achieve same , Can I upgrade the firmware using USB DFU, with RDP set to level 1? We are fine setting RDP1 -> RDP0 and Erase Flash, then Flash the Firmware.I tried with Cubeprogrammers and CLI , but unroftunately USB1 ( STM32 Bootloader in PC device manager ) not showing and connection does not happen. Tried making BOOT0 pin high when Reset.However , Actual plan is jump to system bootloader from User code through jump address. Regards,@STOne-32 @j_filipe
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.