Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I'm trying to learn how to use the LCD display on the STM32H745I-DISCO board.(I'm a beginner at coding, so please go easy on me!) Right now, I'm just trying to display basic text on the screen, but nothing shows up, it's either all white or all black depending on the settings in the ltdc.c file. I've tried different (and maybe even nonsense) functions to fix it, but nothing worked so far. I couldn’t find many resources, especially for the STM32H7 series, so I’m feeling a bit stuck. My goal for this project is to read data from the ADC and show it on the screen (like speed etc.), nothing too fancy. If you have any advice or guidance, I’d be very eager to hear it!
Hi , I was going through the template_fsbl_xip project located at: STM32Cube_FW_N6_V1.0.0/Projects/STM32N6570-DK/Templates However, I noticed that this project does not contain an .ioc file, whereas other examples like GPIO_IOToggle and several others do include one. My question is: Is this an oversight, or was it intentionally left out? If it was intentional, how can I create an .ioc file for this template as I would like to start my project using STM32CubeMX and I would like to use external flash and ram present on STM32N6570-DK board.
Hello,I'm currently working with the Nucleo-STM32H7S3L8 board and attempting to use the XIP_Template from its repository, which I've successfully cloned.I opened the template folder in STM32CubeIDE via "Open projects from a file system," selecting the folder that contains the .xmproject file. Following the official guide, I tried to build the application project, but the debugger returned the following error:No rule to make target '/Users/xxxxxxxxx/Desktop/STM32CubeH7RS/Drivers/STM32H7RSxx_HAL_Driver/Src/stm32h7rsxx_hal.c', needed by 'Drivers/STM32H7RSxx_HAL_Driver/stm32h7rsxx_hal.o'. Stop.Additionally, when I attempt to build the boot project, I encounter more errors, such as:../../../Boot/Inc/stm32_extmem_conf.h:47:10: fatal error: stm32h7rsxx_hal.h: No such file or directory | #include "stm32h7rsxx_hal.hIt appears that stm32h7rsxx_hal.h is not being found, even though it should be included. (I have attached a picture of the error.)I have already performed the following troubleshooti
I'm trying to implement a serial bit-stream input (PCM-style) on an STM32U575. I have set up an EXTI channel to capture the incoming clock signal and then I'm using the following code in the ISR to capture the data bits:__attribute__ ((section(".RamFunc"))) void EXTI7_IRQHandler(void) { SPLITTER_CLK_OUT_GPIO_Port->ODR |= SPLITTER_CLK_OUT_Pin; if(haveFS == 0) { // CLK pulse whilst in idle state - is there a FS? if(PCM_FS_IN_GPIO_Port->IDR & PCM_FS_IN_Pin) { haveFS = 1; slotCount = 0; bitsCount = bits_per_slot; pDataSlot = pData; } else { return; } } // Read next data bit if(PCM_DATA_IN_GPIO_Port->IDR & PCM_DATA_IN_Pin) { *pDataSlot |= (1 << --bitsCount); // Set bit } else { *pDataSlot &= ~(1 << --bitsCount); // Clear bit } if(_internal.bitsCount == 0) { // Received one slot slotCount++; pDataSlot++; bitsCount = bits_per_slot; } // Have we received all slots? if(_internal.slotCount == _internal.total_slots
Hi ST Community,I have developed a custom board based on the MB997E evaluation board as a reference design.1. Could you please help me review my custom board design and schematic to identify any possible mistakes.2. In my custom design, I have also added an external 32.768 kHz crystal oscillator for the RTC function.Is the connection correct?Are the load capacitors and routing appropriate?Do I need to make any changes to ensure stable operation?I am attaching my schematic Any suggestions or corrections would be very helpful .
Hello everyone,I'm currently working with an STM32F746 microcontroller as an SPI slave using DMA for data reception.The SPI master sends fixed-size packets of 512 bytes, and everything works fine most of the time. However, occasionally, a few bytes (e.g., 4 bytes) seem to get lost during transmission or reception. After that, the SPI slave continues receiving data, but everything becomes misaligned by that number of lost bytes. This causes the following packets to be parsed incorrectly and fail CRC checks.I need a way to recover synchronization after such a misalignment — that is, to detect when a packet is no longer aligned to the expected 512-byte structure, and then find the correct boundary again so I can resume proper packet parsing.Has anyone encountered a similar issue? I’d appreciate it if you could share any ideas or solutions on how to resynchronize the SPI DMA stream after a data loss event.Thanks in advance and have a great day!
Hi Team,We are currently working on a design using the STM32U5A5QJI6Q microcontroller in a BGA package, implemented on a 4-layer PCB. During the hardware development phase, we inadvertently omitted the external pull-up resistors on the I2C lines, specifically on PB6 (A5) and PB9 (A4), which are configured for I2C_SCL and I2C_SDA respectively.Our software team has informed us that there is no option to enable internal pull-up resistors for these specific pins through software configuration. Given the constraints of the BGA package and the complexity of reworking inner-layer routing, we are seeking your expert guidance on the following:Is it possible to enable internal pull-up resistors on PB6 and PB9 via software or alternate configuration?If not, what are the recommended rework strategies for adding external pull-ups in a BGA-based 4-layer PCB design?Any best practices or application notes that co
Hello!I recently bought a OV5640 Adafruit breakout board from here and I was having some issues with using the I2C bus. I downloaded the libraries from the stm32_ov5640 GitHub page. Whenever I run the HAL_I2C_Mem_Write or HAL_I2C_Mem_Read functions, an error is returned. I read online that configuring the registers is needed before reading the chip, but even writing doesn't work. The following is my write register function:static int32_t OV5640_IO_ReadReg(uint16_t DevAddr, uint16_t Reg, uint8_t *pData, uint16_t Length) { HAL_StatusTypeDef status; uint8_t reg_addr[2]; // OV5640 uses 16-bit register addresses (big-endian) reg_addr[0] = (Reg >> 8) & 0xFF; // High byte reg_addr[1] = Reg & 0xFF; // Low byte // Send register address then read data status = HAL_I2C_Mem_Read(&hi2c1, OV5640_I2C_ADDRESS, Reg, I2C_MEMADD_SIZE_16BIT, pData, Length, HAL_MAX_DELAY); // OV5640_I2C_ADDRESS = 0x3C but I tried with 0x3C << 1 and 0x79 if (status != HAL_OK) {
Hello, I am having an issue implementing a 32 bit CRC 0x04CDB117I am quite confused by the documentation on how to set the a 32 bit CRCI don't understand section 53.5.3 on the most significant bit in in CRCPOLY must be larger than the data size.I don't understand what register CRC33-17 is referring to.Any help or clarification would be appreciated.Thanks
I have designed a PCB that uses the STM32L433RCT6P which is the same processor used on the NUCLEO-L433RC-P board.However, I am not using the external SMPS on the PCB I have designed.I put up a post asking what I should do with the VDD12 pins if I dont use the external SMPS and was told to leave them floating (see https://community.st.com/t5/stm32-mcus-products/stm32l433rct-vdd12-pins-what-should-i-do-with-them/td-p/817459) so assumed I could use this MCU without the external SMPS.My PCB is about to start production and now I am very concerned that the STM32L433RCT6P will not work without the external SMPS, is this true ? If so I need to cancel production asap so a quick answer would be greatly appreciated.My schematic is below for reference... If the STM32L433RCT6P can be used without the external SMPS, is there a setting somewhere to tell it to use the internal LDO ?During the design I did change to the non-P version (STM32L433RCT6) but I wante
I am using the Nucleo-L433RC-P board but having difficulty flashing and debugging. 9 out of 10 times I get the following error...STMicroelectronics ST-LINK GDB server. Version 7.11.0 Copyright (c) 2025, STMicroelectronics. All rights reserved. Starting server with the following options: Persistent Mode : Disabled Logging Level : 1 Listen Port Number : 61234 Status Refresh Delay : 15s Verbose Mode : Disabled SWD Debug : Enabled InitWhile : Enabled Waiting for debugger connection... Debugger connected Waiting for debugger connection... Debugger connected Waiting for debugger connection... ------------------------------------------------------------------- STM32CubeProgrammer v2.20.0 ------------------------------------------------------------------- Log output file: C:\Users\JOHNLI~1\AppData\Local\Temp\STM32CubeProgrammer_a47444.log ST-LINK SN : 066BFF323355373043142426 ST-LINK FW : V2J46M31 Board : NUCLEO-L433RC-P Voltage : 3.27V SWD freq : 4000 KHz Connect mo
It seems that the STLINK-V3SET is out of stock almost everywhere. Is there any information on when it will be back in stock?Thanks
Hi, I am looking for a reference implementation whereby I need to generate a RF carrier wave with 2.45 GHz frequency and also need to variate the Tx output power levels. Is there a sample example to acheive this in Zephyr. My setup:- SW: Zephyr v3.7.0 - HW: NUCLEO_WBA55CG Thanks,
Hello,I am using an STM32H755. I want to read a potentiometer via ADC and transfer the value to a variable using DMA. I have configured everything with CubeMX (ADC1, DMA, channel, sampling time, etc.) and I start the conversion with HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&adc_dma_val, 1).When I use polling mode, ADC works perfectly and I get correct values.However, when I try to read with DMA:The adc_dma_val variable remains 0 and is never updated.The HAL_ADC_ConvCpltCallback function is never triggered.All init functions (MX_DMA_Init, MX_ADC1_Init) are called in the correct order, DMA interrupt handler is active.ADC and DMA clocks are enabled.There seems to be no issue in the code, and the hardware wiring is correct.I have been struggling with this issue for a while. If anyone has experienced a similar problem or has an idea, I would appreciate your help.I am attaching my source code.Thank you!
Hello, I'm using a STM32L071KZT6 on a custom PCB and it was working fine, until after some programming iterations, it suddendly started drawing more current than expected. It reached 220mA to power with 3.3V. This happened twice, in two different mcu, and with the same version of the code, which is nothing too complex. Any idea why this might happen and how I can solve this?I already tried to erase the mcu flash, program with an empty code and configure all peripherals as analog, all suggestions that I've seen around foruns, but none of these worked.
Hi all, I'm fairly new to programming an STM32 :) Is there a simple way of getting started with the above wireless development kit? The documentation on the product page isn't very helpful.
Hi Team,Currently I am working with FreeRTOS Timers and callback is not firing always.Please note that timer is creating and main application is calling after once osKernelInitialize(); is done. Above are configurations in FreeRTOSConfig.h. Please give a solution why Callback is not firing ? Thanks and Regards,Ramesh osTimerId_t FreertosTimerHandle; const osTimerAttr_t FreertosTimer_attr = { .name = "FreertosTimer_LED" }; void RPS_print_console_Thread(void *argument) { /* Initialize watchdog Timer */ IWDG_Init(); StartLEDTimer(); while(1) { /* Refresh watchdog periodically */ IWDG_Refresh(); } } void StartLEDTimer(void) { FreertosTimerHandle = osTimerNew(Fire_LED_Toggle, osTimerOnce, NULL, &FreertosTimer_attr); if (FreertosTimerHandle != NULL) { if (osTimerStart(FreertosTimerHandle, 5000) == osOK) { printf("LED timer started\n"); } else { printf("Failed to start LED timer\n"); } } else { printf("Failed to create LED timer\n"); } } void Fire_LE
Hello everyone,I’m working on a custom board built around the STM32F769BIT6. I’ve configured the SDRAM timings according to the datasheet and set the LTDC to RGB888. The same TouchGFX project runs flawlessly on the STM32F769I-Discovery board, but on my custom hardware the display begins to flicker whenever I scroll through a list.Has anyone run into this before, or can you suggest where I should focus my debugging? Below are my SDRAM and LTDC settings. Any guidance would be greatly appreciated!static void BSP_SDRAM_Initialization_Sequence(SDRAM_HandleTypeDef *hsdram, FMC_SDRAM_CommandTypeDef *Command) { __IO uint32_t tmpmrd =0; /* Step 3: Configure a clock configuration enable command */ Command->CommandMode = FMC_SDRAM_CMD_CLK_ENABLE; Command->CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1; Command->AutoRefreshNumber = 1; Command->ModeRegisterDefinition = 0; /* Send the command */ HAL_SDRAM_SendCommand(hsdram, Command, SDRAM_TIMEOUT); /* Step 4: Insert 100 us minimu
The DBATTEN setting in the UCPD_CR register claims the following But as far as I know, the dead battery functionality is always present. It would have to be to work unless this is stored in NVM.Maybe this DBATTEN is some other Rd value? Maybe the ANAMODE is a proper Rd but this one is a sortof Rd light that is only sufficient to wake the MCU? I can't tell because no information is provided.If the MCU is powered there is not really a "dead" battery condition. If the MCU is not powered this setting can't take effect.Any ideas?
What is the maximum current that the STM32 GPIO can withstand when set to open-drain mode and the NMOS is on without getting damaged?
Hello everyone,I've noticed that several users have experienced issues related to the LDO power supply setup for the STM32H757A. I’m currently working on a design using this MCU in LDO mode, and I’d like to confirm whether my power supply implementation is correct. Just to turn On the LED. Could someone please review my configuration and let me know if there’s anything I should adjust or improve?Thanks in advance for your help!
Hello,I am using Nucleo f446re board to interface with a sensor over UART. sensor is able to send the response data frame over rx line to mcu as mcu sends uart frame.This transaction or data transfer is visually verified using logic analyser.Actual issue is stm 32 is not able to capture the response packet.Could you please assist to fix it.Sensor sends 3 byte response frame. 0x08-0x00-0x0A But mcu reads it as 0x00-0x08-0x00Let me know if you need more information.if (HAL_UART_Transmit (dev->uartHandle, (const uint8_t *)&txReadBuff, sizeof (txReadBuff), 5)!=HAL_OK) return HAL ERROR: if (HAL_UART_Receive (dev->uartHandle, (uint8_t *) &ackBuff, sizeof(ackBuff), 5)!=HAL_OK) return HAL ERROR AckBuff is an array of 3 bytes / uint8_t type.Edited to apply source code formatting - please see How to insert source code for future reference.
Hi, Is there an option to program the STM32L412RB with DFU / Serial interface? I was programming the STM32F407 with DFU and Serial before and now I want to use the STM32L412RB and program it the same way. I can't find any information on the BOOT1 pin in this MCU to enter the system memory boot modeThank you in advance for your help, Ron.
Greetings, I am having trouble in waking up from Stop mode in STM32U585RIT6 LQFP64 MCU. So I saw the following posts: https://community.st.com/t5/stm32-mcus/troubleshooting-waking-up-from-stop-mode-issues-with-lptim-in/ta-p/745343https://community.st.com/t5/stm32-mcus-products/lptim-interrupt-can-t-wake-stm32u5-from-stop-low-power-mode/td-p/55162At the main function I placed:__HAL_RCC_LPTIM1_CONFIG(RCC_LPTIM1CLKSOURCE_LSE);__HAL_RCC_RTCAPB_CLKAM_ENABLE();__HAL_RCC_LPTIM1_CLKAM_ENABLE();as it was referred in those posts. So I am going to stop mode in the following way: HAL_LPTIM_Counter_Start_IT(&hlptim1);HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);And it was supposed to wake-up when the counter register reached the expected value.Then I call the callback:void HAL_LPTIM_AutoReloadMatchCallback(LPTIM_HandleTypeDef* hlptim){ SystemClock_Config(); .... }Still isn't work. Am I missing something?Thank you
Following this post describing how to disable speculative accesses on external memories range (0x6000 0000 to 0xDFFF FFFF) on Cortex®-M7 processors, I'm wondering if such mechanism should be done to:- memory regions marked as reserved:Source - DTCM / ITCM memory regions not mapped:ITCM_AXI_SHARED[1:0] and DTCM_AXI_SHARED[1:0] can be used to change the memory allocation.
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.