Get ready for the STM32 Summit 2026 | Online, November 3
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
Dear all,I think I have discovered a bug in the CMSIS headers supplied for the STM32H7RSx and STM32H7x MCUs.In "Drivers/CMSIS/Device/ST/STM32H7RSxx/Include/stm32h7rsxx.h", there are definitions for ATOMIC_SET_BIT() and ATOMIC_CLEAR_BIT() among others, see https://github.com/STMicroelectronics/cmsis-device-h7rs/blob/7e6e213ddc397c76622a0aca2f623ccc3b34c010/Include/stm32h7rsxx.h#L162:/* Use of CMSIS compiler intrinsics for register exclusive access */ /* Atomic 32-bit register access macro to set one or several bits */ #define ATOMIC_SET_BIT(REG, BIT) \ do { \ uint32_t val; \ do { \ val = __LDREXW((__IO uint32_t *)&(REG)) | (BIT); \ } while ((__STREXW(val,(__IO uint32_t *)&(REG))) != 0U); \ } while(0)and the "register" in the description and the '__IO' qualifier in the code hint that this can be used for peripheral registers. This suspicion is correct, e.g., see https://github.com/STMicroelectronics/stm32h7rsxx-hal-driver/blob/1bde483bc7ab4883c2ef643e5a16ad6b303a631f/S
I'm trying to install the ST-Link USB Drivers following the instructions here. However, the STM32Cube Resources section does not include ST-Link USB Drivers.I'm running the latest versions on VS Code and STM32CodeIDE extension.
I'm writing firmware for a development board based on the STM32H743 MCU, and I want to use an external GPIO input as the trigger or synchronization signal of DMAMUX to initiate DMA transactions. However, it seems that very little information is available on using GPIOs to start DMAs. In the reference manual, "Table 127. DMAMUX2: assignment of trigger inputs to resources" and "Table 128. DMAMUX2: assignment of synchronization inputs to resources", it shows two trigger input signals: "Syscfg_exti0_mux" (number 20), and "Syscfg_exti2_mux" (number 21). So it seems to suggest that the EXTI trigger sources can indeed be used to trigger the DMA, but these two signals are not mentioned anywhere in the entire reference manual, there's no block diagram showing exactly what GPIO pins are connected. It says "SYSCFG" and "MUX", so they're probably the outputs controlled by programming SYSCFG_EXTICR1, SYSCFG_EXTICR2, SYSCFG_EXTICR3, SYSCFG_EXTICR4. But there are 4 EXTICRx and only two "exti_sys
I am currently working with the LoRa-E5 Mini module based on the STM32WLE5JC microcontroller, and I am using STM32CubeIDE version 2.1.0 for development. I have successfully tested basic GPIO functionality (LED blinking), and I am now trying to implement LoRa-based communication (transmission and reception) using the integrated SubGHz radio. However, I am facing challenges in properly configuring and utilizing the SubGHz_Phy middleware and radio drivers within STM32CubeIDE. Specifically, I need guidance on the following: The correct procedure to enable and configure the SubGHz radio peripheral in STM32CubeIDE for STM32WLE5JC. How to properly include and use the SubGHz_Phy middleware for basic LoRa communication. Availability of any official example projects (such as Ping-Pong or Tx/Rx) compatible with STM32CubeIDE 2.1.0 for the LoRa-E5 Mini module. Proper configuration of radio parameters (frequency, spreading factor, bandwidth) for reliable communication. Any recommended steps to ensu
Hi, there is a way to found the spice model for the IC: SG3525AN?
Board / SoCBoard: NUCLEO-WB09KESoC: STM32WB09SoftwareZephyr version: v4.4.0-rc2-41-g149c8b1758a8Toolchain / build system: West + Zephyr standard build flowIssue summaryWhen building a very small Zephyr application for NUCLEO-WB09KE, simply enabling:CONFIG_BT=ycan cause intermittent boot failure.The failure happens very early in boot:no UART outputno boot bannerno application printk()main() appears to never run in failed bootsThis happens even when the application does not call any Bluetooth API.Minimal applicationmain.c#include <zephyr/kernel.h> #include <zephyr/sys/printk.h> int main(void) { while (1) { printk("M\n"); k_busy_wait(100000); } return 0; }Minimal project configurationprj.confCONFIG_BT=y CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=y CONFIG_EARLY_CONSOLE=y CONFIG_PRINTK=y CONFIG_ASSERT=y CONFIG_ASSERT_VERBOSE=y CONFIG_LOG=n CONFIG_PM=nObserved behaviorWith Bluetooth disabled, the board boots and repeatedly prints:M M M ...With CONFIG_BT=y enabled, boot becomes
I have a STM32H730 Project, using CubeIDE V1.17.0. Code executing from the internal Flash.I have located some functions into ITCM,added a new .itcram section to the linker LD fileadded __attribute__((section(".itcram"))) to my functions I want in ITCMat startup I copy from FLASH to ITCM This builds and runs okay, the functions in ITCM execute as expected.But, I can't Debug Step into any function located in ITCM, it just steps over the function.I can set a breakpoint in a ITCM function, but it never halts there, just ignores the breakpoint. How can I step into functions located in ITCM?Do I need to tell GDB that I have instruction code in ITCM? Thanks.
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
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.