Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello.. i m looking for H753 Nucleo BOM list, i search ST web below but its not there..https://www.st.com/en/evaluation-tools/nucleo-h753zi.html#documentation
Dear ST Community,I am using the STM32H573's SDMMC interface to communicate with a soft eMMC device implemented in FPGA:1.8V I/ODDR==0 modeCLKDIV>0.I'm setting up the timing constraints for the FPGA's CMD input versus the CK input and I have a query about the SDMMC interface timing.In the datasheet, Table 123 defines the tov and toh parameters. In which mode are these parameters valid? CLKDIV>0 and NEGEDGE==0?How would NEGEDGE==1 change tov and toh? Based on the diagrams of figure 164, I believe the tov and toh would increase by 1/2 the clock period. Is that correct?Thank you. Ben
Hello, I'm using NUCLEO-U545RE-Q NUCLEO-U545RE-Q evaluation board which has STM32U545 MCU. I've requirement of running at 25Mhz frequency system clock and ADC to run at 25Khz sampling frequency.
Hi All, We are building a charger based on STDES-2KW5CH48V. On ST .hex file is available as firmware. Is source code also available ? Thanks in advance. Regards,Vimal
Hi I configured spdif rx with dma in circular mode and it works fine except that the signal should persist when mcu starts. The "wait for activity before synchronization" has no effect. The code for spdif mostly generated by cubeIDE. Am i missing something or it will not work in combination with circular dma? Also in case if cable was disconnected and connected back, what is the right procedure to restart reception? My attempts only lead to mcu stuck.
Hello everyone, I hope you're doing well. I'm currently working on the STM32H747I-DISCO board, implementing SBSFU on it. I accidentally put a PCROP Protection, which does not allow me to erase the flash memory sector 0, which corresponds to 0x08000000 of the flash memory, and the settings that I'm seeing on the Cube Programmer for the PCROP are: PROT_AREA_START1: value: 0x6, address: 0x08000600, and for the PROT_AREA_END1: value: 0xff, address: 0x0800ffff. I tried to change the option bytes, but no success. Then I tried to connect the board through the STM32 Cube programmer via hardware reset mode, so that it could go into the hardware reset state upon connection, but that didn't do the job either, and this caused me another problem, the ST-LINK error (DEV_TARGET_NOT_HALTED). Now I don't know what to do about these two problems, or how I might be able to solve them. If anyone knows anything related to solving these kinds of problems, that would be a big help.&n
Hi Team, I’m currently working on a project using the NX2016SA 25 MHz crystal resonator from NDK(Datasheet: https://www.ndk.com/images/products/catalog/c_NX2016SA_e.pdf).All configurations have been done through STM32CubeIDE , and the setup is as follows:Step 1: IOC ConfigurationEnabled High-Speed External (HSE) clock.Selected Crystal/Ceramic Resonator mode.Enabled PH0 (RCC_OSC_IN) and PH1 (RCC_OSC_OUT) in the pinout.Step 2: Clock ConfigurationIn the Clock Configuration tab:Set HSE as the PLL input.Used the “Resolve Clock Issues” option to fix initial PLL setup errors.Step 3: Code Generation and FlashCode was successfully generated and flashed to the board.No compilation or linking errors.The microcontroller powers on as expected.Issue ObservedWhen probing PH0 and PH1 using a DSO (Digital Storage Oscilloscope), no clock waveform is observed.The crystal does not appear to be oscillating.There is no sign of activity or ringing — both lines are flat.Step 4: Hardwar
Hello Everybody,I have a high-power BLDC motor with a rated power of 200W and a nominal voltage of 24V, resulting in a current draw of approximately 10A. I intend to use Motor Profiler to detect detailed motor parameters (e.g., B-EMF constant). Could you advise on which ST control board is suitable? I know there are many control boards like NUCLEO-G431RB. Given the high current, is the control board with the Three-Shunt current sensing inappropriate? If so, what alternative control board should I select? Thank you!
Hello ST Community,I am currently working on a motor control project using an STM32 microcontroller and STM32CubeIDE. I have noticed that the code size (firmware image size) is larger than expected, and I would like to reduce it as much as possible to fit within memory constraints and improve performance.Are there recommended methods or best practices to optimize the firmware code and reduce its size? At present, the firmware size is:
hello,I am a student, and for my university project, we are using this stepper motor controller X-NUCLEO-IHM05A1, and I have the STM32NucleoF401RE Microcontroller board to send the command to the motor control. I see there is one middleware package for this motor controller called X-CUBE-SPN5. So, I try to search for this middleware package on STM32CubeIDE, but there is no option regarding it. Now I go to the ST website and I am looking for the .zip file, but there is nothing. I also try to find the proper use case, how can I install, and how can I use but is there any documentation available for that? So can you please provide me this package so I can control the motor easily for my university project, and if possible, so guidance on how i install this middleware package into STM32CubeIDE and how to use this middleware package function for controling the motor. I am waiting for your reply. Thanks in advanceDhruv@Peter BENSCH
Hello STM32 Community,I'm developing a cellular IoT device using STM32L4 and facing an architectural challenge regarding IWDG implementation with long cellular communication timeouts. I'd appreciate your expertise and recommendations.System Overview:Hardware: STM32L4 custom board with cellular modem (Quectel BG95/BG96)Communication: UART-based AT commands with IDLE line interrupt (no DMA)Application: Periodic sensor data transmission to server via UDPPower Management: Device enters STOP2 mode between measurement cyclesIWDG Configuration:Clock Source: LSI (32kHz)Timeout: ~32.8 seconds maximum (IWDG_PRESCALER_256, Reload=4095)Behavior: Once enabled, cannot be disabled; pauses during STOP modesThe Challenge: My low-level AT command function implements timeout-based communication to prevent infinite loops:int <function_name>(const char *command, const char *expected_response, /* other params */, int timeout_ms) { uint32_t start_time = HAL_GetTick(); // Send AT command via UART
So if I open a .cpp file by double clicking in Project Explorer, the syntax is not highlighted:But if I have an error, clicking on the file error opens up the file like this (from Problems Tab):Both files also open up in the tabs next to each other (as if it doesn't know the file is already open). Anyone know if there is a fix or how do I open a .cpp file and have it highlighted?Thanks
Hello,I am using the STM32F767ZI MCU and was wondering if it is possible to check if a debugger is connected or not and if SWV is enabled, to avoid the UN-necessary looping when a printf is encountered.These are my requirements:Check if the user has connected a debuggerCheck if the user has enabled ITM trace from the debugger and connected to the correct port.(Port 0 in this case)If both points 1 & 2 are not done, avoid the looping when a printf is encountered.So when printf is called it invokes the _write function. Inside the write function we call ITM_SendChar(); in a loop. It is this loop which i want to avoid.This is what i have so far: static inline bool IsDebuggerAttached(void) { return (CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk); } static inline bool ITM_Port0_IsEnabled(void) { return ((ITM->TCR & ITM_TCR_ITMENA_Msk) != 0U) && ((ITM->TER & 1U) != 0U); } int _write(int file, char *ptr, int len) { (void)file; int DataIdx; /
We are designing a benchtop device with an LCD, battery, and wireless capabilities and have chosen the STM32H7A3ZIT6 MCU and ST67W611M WiFi/BT SoC. It's intended to use TouchGFX for the graphics. The board is complete and ready to order but I'd like a review of the hardware and schematic beforehand if possible as re-ordering and re-assembly with a mistake would take a while. MCU schematic:Power Section of MCUSignals of MCUThe schematic symbol was manually created with the nucleo hardware files as reference. MCU PCB:PCB routing for MCUThe yellow plane is a 3v3 digital power pour. USB is the differential signal coming from the top left of the MCU. Most of the signals are going to the LCD connector to the right. I have placed capacitors on pins as follows:PinLabelCapacitor6VBATNone, connected to 3v3d30VDD_54.7uF32 & 33VDDA & VREFPTied together. 100nF and 1uF39, 52, 62, 72, 84, 108, 144VDD_7, VDD_9, VDD_11, VDD_16, VDD_2, VDD_13Separate. 100nF71, 106VCAP1 & VCAP2
Dear all,I'm currently trying to work with USART1 on my Nucleo-N6 board.Here's how I attempted to initialize the board:CPU Frequency: 600 MHzPeripheral Bus (PB1, PB2, PB4, PB5): 50 MHzGPIO Configuration:PE5: Alternate function, push-pull — USART1_TX (AF7)PE6: Alternate function, pull-up — USART1_RX (AF7)I configured CCIPR13 to set the USART1 clock source to f PB2:RCC->CCIPR13 &= ~RCC_CCIPR13_USART1SEL;Here is my minimal USART1 initialization code:RCC->APB2ENR |= RCC_APB2ENR_USART1EN;USART1->BRR = 50000000 / 115200;USART1->CR1 = (USART_CR1_FIFO_UE | USART_CR1_FIFO_TE | USART_CR1_FIFO_RE);Unfortunately, I'm unable to send data. I verified with a logic analyzer and there’s no activity on PE5.Any suggestions would be greatly appreciated.Best regards,Edo
Hello ST Community,I am currently using the EVSPIN32F0251S1 inverter board to control a BLDC motor for an elevator door control application.When I run my BLDC motor in torque mode and set torque with this API MC_ProgramTorqueRampMotor1_F() so my motor is rapidly rotating and reach maximum speed.For my application, I need to maintain a fixed speed (e.g., 1000 RPM) while delivering the maximum possible torque. I would like to know if it is possible to achieve this behavior using the current firmware and control APIs.If this is feasible, I would appreciate your guidance on how to properly configure the motor control to balance both speed and torque — specifically, how to apply torque while constraining the motor to operate at a specified speed limit.Thank you in advance for your support.
Hello,I am using an STM32H7 MCU with STM32CubeIDE to communicate with a BiSS-C encoder in SPI RXONLY Master mode.My goal is to generate 64 SCK clocks every 10ms without delay.However, I am observing the following issue: Each time I call HAL_SPI_Receive(), SCK stays low for around 10 microseconds before the clock output starts.This happens regardless of SPI speed.At 1MHz SPI clock, the delay is around 10us.At 2MHz SPI clock, the delay reduces to about 5us.But there is always some delay before the first SCK pulse.The same code and settings on an STM32F103 board do not show this delay.I already tried RXONLY and FULLDUPLEX modes, manual NSS control, enabling and disabling NSS Pulse mode, but the result is the same.SPI settings:hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Direction = SPI_DIRECTION_2LINES_RXONLY; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; hspi1.Init.NSS = SPI_NSS_SOFT
Hello everyone,I’m using two STM32 MCU on baord with (BlueNRG-MS) stacked within, each running the same firmware that have BD_ADDR . When I power both boards on, I expect to see two separate entries in scanner apps like LightBlue or nRF Connect—but I only ever see a single device listed.I tried to change the local advertising name but only one board im able to see it at once, it seems bcz of their similar uuid it is like that. I’m looking for guidance on:How to ensure each BlueNRG-MS module truly advertises with its own distinct addressWhether there are any special steps or best practices for writing a random static address via aci_hal_write_config_data(CONFIG_DATA_RANDOM_ADDRESS_OFFSET, …)Scanner-side settings (e.g. duplicate filtering) or firmware tweaks that will guarantee all devices appear simultaneouslyI have added the bluenrg c file for better understanding and solution/** **************************************************************************
I tried to use the Nucleo H723ZG and DWM3000evb, but I couldn't control the RESET pin.To debug this problem, I check the basic pin control, using only while(1){ HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_13); HAL_Delay(1000);}However, it doesn't work and the output of PF13 is always 0V.It is same with the previous problem, that the RESET pin with output open drain mode keeps 3.3V.How can I debug this problem? Thanks.ps. I tried the another H723ZG board but got a same result.
Hello everyone!We are trying to enable the RTC with FreeRTOS on the STM32U575AII6. The settings are as follows:1.RCC2.RTC3.Clock4.freeRTOSCodevoid Debug_Printf(char *format, ...) { char buf[128]; va_list args; va_start(args, format); uint16_t len = vsnprintf((char *)buf, sizeof(buf), (char *)format, args); va_end(args); HAL_UART_Transmit(&huart1 ,(uint8_t *)buf,len,150); } void RTCTask(void *argument) { /* USER CODE BEGIN RTC_TASK */ RTC_DateTypeDef Date; RTC_TimeTypeDef Time; /* Infinite loop */ for(;;) { HAL_RTC_GetTime(&hrtc, &Time, RTC_FORMAT_BIN); HAL_RTC_GetDate(&hrtc, &Date, RTC_FORMAT_BIN); Debug_Printf("%02d:%02d:%02d\n",Time.Hours, Time.Minutes, Time.Seconds); osDelay(1000); } /* USER CODE END RTC_TASK */ } and the result output"10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10:10:01\n""10
Hi,I'm not new to STM32 frimware, however, this is my first with H755. I have uploaded a simple LED flash project to both cores. The LED timing is based on uwTick, but Systick is not firing!Green LED via M4, Yellow LED via M7.If I change the code M4 to:- /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { GPIOE->ODR ^= 0x02; /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */And code for M7 to:- /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { GPIOB->ODR ^= 0x01; /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } Stepping through the program manually, both LEDs toggle as expected. When I run without breaks, the Green LED toggles full speed (as expected), however, the Yellow LED toggles about once per second!I created the project from CubeIDE - just the basic project from the Nucleo-H755ZI-Q template.Win11, Cube Version:-Version: 1.19.0Build: 25607_20250703_0907 (UTC) STM32 FW_H7 1.12
HelloI'm an amateur Touchgfx user.I've completed many challenging tasks with Touchgfx, but I need a very simple one.I want to set the output port high for the duration of a keystroke.I used the ClickListener instructions in the program, but they didn't work.I tried creating Box1 the same way and it works perfectly.With this code, it works while I hold the button down, and stops when I release it, just as I wanted.void BRHZLView::boxClickHandler( const Box& b, const ClickEvent& evt){if (evt.getType() == ClickEvent::PRESSED) {HAL_GPIO_WritePin(GPIOG, BZR_Pin, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB, PST_I_Pin, GPIO_PIN_SET);} else if(evt.getType() == ClickEvent::RELEASED){HAL_GPIO_WritePin(GPIOG, BZR_Pin, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB, PST_I_Pin, GPIO_PIN_RESET);}But the flexbutton group keeps giving definition errors, and the program won't compile.I'm using Stm32h7b3i Evk, and the definitions in the base file don't match the definitions at https://support.touchgfx.com/do
Hello,My custom HW with STM32H757 does not have boot0 port access.Is there a way to jump to the System Memory Bootloader from user application ?Thanks and Regards,Taehyuk
So, I followed the following video step by step for a "project with a custom board" (video minute 13:04)https://www.youtube.com/watch?v=cbdFHmMOMwkI am working on an STM32G0B1CBT6The code is generated and can be built, but as soon as I enable the Utilities->GUI_INTERFACE in CubeMX, the generated code results in a Hardfault during initialisation ( to be specific in the in the file Utilities-> GUI_INTERFACE->bsp_gui.c) during execution of the line number 80, that is if ((0xFFFFFFFFu != *((uint32_t *)_addr)) && (MagicNumber != *((uint64_t *)_addr))) Any hints on how to proceed debugging?Thanks!
This is a follow up to my previous post at:https://community.st.com/t5/stm32-mcus-products/stm32f103ret6-bare-metal-spi3/m-p/819878#M282227I got the boards built, and I'm starting testing. SPI3 is not functional, so I started stepping through and checking SFRs. One problem I'm having is that PB3 (SCK) and PB5 (MOSI) refuse to configure as alternate function push pull. In lines 26-33 below, PA15 goes to output, alternate function push pull just fine. But PB3 and PB5 will only go to output, and open drain. In line 35, I even tried to force the mode bits to "10" (alternate function push pull), and when I observe the mode bits for PA3 and PA5, they get set to "11" (alternate function output open drain). My current attempt at SPI3 initialization is:void init_spi3(void) { // Note on ref manual page 699: need to disable JTAG because SPI3 conflicts with JTAG pins // Enable AFIO clock RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; //(VERIFIED set properly by st
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.