Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Moved from this thread. What is the maximum amount of time required after bringing nRST high for a Pattern 11 MCU to determine that flash is blank, recognize that BOOT0 is high, and enter the ROM bootloader? I suspect we may have a timing issue, in that my application may not be waiting long enough before interrogating the bootloader. (I would test this right now, but we handed off the project to our customer some time ago... they will be testing it later today). Is this maximum time specified anywhere in ST's documentation? Dana M.
I'm trying to program the EVSPIN32G06Q1S3 to run a PMSM, but I attempted to use STM32CubeMX to help with the pinouts and code. The problem is that I can't find the EVSPIN32G06Q1S3 in the board selector. Is there a way to download then import the board information to STM32CubeMX? If there's not, could I get documentation to help implement the board through the MCU selector? Thank you!
Hi All,I am successfully programming and debugging a NUCLEO-STM32F401RE by its embedded ST-LINK programmer using STM32CubeIDE v.1.12.0 on a computer running Ubuntu 22.04.3 LTS, updated and upgraded.I have a second PC running exactly the same Ubuntu, CubeIDE, CubeProgrammer versions but when I try to debug the same NUCLEO board I get the error message "No-ST-LINK detected! etc etc".I deduce that my USB cable is just fine, that no hardware issues are present and that my two PCs looks the same but some set up difference(s) should exist between them preventing the interface to run properly on the second machine. I wasn't able to identify this difference and solve the problem.I am aware that several "No ST-LINK detected" posts are present on the STM32 Forums but none of them fixed the issue.Finally, I upgraded STM32CubeIde and Programmer to a third computer (same Ubuntu version) to their latest release, while keeping the other two PCs "identical", and can confirm that the upgrade did NOT fi
Hello,We are working on a stm32f429.The application uses ADC1 to sample data on Channel 0-7.ADC1 and channels characteristics are:- Mode: Independant- Sampling clock: Around 2.8 Mhz- No DMA access- Sampling delay: 20 clocks periods (max value)- Resolution: 12 bits- No scan mode- NO continuous conversion- Single conversion mode- Channel sampling time is 480 clock cyles (max value)- Vref+ = Vdda = 3.3V- VSS = 0VEach channel is connected to a sensor with a voltage variation of 0-3.30V.The signal on each channel is a low frequency.The sampling period for all channel is 1 second.Channels are sampled alternatively in the following order 0,1,2..7.This works pretty well, with a very good precision for our application. Now the specific issue we have is:When the sensor voltage on channel N is >= 2V, The voltage measured by the ADC on Channel N+1is lower than the nominal value by 0.3V.Only channel N+1 is affected all the other channels are not. And the change is always 0.3V.Each channel h
I made some containers in 1 screen. (please refer to attached image) I wanted to handle these containers depends on h/w key. e.g. temp key is pressed, all of the containers in HDT_POPUP_GRAPHIC_SCREEN must be disabled. only main_graphic_temp_container will be showed up. However, main_graphic_temp_container.setVisible(true);main_graphic_temp_container.invalidate(); doesn't work normally, when these codes are in the switch~case statement. I tried to move these codes to the end of the setupScreen(), not in the switch~case statement. In that case, main_graphic_temp_container.setVisible(true);main_graphic_temp_container.invalidate(); works normally. Am I wrong to use these two (setVisible, invalidate) methods?
Hi,I'm trying to toggle a pin on my STM32H723 (LQFP144) using GPIO. According to the Nucleo-144 board datasheet, PE12, PE13, and PE14 appear to be connected to both CN10 (Zio) and CN12 (Morpho).However, when I toggle the pins to light up an LED, the signal only appears on CN12 — not on CN10.I’ve checked the documentation but couldn’t find any SB (solder bridge) configuration that might be affecting this behavior. Am I missing something?Best regards,Kewin
Hello there, I'm using USB CDC application. I'm in a situation of receiving more than 250 bytes of data from the Windows(QT). Now my doubt is when the data is more than 64 bytes the USB FS it'll not consider right.But i revised some websites from there i came to know that "you can send larger than 64 bytes the usb will take care for multiplying the packets". But in my case it was not working. Later from our STM community i came to know that by changing this " CDC_DATA_FS_MAX_PACKET_SIZE" to larger number we can achieve receiving large number of packets.initially CDC_DATA_FS_MAX_PACKET_SIZE is 64U. Now I've changed to 256U. Now it's working fine, but i don't know about later. Does it cause any problems?
Hi STM Team, We are using STM32H757XIH6 microcontroller in our design for one of the project. We are having the query regarding FMC port. We are planning to use 8 bit data bus (FMC_D0-D7) of FMC port to drive multiple peripherals like LCD, Keypad, ADCs, IO cards etc.We understand their are 4 Chip Selects NE1,NE2,NE3 and NE4.We also intend to use GPIO pins to work as additional Chip Selects for all above peripherals. Can we use the FMC port data lines (FMC_D0-D7) along with GPIOs as additional Chip Selects for above application? Request you to please share the steps to configure FMC port for this application. Could you please also confirm if we can use FMC port signals as GPIO signals? Appreciate your support.
Hello,first, this is my first try on Keil uVision & MDK toolchain.My goal is to compile and run the same source using ST CubeIDE and Keil uVision.For this a generate code and 2 project files, one for CubeIDE and one for Keil, for a demo project with FreeRTOS and LWIP.I can sucessfully compile and run the project on CubeIDE. But if I compile the same code on Keil MDK, I get the following errors:Error: L6218E: Undefined symbol errno (referred from if_api.o).FreeRTOS.h(71): error: #5: cannot open source input file "reent.h": No such file or directory I googled around and I found out that I have to tweak some settings in CubeMx which dependent on choosen toolchain. But my intention is to use the same source and CubeMx configuration files for both toolchains. So I choose patching two configuration files. The 1st patch I added to the user code part of FreeRTOSConfig.h:/* The following flag must be enabled only when using newlib */ #define configUSE_NEWLIB_REENTRANT 1 : /*
Hi,I have generated a CubeMX project with trustzone. So, I have a secure and a nonsecure project. The secure project runs, jumps to the nonsecure project and the nonsecure project tries to blink the red. I am using CMakeLists and have included my_app.c file, in the nonsecure project, where my main() function is located. My my_app.c file:#include <stdbool.h> // Auto-generated main from STM32 project #include "main.h" #include "stm32wbaxx_hal_gpio.h" int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); main2(); while (true) { HAL_GPIO_WritePin(RED_GPIO_Port, RED_Pin, GPIO_PIN_SET); HAL_Delay(250U); HAL_GPIO_WritePin(RED_GPIO_Port, RED_Pin, GPIO_PIN_RESET); HAL_Delay(250U); } } The main2() is the original main generated by CubeMX, but I have renamed it and removed everything else from there, and now it only has the blinking LED code. My main2() function in the nonsecure project main.c file: int main2(void) { HAL_GPIO_WritePin(RED_GPIO_Por
I'm working with an STM32H7 board and trying to interface with some external RAM using OCTOSPI over the HyperBus protocol. I'm attempting to run the RAM in memory-mapped mode and have mostly followed the STM32 application note provided by STM.Most of the code was adapted directly from the application note. During the delay calibration step, the code gets stuck when trying to access the external memory. Specifically, the fault happens here:*mem_addr = Cal_buffer[index]; // IT HAPPENS HEREThis results in the program entering MemManage_Handler(void), and execution halts. I think i might have some misconfigurations.I had to make a small modification to the DelayBlock_Calibration() function. The original line:HAL_RCCEx_OCTOSPIDelayConfig(delay, 0);was replaced with:__HAL_RCC_OSPI_CONFIG(delay);because the original function didn't compile for me. That said, the code never reaches this point, so it’s likely not the root cause, but I mention it in case it's relevant.As for my clock s
Hello!I wanted to ask if theX-NUCLEO-GFX01M2 module is compatible with STM32 NUCLEO-H533RE? The official documentation does not say anything about this NUCLEO board.Kind regards Andrew
I'm working on getting a minimum viable example functional using a U575 IC and a micro SD Card. The hardware I'm using is the Nucleo-U575 board along with an SD Card breakout from Adafruit. I've wired it up as an SDIO 4-bit setup. With just the autogenerated code when I enable the SDMMC peripheral, I'm finding that it runs into an error. HAL_SDIO_Init() -> SDIO_InitCard() -> SDMMC_CmdSendOperationcondition() -> SDMMC_GetCmdResp4() returns a errorstate of 4 (SDMMC_ERROR_CMD_RSP_TIMEOUT). What is timing out here? Is there something I need to do to set the SD Card into SDIO mode? Also, the SDIO_CLK looks to be running non-stop at ~800kHz. Is this normal? I would expect it to run only when something it happening on the bus (just like SPI), but this is my first foray into SDIO.This is using STM32CubeIDE 1.19.0 with the latest firmware pack (I installed it and it downloaded it today)
Hi All,I have constant measurement offset in Vbat internal channel from ADC3, ~30mV above the supplied value.Vref calculated by macro:__HAL_ADC_CALC_VREFANALOG_VOLTAGE((uint32_t)(measure->adcDataAverage[measureVref]) , ADC_RESOLUTION_16B);i see offset of 4 mV above the configured 2.5V (reading is 2.504 - 2.505)Vbat also calculated by macro:__HAL_ADC_CALC_DATA_TO_VOLTAGE((uint32_t)(systemObj->dump[MIN_NET_ADDR_NUMBER - 1].measurement[measureObjVref][dbgObjectNameVoltage - dbgObjectNameCurrent]) , measure->adcDataAverage[measureVbat] , ADC_RESOLUTION_16B);but offset is higher: 30mV above the input voltage.i check with NUCLEO-H753ZI by run of STM32Cube\Repository\STM32Cube_FW_H7_V1.11.2\Projects\NUCLEO-H743ZI\Examples\ADC\ADC_InternalChannelConversionand also observed offset around 20mV.According to DS: https://www.st.com/resource/en/datasheet/stm32h743vi.pdf page 109, Vref has max.15 mv "spread", but the Vbat deviation is not specified.Please advise.
On the phase outputs why are there ground cutouts on the layout for this reference design. Is there a risk to cross couple to the ground plane with the switching noise or is it for thermal concerns?I've seen this in several ST ESC designs for drones and wanted to know. Thanks,
Hello all,we are using the STM32H7S3Z8T6 in a project. It has four VDDxSPI pins for an external power supply if XSPI is used. I also found some information in app note AN5935.However, we are not using external memory and therefore we don't need an additional power supply. Unfortunately I didn't find any information on what to do with these pins if XSPI is not used. Leave them open? Connect to Gnd? Connect a capacitor? And an additional question: the "normal" SPI buses are not powered by VDDxSPI right? Those pins are just for XSPI?
Hi, I am using an STM32H7RSxx device and I need to use the SPI6 (both full and half duplex) with the DMA.The problem I am facing on is the MOSI pin doesn't transmit anything.Only the SCK is working.Despite having configured it for SPI6 Alternate Function (according to datasheet) // SPI6 pins // SCLK, MISO, MISO, NSS GPIO_InitStruct.Pin = LL_GPIO_PIN_4 | LL_GPIO_PIN_5 | LL_GPIO_PIN_6 | LL_GPIO_PIN_7; GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; GPIO_InitStruct.Pull = LL_GPIO_PULL_UP; GPIO_InitStruct.Alternate = LL_GPIO_AF_8; LL_GPIO_Init(GPIOA, &GPIO_InitStruct);it always stays to low level.What is strange is the fact that if I use PB5 as SPI6 MOSI I can see as the pin stays at high level in idle state, but low for the rest of transmission, and this is quiet confusing.If I am not blind at all, the TRM and datasheet does not say anything about it..Of course
Dear all!this is the first time i design PCB for STM32H755, as my understand for direct SMPS that i design like attach file, really i don't know is it correct, so can you help take look and let me know if any mistake.
Hi :I want to switch my project from HAL to LL because of flash size.But SPI doesn't work after switching.When I using HAL, the code below in main function works fine, uart will print OK.When I switch to LL, it will print NG.After switching to LL, I already add LL_SPI_Enable(SPI1); to MX_SPI1_Init function.Cubemx project and all code is as attachment. uint8_t data = 0x80; CS_GPIO_Port->BSRR = (uint32_t)CS_Pin << 16u; #ifdef USE_HAL_DRIVER HAL_SPI_Transmit(&hspi1, &data, 1, 100); HAL_SPI_Receive(&hspi1, &data, 1, 100); #else while (!LL_SPI_IsActiveFlag_TXE(SPI1)); LL_SPI_TransmitData8(SPI1, data); while (!LL_SPI_IsActiveFlag_TXE(SPI1)); LL_SPI_TransmitData8(SPI1, 0xff); while (!LL_SPI_IsActiveFlag_RXNE(SPI1)); data = LL_SPI_ReceiveData8(SPI1); #endif CS_GPIO_Port->BSRR = CS_Pin; if(data == 0x05) { while (!LL_USART_IsActiveFlag_TXE(USART2)); LL_USART_TransmitData8(USART2, 'O'); while (!LL_USART_IsActiveFlag_TXE(USART2)); LL_USART
Hi, I am using an STM32U5A9ZJT with LTDC L8 buffer and cannot select GPU2D, is support for L8 being added soon?Being able to use L8 and vector fonts would be ideal for storage savings. I also noticed that the "hardware" option for vector rendering is available on the STM32U5A9, isn't this a feature of the NeoChromVG of the STM32U5G9? Can I use L8 images in touchgfx when using an RGB565 buffer? I tried this and it works in the emulator but crashes on device.
HelloProject based on stm32u5g9 where I enabled TouchGfx in CubeMx settings. Layer 0 is configured to 800x600. I generate code from CubeMx. GPU2D and DMA2D are enabled and configured from CubeMx.With TouchGfx Designer, I open the ApplicationTemplate.touchgfx.part generated or my ProjectName.touchgfx project, I see that screen dimensions are 800x480, I think it should be 800x600.In TouchGfxDesigner, I add a screen and a box inside the screen, nothing more.I generate code from TouchGfxDesigner.In CubeIde, the only generated or added library I can see is :libtouchgfx-float-abi-hard.a.I have other project generated by myself though directly from TouchGfxDesigner, chosing a STM32U5G9J-DK2 800x480 kit. Here I can see :libnemagfx-float-abi-hard.a and :libtouchgfxnema-float-abi-hard.a are included in CubeIde project. In my code, I am trying to draw a scaled line, using ScalableImage, BitmapId, creating a dynamicBitmap.Indeed the line is scaled and displayed in my display.However the rende
Hello, I'm trying to use the HAL function to calculate a file MD5 on my STM32H750 MCU. I successully managed to calculate the MD5 of little files using HAL_HASH_MD5_Start. Now I want to calculate the MD5 of a large file, so I'm not able to store all the file content in RAM. How to use the HAL functions to calculate the MD5 in chunk? Thank you in advance,Matteo
Hi, I have a problem with pinging PCs with my adapter USB-Ethernet with an STM32F207. I'm currently working with CDC-ECM for Ethernet-Over-USB. First case: I have 2 VMs with Linux on them. The USB is connected to the first VM (VM1) and the Ethernet is connected to the second (VM2). I can ping VM1 with VM2 but I can't ping VM2 with VM1.Second case: I have one VM with Linux and a Windows machine. The USB is connected to the VM and the ethernet is connected to the Windows machine. When I ping the VM with Windows or Windows with the VM I have only loss packets... Does someone have any idea why ?Thanks,
There is inconsistency in the reference manual and the STM32CubeMX clock configuration tool as to what the maximum clock for the PLL DSI. Reference manual suggests it is 1000 MHz however, when set to that in STM32CubeMX, an error is generated at the PHY DSI lane byte frequency with a maximum of 62MHz instead of an expected 125MHz
Hello ST Community, I’m a student with a strong interest in embedded systems, particularly with STM32 microcontrollers. I aspire to become a driver developer for STM32 platforms and would like to learn how to write peripheral drivers from scratch by deeply understanding STM32 datasheets, reference manuals, and hardware architecture. I’m looking for recommendations on: Training institutes (preferably in India) that provide in-depth, hands-on training on low-level driver development for STM32 (not just application-level programming). Online platforms or courses (paid or free) that focus on writing bare-metal STM32 drivers using CMSIS or directly accessing registers. Any structured learning paths, books, or resources you personally found valuable on this journey. If anyone has gone through this learning process or knows mentors or institutions offering such training, your guidance would be highly appreciated. Thank you in advance for your support.
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.