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
Hi, I'm getting an error when uploading an image downloaded from the STM32 OpenSTlinux website via STM32Programmer. I'm uploading the STM32MP157F-DK2 version. The OTG cable is connected, and the DIP switches are also in the correct positions. what could be the problem?
Before Ctrl-f used to bring up the Find/Replace dialog, now there is that box at the top instead.How do I restore the old find as new new one is a bit rubbish...
Hi, I need to measure a 4.2V battery while my MCU's supply varies between 2.0V and 3.3V. Since VDDA is the ADC reference, raw ADC counts will drift as the supply changes. Is this the correct method? My plan: Feed the battery voltage through a 10K/7K5 divider into one ADC channel (scaled to stay below VDDA_min = 2.0V). Read VREFINT on a second ADC channel. Use VREFINT (whose true value is known from the factory calibration in system memory) to back-calculate the actual VDDA, then convert the battery channel's raw count into volts. The formula being:V_battery = 3.0 V × (VREFINT_CAL / VREFINT_DATA) × (ADC_battery / 4095) × ((R1 + R2) / R2) Is this the correct approach for getting a supply-independent battery reading on this part? Anything I'm missing... sampling time for VREFINT, divider impedance vs. ADC sample-and-hold, or calibration register quirks specific to the C0 series? Thank you
X-CUBE-FREERTOS for STM32U0. I don't see the configUSE_TIME_SLICING parameter in the GUI. It's also missing from the generated FreeRTOSConfig.h file.What multitasking mode will be used?
Hi! I'm trying to design a project that will use an stm32u5, and I would like to add PSRAM to it. Most higher-capacity PSRAMs seem to want to run at 1.8V rather than 3.3V, from what I can tell. The particular U5 I've tentatively selected (the U595), has a VDDIO2 power pin, which I understand that I can run at 1.8V while running the rest of the MCU at 3.3V. This feature seems specifically designed to address this use case (and Claude and Gemini insist that it's possible with the right u5 variant, though I'm well aware how confidently wrong AI tools can be). The datasheet says that VDDIO2 affects Pin Bank G. However, I can't quite seem to figure out how I might actually connect to a PSRAM chip exclusively with this bank. I haven't been in these waters before, so it's possible I'm overlooking something straightforward - a lot of the configuration options for PSRAM are new to me. It seems I could use FMC or SPI to connect to the PSRAM chip, but playing around in cubeMX with all
In the code examples provided with AN4502, this pattern is used often: while ( STACK_SMBUS_IsReady(pcontext) != SMBUS_SMS_READY) { } But in our code, when built with the Release CMake preset, this hangs forever.My understanding is that this is because the `StateMachine` member of the SMBus context struct (SMBUS_StackHandleTypeDef) is getting updated by the SMBUS interrupt handlers, but it isn't marked volatile: * @brief Stack state machine handling structure - the stack operation context */ typedef struct { uint32_t StateMachine; /*!< Keeps track of current stack state */ SMBUS_HandleTypeDef *Device; /*!< HAL driver handle */ uint8_t *ARP_UDID; /*!< A UDID used in ARP */ st_command_t *CurrentCommand; /*!< NULL, unless a command is being processed */ st_command_t *CMD_table; /*!< Pointer to first record in the table of all supported commands */ uint32_t CMD_tableSize; /*!< The supported commands table size */ #ifdef PMBUS13 SMBUS_ZoneStateTyp
Hi, I would like to use MDMA to get values from ADC. I have one adc set with 6 channels, starting conversion with timer (100µs). So I would like to save in memory adc values like that : val1, val2, val3, val4, val5, val6 -> val1(100µs),val1(200µs)...val1(1000µs),val2(100µs),val2(200µs)...val2(1000µs)...val6(1000µs) the destination memory is 60 values of 16 bits. That means I would like to be interrupted every 1ms by MDMA. So I use this configuration (at beginning I would like to test only 2 first values val1 and val2): this is the code to initialize MDMA MDMA_HandleTypeDef hmdma_mdma_channel0_dma1_stream2_tc_0; MDMA_LinkNodeTypeDef node_mdma_channel0_dma1_stream2_tc_1; /** * Enable MDMA controller clock * Configure MDMA for global transfers * hmdma_mdma_channel0_dma1_stream2_tc_0 * node_mdma_channel0_dma1_stream2_tc_1 */ void MX_MDMA_Init(void) { /* MDMA controller clock enable */ __HAL_RCC_MDMA_CLK_ENABLE(); /* Local variables */ MDMA_LinkNodeConfTypeDef nodeConfig; /*
Hello, In the TPM part ST33KTPM2I3WBZB1, what is the HW version that is supported? Is it ST33K1M5T revC orST33K1M5T revD? Thanks.
With STM32CubeIDE 1.19.0, i generate a CMake project for STM32U073CCT6. The generated startup file has a DMA1_CHannel1_IRQHandler instead of DMA1_Channel1_IRQHandler.
I'm using an STM32G431 with FreeRTOS. I have a total of 5 tasks, including the default task, and all of them were set to osPriorityLow. With this configuration, the tasks did not run properly. When creating the tasks, NULL was not returned and no error occurred. After changing all task priorities to osPriorityNormal, the problem was fixed. I don't really understand why this happens. Each task has a reasonable osDelay(), so I don't think any specific task is blocking the others. Also, if a task were blocking, I would expect the same problem to happen even after changing the priority. I also tried changing the heap size and the stack size, but that did not seem to be the cause. Has anyone experienced a similar issue, or does anyone know why changing all tasks from osPriorityLow to osPriorityNormal would make a difference?
MCU STM32H503KBU internal clock 64 MHz During a UART restart,the HAL_UART_Init function callsHAL_RCCEx_PeriphCLKConfig, which results in a HardFault_Handler void UART_Set_BaudRate(UART_HandleTypeDef *huart, uint32_t BaudRate) { if (HAL_UART_DeInit(huart)!= HAL_OK) { Error_Handler(); } huart->Instance = USART1; huart->Init.BaudRate = BaudRate; huart->Init.WordLength = UART_WORDLENGTH_8B; huart->Init.StopBits = UART_STOPBITS_1; huart->Init.Parity = UART_PARITY_NONE; huart->Init.Mode = UART_MODE_TX_RX; huart->Init.HwFlowCtl = UART_HWCONTROL_NONE; huart->Init.OverSampling = UART_OVERSAMPLING_16; huart->Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart->Init.ClockPrescaler = UART_PRESCALER_DIV1; huart->AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(huart) != HAL_OK) { Error_Handler(); } if (HAL_UART_Receive_IT( OW.huart, &uart_temp, 1) != HAL_OK) Error_Handler(); } If y
Hi everyone,I am experiencing a very specific initialization issue with a custom board based on the STM32WB55RGV6.We recently manufactured a batch of 30 boards. 22 of them are working flawlessly, but 8 boards fail to start the BLE radio on a cold boot (Power-On Reset). They all run the exact same firmware and have the exact same layout.Hardware details:MCU: STM32WB55RGV6HSE: 32 MHz crystal (CS06410-32M)LSE: 32.768 kHz crystalRF: MLPF-WB55-01E3 filter + Ceramic AntennaSymptoms & Debugging Steps Taken:No RF Output: Using an SDR and Near Field Probes, I confirmed there is zero RF energy being transmitted on the 2.4 GHz band during a cold boot on the faulty boards.HSE is Alive: I probed the 32 MHz HSE crystal with an oscilloscope, and it is oscillating perfectly at 32.000 MHz.The FUS Workaround (The Clue): If I send an AT#FUS command via UART to enter the Firmware Upgrade Services mode, the CPU2 wakes up and the board successfully advertises the "STM_OTA" network.Warm Boot Success: If
Hi everyone,I'm encountering a blocking issue while trying to start an inference on a NUCLEO-N657X0-Q using STM32Cube AI Studio and STM32CubeProgrammer.The connection to the board via SWD seems successful, but the process fails during the memory programming phase. ------------------------------------------------------------------- STM32CubeProgrammer v2.22.0 ------------------------------------------------------------------- ST-LINK SN : 002F00223234510333353533ST-LINK FW : V3J17M10 Board : NUCLEO-N657X0-Q Voltage : 3.28V SWD freq : 8000 KHzConnect mode: Under ResetReset mode : Hardware reset Device ID : 0x486 Revision ID : Rev Z Device na
We are trying to do a firmware upgrade via UART to the N6 from another MCU, and having trouble getting it working. We do not have a USB host stack on that MCU so we're unable to use USB DFU.I've successfully been able to transfer and start the FSBL to the N6, but am unable to transfer the app image. Another detail is that our app image is ~540KB, so a bit too big to fit in the RAM buffer. Even a smaller sample image isn't able to work.Before I try a different bootloader or custom option, I just wanted to see if anyone else has had success doing this or if there is something I'm missing. Thanks.
Dear STM Team,Greetings!!I am writing to request you to please support in my PCB design review, as attached.I made a prototype board based on the simulation result for my 48V to 12V20A DCDC Converter requirement by using the e-design suite platform.Kindly request you to please support in the layout review and revert with your valuable suggestions, at present we are testing the prototype board, but are not getting output voltage/current, etc.
I'm currently developing an external loader on STM32H563ZIT6 development board.I'm facing an issue on programming with cube programmer in the image belowThe problem I think might be linked to interrupt handler of systick. I've attached the Loader_src.c file where I had developed the functions used by Cube Programmer; also attached the linker used. The low level functions linked to XSPI communication are properly working, because I had tested in debug erasing and writing sectors. I need help to figure out the problem.
I have some questions regarding the L78M05AB regulator IC.1. Could you please investigate the temperature at which this IC's the thermal protection actually activates?2. I have been informed that the thermal protection mechanism shuts down the output voltage. However, when we applied heat, we observed behavior suggesting that the output appears to remain at a constant level. If the temperature is kept at a specific value, will the output remain constant (for example, 3V)?"3. Could you please clarify the behavior when SOA protection is triggered? Does the circuit limit the output, or does it enter a shutdown state?4. Related to SOA protection, is there any case where the voltage is reduced and latched at a certain level?5. Are there any restrictions or specifications regarding harmonics or noise on the input voltage of the regulator IC?
hello,I encountered a problem while developing for stm32u585. When the stm32 wakes up from standby mode, the HAL_RCC_OscConfig() function occasionally fails, "Wait till LSI is disabled" timeout in HAL_RCC_OscConfig() (this project uses IWDG)The specific process is as follows:1. start boot HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_ICACHE_Init(); MX_UART4_Init(); boot to other address(app) 2. app init HAL_Init(); SystemClock_Config(); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_LSI |RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.LSEState = RCC_LSE_ON_RTC_ONLY; RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; RCC_OscInitStruct.LSIState = RCC_LSI_ON; RCC_OscInitStruct.LSIDiv = RCC_LSI_DIV128; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMBOOST = RCC_PLLMBOOST_DIV1; RCC_OscInitStruct.PLL.PLLM = 1
Hi I am trying to gain knowledge on TouchGFX and GUI, with STM32 controller. can you provide me with the document or example from where i can start my learning to use TOUCHGFX and use multiple screen.
Hi all,I am working with STM32F469ZIT6 and external SDRAM AS4C4M16SA-6TIN SDRAM using FMC (Bank1).SetupHCLK = 180 MHz SDRAM clock configurations tested:HCLK/2 (90 MHz) → Refresh count = `0x056A`HCLK/3 (60 MHz) → Refresh count = `0x0395`Data width: 16-bitInternal banks: 4CAS latency : 2SDRAM clock has been verified using an oscilloscope and matches expected frequencies.Test CodeI am writing a pattern to SDRAM and reading it back:- Write pattern: `0xA1234567 + index`- Base address: `0xC0000000` for (uwIndex = 0; uwIndex < BUFFER_SIZE; uwIndex++) { *(__IO uint32_t*) (SDRAM_BANK_ADDR + WRITE_READ_ADDR + 4*uwIndex) = aTxBuffer[uwIndex]; }Read back: for (uwIndex = 0; uwIndex < BUFFER_SIZE; uwIndex++) { aRxBuffer[uwIndex] = *(__IO uint32_t*) (SDRAM_BANK_ADDR + WRITE_READ_ADDR + 4*uwIndex); } Issue (Observed Behavior)- The read operation does not return the correct written data- Instead:It often returns the previous/last written value.The data pattern shows MSB dupl
If the user uses "-Wundef" the header "stm32u3xx_hal_def.h" creates a lot of warnings due to a missing check if a preprocessor macro is defined before evaluating it.The warning gets emmited by the following #ifs used in STM32Cube FW_U3 V1.3.0 inside "stm32u3xx_hal_def.h":#if defined ( __CC_ARM ) || ((__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) || defined ( __GNUC__ )e.g. in line 142This is how it was correctly checked in e.g. the STM32Cube FW_G0 V1.6.3 in the hal def header for the stm32g0 hal:#if defined ( __CC_ARM ) || (defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)) Best Regards
Hello ST Team, could you please provide the marking code for LD59015C33R? Where can i find it on my own? A register to verify parts by codes would be great. Thanks Thilo Roth
Environment:Board: STM32H7S78-DKMCU: STM32H7S7L8H6Stack: AzureRTOS USBX (PIMA MTP + CDC ACM) + FileX.Storage: microSD Card.Host OS: Windows 11 Preliminary Note:A significant portion of this code is adapted from the official ST example:stm32-usbx-examples/Projects/STM32H735G-DK/Applications/USBX/Ux_Device_PIMA_MTP at main · STMicroelectronics/stm32-usbx-examples Current Status:I have successfully implemented the MTP class. The device is correctly recognized by Windows, the storage is mounted, and I can view and modify files located in the root directory.To manage MTP objects, I use a custom function SD_Scan, which traverses the FileX filesystem and builds a local object handle table (ObjectHandleTypeDef).VOID SD_Scan(VOID) { /* Estructura estática para no usar el STACK */ static FolderList_t folder_list[SD_MAX_HANDLES]; /* Variables de control de la cola con nombres claros */ UINT NextFolderToScan = 0; UINT TotalFoldersInList = 0; /* Variables de es
Hello everyone,I am working on a custom bootloader for an STM32H743-based TouchGFX project and facing a very strange issue specifically with the TouchGFX application after jumping from bootloader.STM32H743 Bootloader Successfully Jumps to Simple App but TouchGFX Application Shows Black Screen After Bootloader Jump.I would appreciate any guidance from people who have experience with STM32H7 + TouchGFX + bootloader integration.Hardware / Project DetailsMCU:STM32H743IIT6Frameworks:STM32CubeIDETouchGFXFreeRTOSPeripherals Used in TouchGFX App:FMC SDRAMLTDCDMA2DQSPII2CTIM2External Memories:SDRAM framebuffer at 0xD0000000QSPI assets at 0x90000000Bootloader FunctionalityThe bootloader:Initializes USB Host + FATFSDetects pendriveReads image.bin and extflash.binPrograms internal flash and external QSPI successfullyUses APPLICATION_ADDRESS = 0x08040000After flashing, bootloader jumps to applicationImportant:Simple LED blinking application works correctly through the same jump functionOnly TouchGF
CubeMX copies the .s startup file from the template folder and renames it based on the selected MCU. However, the lowercase conversion generates different filenames on systems with different locale settings.For STM32H743IIK6, the generated filename differs depending on the system locale.On Windows 11 with the English locale, CubeMX generates:startup_stm32h743iikx.sOn Windows 11 with the Turkish locale, it generates:startup_stm32h743ııkx.sThe issue is caused by locale-dependent lowercase conversion of the letter I.
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.