Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I'm designing a custom PCB with STM32U545NEY6Q and I don't need to use the SMPS, only the LDO. I'm not sure how to connect the SMPS, I found a post about the STM32H745IIT6, and followed the same procedure, but should I do that? I followed the datasheet recommendations and connected the pins as shown in the image below.I didn't find a similar version of the MCU without the SMPS, and the MCU dimensions fit my design perfectly. Can you tell me if this connection will work? Or recommend another similar MCU, from the STM32U5 series, without SMPS?
I am looking for some advices for my product using STM32U5G9 MCU with external QSPI Flash.I want to create a bootloader for my product but I stuck at the approach how-to:1. Can the boot loader support the external loader meaning also update the external flash data if there is any updates for my GUI information?2. If the boot loader can't support the loading for the external flash, do I need to implement the external loader on the application layer?Is there any application note for case#1 if it is possible?Thank you so much for your advices.
Split from stm32f469I-Disco - TouchGFX Display stays black.Hey @Mohammad MORADI ESFAHANIASL , I have the same issue as the one above, but my TouchGFX does not have the version of stm32f469 disco with the au1 screen in it.I have 4.24.0 like your example.How can I fix this?
So i'm working on a way to generate pulses with both Timer 1 and 8 (advanced motor control timer) independently in OPM PWM mode 2 with the Slave Gated mode to control a each a stepper motor driver. I want to use as much as possible the hardware because sometimes the frequency of the steps are really high and the interruptions are slowing down the process.Both are using the TI2FP2 on their channels 2 (to stop the timer when raised) for some home sensors (only enabled when going on the home sensor direction by changing the slave mode) and generating the pulse (pwm) on the channel 3 with use of the RCR register to trigger the amount i want thanks to the OPM mode, and sometimes i change the ARR register to modulate the frequency of the steps and then reload the RCR register to be updated on the next UEV.I'm also counting the number of pulses done by each timer with a secondary timer using the TRGO OC1 (and that's works perfectly) to see if my motor loose steps when doing a movement to the
I've setup the FMC peripheral of an STM32H7 to read registers from an FPGA by creating a faux SRAM interface on the FPGA. This works just fine so long as the FPGA has no issues but if, say, the FPGA is unprogrammed or the FPGA data bus gets hung, this forces the STM32 to hang. It doesn't seem to be able to recover in this event.Is there a way to timeout the memory bus/FMC peripheral to recover from this?
In the STM32F407 DS, ADC characteristics table has the following footnotes:IMO 2. follows from 3. (which is a more stringent requirement); thus 2. is redundant and confusing.JW
Hello ST Community,I'm working with the STM32G0B1CCT6 microcontroller and implementing a custom bootloader located at the beginning of flash memory. The bootloader handles firmware updates over FDCAN.:wrench:Flash Layout:Bootloader start address: 0x08000000Application start address: 0x08008000Total flash: 256 KBFlash page size: 2 KBIn my bootloader code, I handle a specific FDCAN message with ID 0x555 as a signal to erase the entire application area (from 0x08008000 to 0x080FFFFF).:white_heavy_check_mark:What works:The bootloader receives the erase command correctly from FDCAN.It calls HAL_FLASHEx_Erase() and returns HAL_OK.The UART debug log confirms the erase was “successful”.:cross_mark:The problem:After erasing, when I read back the flash content at address 0x08008000, I still see the previous application data (e.g., 0x20024000, 0x08008859, etc.), not 0xFFFFFFFF as expected.:magnifying_glass_tilted_left:Debug output example: bash ERASE command received! Flash Erased
请问有人能提供一下STM32G030xx或者STM32其他系列MCU作为IIC从机进行通信的例程吗,谢谢。
Hello everyone, so it is my first time designing a board with stm32l476rg MCU. I was using the reference design from this sheet: https://www.st.com/resource/en/application_note/an4555-getting-started-with-stm32l4-series-and-stm32l4-series-hardware-development-stmicroelectronics.pdfWhen I was looking at datasheets to choose LSE and HSE I saw this note on section 7.7 of https://www.st.com/resource/en/user_manual/um1724-stm32-nucleo64-boards-mb1136-stmicroelectronics.pdfAlso, for my project I used STM32L476RG Nucleo-64 board and in clock configuration, I think only internal oscillators are used.I am not sure if tere is a passive use of the HSE and LSE because I think those are like default for every stm32 project but I am trying to understand why are LSI RC and HSI RC not enough. Not stable with temperature changes maybe because of RC or precision, not sure. Appreciate any help. Also is the reference design on here: https://www.st.com/resource/en/application_note/an4555-get
Hi all!I am developing a midi pedal using the USB functionalities of the STM32F411. I want to use a software toggle to switch between Host and Device. I am having this issue: I can't use OTJ Dual mode because it uses pin PA10, which I use for the UART (I actually only use sending for this UART, but for some reason, both pins are reserved anyway). I can toggle between Device_Only and Host_Only within STM32CubeIDE. How can I achieve that on the go in software? I don't mind if the device needs restarting in between. Any help will be greatly appreciated!
Hi, I'm using the STM32H7 family and have spent several days trying to get dual mode working correctly with the STM32H723. I finally switched to the STM32H753 so I could try the ADC_DualModeInterleaved example from the repository at STM32CubeH7/Projects/NUCLEO-H743ZI/Examples/ADC/ADC_DualModeInterleaved at master · STMicroelectronics/STM32CubeH7 · GitHub. It seems to work, but I need regular simultaneous mode instead.In the code, I replaced the MultiModeInit.Mode =ADC_DUALMODE_INTERL statement with MultiModeInit.Mode = ADC_DUALMODE_REGSIMULT, and also reconfigured the ADC channels as follows: //Original #define ADCx_CHANNELa ADC_CHANNEL_18#define ADCx_CHANNELa ADC_CHANNEL_19 //New//Original #define ADCx_CHANNELa_GPIO_PORT GPIOA//Original #define ADCx_CHANNELa_PIN GPIO_PIN_4#define ADCx_CHANNELa_GPIO_PORT GPIOA //New#define ADCx_CHANNELa_PIN GPIO_PIN_5 //New //Original #define ADCy_CHANNELa ADC_CHANNEL_18#define ADCy_CHANNELa ADC_CHANNEL_3 //New//Origina
Hello,I am in the process of creating a modifying a TouchGFX project using the example project for the STM32H735G-DK kit. I generated a project in TouchGFX and then modified it to use a larger custom 7" Display/touchscreen. So far I have been able to get the display to show static images perfectly and I've even been able to modify the generated program to use a GT911 touch controller library for touch control instead of the default FT5336 controller. All the works perfectly. Static images look good and touches are registers and transitions from one screen to the next work. The problem I'm having now is that during the transition the images seem to tare/glitch and I'm not sure what is causing this. I've modified all the timings to match that of the new display, I've changed the LTDC clock to match that of the new display. I've changed all the framebuffer settings to match the larger display. Are there other timing settings I need to manual
Hi,we are using ADC with DMA for internal ADC channel like internal Temperature sensor, VBAT, VREF but we are facing issue related to accuracy please help me on this Configuration:ADC channel: adc_channel_config_t ADC3_temp_config = { .channel = ADC_CHANNEL_TEMPSENSOR, .rank = ADC_REGULAR_RANK_8, .sampling_time = ADC_SAMPLETIME_810CYCLES_5, }; adc_channel_config_t ADC3_vbat_config = { .channel = ADC_CHANNEL_VBAT, .rank = ADC_REGULAR_RANK_9, .sampling_time = ADC_SAMPLETIME_8CYCLES_5, }; uC_AtoD_HAL::adc_channel_config_t ADC3_vref_config = { .channel = ADC_CHANNEL_VREFINT,  
Hello I am triyng to use STM32H735 with ethernet (ln8710A is the PHY) We have hardware fault when we connect the cable (se the itm print below)We use CubeMx version Version: 1.18.0ETH is in RMII conection is OK
Hi,I have one board where, depending on PLL configuration, it yields a lot of seed errors on RNGThis is the faulty configuration RCC_OscInitStruct.PLL1.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL1.PLLFractional = 0; RCC_OscInitStruct.PLL1.PLLM = 4; RCC_OscInitStruct.PLL1.PLLN = 50; /* VCO = HSI/M * N = 16 / 4 * 50 = 200 MHz */ RCC_OscInitStruct.PLL1.PLLR = 2; /* PLLSYS = 200 MHz / 2 = 100 MHz */ RCC_OscInitStruct.PLL1.PLLP = 2; RCC_OscInitStruct.PLL1.PLLQ = 8; /* 25 MHz */If I change PLLQ to 7 or 9, issue is gone.fffFrom RM: RNG dedicated clock, asynchronous to rng_hclk- Is it the ratio 100 MHz / 25 MHz just a bad ratio?- Why is it an issue only in one board?
Hello everyone, The LoRaWAN_End_Node from LoRaWAN_FUOTA Project (STM32Cube_FW_WL_V1.3.1) is used with ChirpStack as a network server (supports the FUOTA Package V1). The Multicast session runs and receives the Downlink of all the Fragmented Packets from the server. The issue appears after receiving the last packet. Seems that the Firmware doesn't recognize that the downloaded firmware is complete, and it should begin building it. In AN5554(P10):The V1.0 package, and particularly Fragmented Data Transport specification [TS-004] (see document [3]), doesnot provide a way to inform the server that all data blocks have been properly received in order to rebuild thecurrent download file. Trying to find a way to let the Firmware swaps to the new version rather than flip back(after the expiration of the Fragmention status request) to the old Firmware: Tracing the logs, there is no sign of FRAG_DECODER_IF_OnProgress and FRA
in stm32wb55, After generating p2p configuration, #include "ble_types.h" should add manually in p2p_stm32.h file.
Hi everyone,I’m working with a custom board that uses the STM32H733VGT and the LAN8742AI Ethernet PHY. I’ve configured the MPU and middleware following the ST example for the STM32H75_DISCO board. The board responds to ping in release mode and after a watchdog reset in debug mode—but it fails to respond on the first run after flashing or power-up.Please find attached my .ioc and ETH Init function file in the attachments. Any comment or advice would be highly appreciated.Tnx,Amir
HiChip:stm32h723Peripheral:FMCConfiguration:FMC_NORSRAM_DEVICE , FMC_NORSRAM_EXTENDED_DEVICE;FMC_ACCESS_MODE_AFMC_ASYNCRONOUS_WAIT_ENABLEIf the extended device(eg. FPGA) do not assert NWAIT,the program on stm32h723 will crash. I want to know which register can set the timeout for the NWAIT signal to prevent a crash? Best regards,Andy Zhou
Hello,STM32F411 microcontroller.Where can I find what mode (input/output or pull-up/pull-down) to configure the GPIO for alternate functions? For example, for UART or SPI and so on.For example, for STM32F103 microcontroller, there are tables that help you select the appropriate GPIO settings for alternate functions (UART or SPI and so on) in the Reference manual. For STM32F411 microcontroller, there are not tables that help you select the appropriate GPIO settings for alternate functions (UART or SPI and so on) in the RM0383 Reference manual. There are this information (see figure bellow) in the RM0383 Reference manual, but there are no such clear tables as for the STM32F103 microcontroller.
Hi all,I’m trying to use the external NOR flash (MX66UW1G45G) on the STM32U5G9J-DK2 board as the storage backend for a FAT filesystem using FileX.I came across the example “Fx_NoR_Write_Read_File” from STM32CubeIDE (STM32U5G9J-DK2 package), which appears to be doing exactly this — creating a FAT filesystem using FileX and LevelX on the external NOR via XSPI. However, it’s .ioc file is missing, so I can’t see how the XSPI interface and pins are configured.I built and flashed the example as-is, but the fx_media_format() call returns FX_IO_ERROR (0x90 in Hex and 144 in decimal). Could someone please guide me on the correct steps to:How to properly configure XSPI for the MX66UW1G45G in CubeIDE.The correct steps to use FileX and LevelX with external NOR flash as the filesystem backend.Thanks in advance!
Hello,I've configured my ADC channels in differential mode and I'm able to do some basic test by connecting variable supply to my ADC pins. The results are coming properly. Here I'm connecting directly to my Nucleo545REQ board. Now when I connect CT(Current transformer) lines with 100watt load to my Nucleo board ADC I don't see anything. Values are in the range of floating.Can someone help me if I need to do anything in firmware or do I need to have any change in hardware.
Hello, I am using the STMH753ZI chip on the nucleo 144 board. I cannot figure out why my UART code will not show what I am typing in my putty terminal. Attached is my main.c. Thanks. /* 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 file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "uart.h" /* Private includes --------------------
Post edited to follow the community rules: Please review how to share a code in this post.Using the stm32g030k8 and the Version: 1.18.1 STM32CubeIDE I just recently applied an optimization in order to get more space for my application firmware. And then I realize that the HAL_ADC_ConvCpltCallback has been optimized away. I use the -Og (debug optimization) to use the less agressive and more debug friendly optimization. __attribute__((used)) void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc1) { ADC_Average_Buff[CHANNEL_VREF] = ADC_DMA_Buff[CHANNEL_VREF]; ADC_Average_Buff[CHANNEL_VBAT] = ADC_DMA_Buff[CHANNEL_VBAT]; ADC_Average_Buff[CHANNEL_CURRENT] = ADC_DMA_Buff[CHANNEL_CURRENT]; ADC_Average_Buff[CHANNEL_TEMPERATURE] = ADC_DMA_Buff[CHANNEL_TEMPERATURE]; ADC_Average_Buff[CHANNEL_VREF] += ADC_DMA_Buff[CHANNEL_VREF]; ADC_Average_Buff[CHANNEL_VBAT] += ADC_DMA_Buff[CHANNEL_VBAT]; ADC_Average_Buff[CHANNEL_CURRENT] += ADC_DMA_Buff[CHANNEL_CURRENT];
I have a scrollabe list where each item is a scrollable container.I'm handling the scrollable container with this logic https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/doscroll-doesn-t-scroll-the-full-text/m-p/813190#M43805 (during handleTickEvent I manually change position of the text via code). Each scrollable container has the Horizontal scroll disable with enableHorizontalScroll(false);Now, I'm facing this issue https://community.st.com/t5/stm32-mcus-touchgfx-and-gui/event-dispatching-bubbling-and-event-interception/m-p/659244#M36957 where when I want to slide the list, I have to click the tiny portion between two items.Is there a way to bypass the "scrollable container overrides this method to virtually insert itself as the last child in order to intercept the touch events" as I have disabled the scroll so, no need to intercept the scrollable container's events?
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.