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
Heyho,just played with / checked the FPU on a G431.I found that the CubeIDE setting overrides the enable via register SCB->CPACR.So, if source code sets FPU on, but IDE says FPU off, the FPU is off.That a bug or a feature?
Hello everyone,I’m currently working with an STSPIN32G4 MCU on a custom board.Two version of this board exist: version A and version B.When I upload the firmware to the MCU on board A everything works correctly. The exact same firmware on version B doesn’t work.What happens:Board B is powered on and the MCU is still fabric new (no firmware uploaded) The custom fw is uploaded using the “Debug” feature of STM32CUBEIDE via JTAG The code is executed succesfully by the MCU Board B is powered off After repowering on board B the issue starts to present: the firmware gets stuck as soon as any interrupt is calledHere’s an image of where the program points at when I press stop on the debugger after an interrupt callWhat has already been tried:Performing a full chip erase on the MCU and redownloading the firmware, but it still gets stuck on interrupt call Removing the interrupt that was causing the firmware to get stuck (UART1 interrupt), but it still gets stuck as soon as TIM2 interrupt gets cal
STM32CubeProgrammer settingsJust got a NUCLEO-L476RG and connected to my computer. I cannot connect to it with STM32CubeProgrammer or STM32CubeIDE2.0.I had STM32CubeMX generate some code to blink the LED and haven’t changed any code in IDE.How to I actually connect to this board?I have tried changing to hardware reset, holding reset button pushing connect in Cube, then releasing etc. I am able to run Firmware upgrade in Programmer and it says it completes successfully. debug authentication discovery fails also IDE Debug error: (when I connect the board it opens in file explorer automatically)
Hi ST community I'm working on a simple application to get USB Device CDC ACM up and running. My goal is to make my STM32N6 Nucleo board detectable by my laptop so that it appears as a Virtual COM Port under Windows Device Manager.Here are my STM32CubeIDE settings:Step#1: Clock Configuration. Step#2: Set SYS clock : HSE -? DIGBYPASS Clock Source Step#3: Select TIM6, check off : Application Step#4: Select TIM6 as Timebase Source, check off : Application Step#5: Select USB1_OTG_HS, and select Internal HS Phy: Device, check off : Application Step#6: Select Threadx and check off Core and Mode: Application Step#7: Select USBx with the following setting :1. Mode: Application mode 2. Check off Core system3. UX Device: Device CoreStack HS and Controllers HS4. Device Class HS: CDC_ACM And here is my main.c file : Here is my project folder structure.To program the board, I've set the boot switches to DEV mode and compiled only the application code. I don't build or progr
Hello ST community,I am trying to understand the current support status of USB composite devices when using the classic stm32-mw-usb-device middleware.I know that the classic USB Device middleware already contains `CompositeBuilder`, and I have seen ST tutorials using it to build composite devices. For example, the STM32H5 CDC + HID tutorial and the dual CDC ACM tutorial.However, those tutorials still require a lot of manual integration: editing `usbd_conf.h`, editing `usbd_conf.c`, manually writing class registration code, and manually maintaining the generated `USB_DEVICE` folder. This is quite fragile because future CubeMX regeneration can overwrite important changes.For newer stacks, USBX seems to have much better composite support, where all the relevant code for composite could be generated by CubeMX. My questions are:1. Is there currently any STM32CubeMX-supported MCU package that can directly generate a classic `stm32-mw-usb-device` composite project using `CompositeBuilder`, i
Embedded veteran here, been involved in all manner of MCUs and MPUs professionally (especially safety-critical) but for personal use most of my prior experience has been with PIC16F and 18F (to save money obviously), of course those are only 8-bitters. I’m very interested in learning STM32 MCUs (gee they look ALMOST like DSPs except it’s single-cycle multiply not MAC and no simultaneous pointer adjustments etc.). Thing is my PIC experience has given me a pretty decent collection of chip initialization routines that I can adapt as necessary for small differences with peripheral features and such. My “inherent bias” is bare metal, no FreeRTOS, I understand I may be “going against the grain” a little but I want to get my hands on every nanosecond I may have coming. I don’t necessarily need this in C language, but I would like to get my hands on at least a very detailed list of all the HW registers that COULD need to be set, and the EXACT order in which this is “most safely accomplished”.
Hello,another day, another N6 "issue" :)I want to do RAM to RAM copy by HPDMA, but the data never get copied from Src to Dest, Dest always stays unmodified. I have checked the 'DMA_RAMToRAM' example for N6 and went from there, but with no success.DMA Init:__HAL_RCC_HPDMA1_CLK_ENABLE(); HAL_NVIC_SetPriority(HPDMA1_Channel1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(HPDMA1_Channel1_IRQn); handle_HPDMA1.Instance = HPDMA1_Channel1; handle_HPDMA1.Init.Request = DMA_REQUEST_SW; handle_HPDMA1.Init.BlkHWRequest = DMA_BREQ_SINGLE_BURST; handle_HPDMA1.Init.Direction = DMA_MEMORY_TO_MEMORY; handle_HPDMA1.Init.SrcInc = DMA_SINC_INCREMENTED; handle_HPDMA1.Init.DestInc = DMA_DINC_INCREMENTED; handle_HPDMA1.Init.SrcDataWidth = DMA_SRC_DATAWIDTH_HALFWORD; handle_HPDMA1.Init.DestDataWidth = DMA_DEST_DATAWIDTH_HALFWORD; handle_HPDMA1.Init.Priority = DMA_LOW_PRIORITY_HIGH_WEIGHT; handle_HPDMA1.Init.SrcBurstLength = 2; handle_HPDMA1.Init.DestBurstLength = 2; handle_HPDMA1.Init.TransferAllocatedPort = DMA_SRC_ALLOC
Could you share ST60A3H1 IBIS model?Due to ST60A3H1 include eUSB signal, we would like to simulate the eUSB signal integrity on our design layout.ThanksHank
Hi ST Team,I am facing an issue while building an OpenSTLinux project for STM32MP255.EnvironmentBoard: STM32MP255 OpenSTLinux: 5.0.8 Yocto Distribution: openstlinux-weston Ubuntu: 22.04 LTS Kernel: 6.8.0-124-generic pseudo version: 1.9.0+git pseudo SRCREV: 28dcefb809ce95db997811b5662f0b893b9923e0 ProblemThe build fails during:build-info-openstlinux.bb:do_packageThe failure occurs inside Yocto's standard perform_packagecopy() while executing:tar --exclude=./sysroot-only \-cf - \-C image \-p -S . |tar -xf - \-C packageThe error is:got *at() syscall for unknown directory, fd 4unknown base path for fd 4, path buildcouldn't allocate absolute path for 'build'tar: ./etc/build: Cannot open: Bad addresstar: Exiting with failure status due to previous errors Investigation PerformedI verified the following:1. RecipeThe build-info-openstlinux.bb recipe is unchanged and only creates the /etc directory.The /etc/build file is generated by image-buildinfo.bbclass.2. Generated fileVerified that:ima
"I recently bought an STM32F030C8T6 chip, but when I was programming it, I didn't enable the debug interface as Serial Wire. As a result, although the first programming was successful, I can no longer program it through the Serial Wire interface. How can I solve this problem?"
Hi, how do I configure launch.json to use hot plug?
I am working on STM32WL55 dual core in which the current consumption is as not as expected as according to the datasheet. It is hardcoded for high power only. and the current consumption is coming for +17dBm and +14dBm as expected which is 58mA and 45mA approax but when switching to the +20dBm and +22dBm it is getting capped at 68mA only. It is not going above 68mA at any way. I have hardcoded it to 22dBm but it is still getting capped to 68mA only. I want to do changes in the code in such a way that the current consumption changes. what are the possible reasons of it and what are the functions where the code modification can help in changing the current consumption. Is there that ST has capped it to +18dBm or +17dBM and will never work above it? void SUBGRF_SetTxParams( uint8_t paSelect, int8_t power, RadioRampTimes_t rampTime ){uint8_t buf[2];int32_t max_power;if (paSelect == RFO_LP){max_power = RBI_GetRFOMaxPowerConfig(RBI_RFO_LP_MAXPOWER);if (power > max_power){power = max_powe
I have a custom board using STM32MP131D integrated with ethernet PHY TI DP83867CR. I am using RGMII interface with a Magjack RJ45.I have been benchmarking the ethernet performance at 100Mbps using iperf3 with the custom board as the iperf client and my Linux test PC as the iperf server.When I run iperf in client mode on the custom board (DUT) in TCP, I see really bad TX performance:root@stm32mp131-sga:~# iperf3 -c 10.10.14.200Connecting to host 10.10.14.200, port 5201[ 5] local 10.10.14.102 port 35028 connected to 10.10.14.200 port 5201[ ID] Interval Transfer Bitrate Retr Cwnd[ 5] 0.00-1.00 sec 0.00 Bytes 0.00 bits/sec 3 1.41 KBytes[ 5] 1.00-2.00 sec 0.00 Bytes 0.00 bits/sec 2 1.41 KBytes[ 5] 2.00-3.00 sec 0.00 Bytes 0.00 bits/sec 1 1.41 KBytes[ 5] 3.00-4.00 sec 0.00 Bytes 0.00 bits/sec 1 1.41 KBytes[ 5] 4.00-5.00 sec 0.00 Bytes 0.00 bits/sec 1 1.41 KBytes[ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/s
@Pavel A. I am facing a similar issue. Cannot instal STLINK drivers on Windows 11 (STSW-LINK009 | Software - STMicroelectronics) Here is my system information: Any help would be greatly appretiated!
HiMost of you are using the HAL library, if you want to do something standard and if it works out of the box, what was generated, it speeds up your project. Sometimes it is not the case… so we need to adapt the HAL to make it work. Now the main issue, when we need to regenerate the project al the changes are gone and we need to change everything again by hand… Maybe this sound familiar to you?It this is the case how did you handle this? Patch file, list al the changes and do it again by hand?@ST, is it possible to support user code blocks added by the user and not only where CUBE decide to add. Or make it possible to generate / add code for some specific parts/ hardware? For example, I want to add or change UARTx, there is no need to update the SPI code…
Hello, I'm working on a project using the STM32F401RE board to perform real-time fault diagnosis on machinery.The board receives vibration data in real-time via a USB-type accelerometer (Digiducer 333D01), and a lightweight deep learning model running on the MCU determines whether the signal indicates a normal or faulty condition.All of this is running under FreeRTOS and must meet real-time constraints. The accelerometer is connected through a USB breakout board (YwRobot ELB050209), and the STM32 board is configured to operate as a USB Host with Audio Class support.The USB connection and device enumeration process (including descriptor parsing) have been completed successfully. Interestingly, the Digidecer 333D01 is recognized as a USB Audio Class device, specifically as a microphone-type interface.The device presents itself with an Audio Control interface and an Audio Streaming interface (Isochronous IN), similar to a standard USB microphone.Although the data represents vibration (acc
EnvironmentTouchGFX 4.26.1 (Engine + prebuilt library) LCD config: 8bpp, `LCD8bpp_ABGR2222`, 240x240 Reproduced on Windows simulator (MSVC), Linux simulator, and STM32U595 hardware. Same TouchGFX source across all three, so this is not platform-specific.SummaryWhen an ABGR2222 dynamic external bitmap is drawn with `LCD::drawPartialBitmap` and the source rect extends past the dirty (clip) rect on the Y axis, the clipping path writes the overhanging rows starting at the dirty rect's top (`dirtyRect.y`) instead of at the requested `screenY`. The result is a duplicated copy of those rows at the wrong vertical position.X-axis clipping is correct: `screenX` can be negative or off-screen with no issue. The defect is specific to vertical overhang. Trigger conditions (all must hold)Bitmap format `Bitmap::ABGR2222` (the other three 8bpp 2222 formats compile to identical code, so they are likely affected too) Bitmap registered with `Bitmap::dynamicBitmapCreateExternal` Drawn via `LCD::drawPartial
WebKit is now releasing a new upgrade for their WPE WebKit API so the web browser can run on the GPU instead of CPU.Here is what the WPE WebKit Dev Team is writing:In any case, try the new WPEPlatform API (https://wpewebkit.org/) instead of Cog, and that suggestion still stands. Cog is currently at the end of its lifetime and won't see more stable versions, as we are fully focused on this new API that will not only make integration much simpler but will also allow making the most of more modern features like dmabuf, which enables zero-copy buffer sharing both at the graphics and multimedia layers of WPE, therefore increasing performance, stability and smoothness.Now, while the new WPEPlatform API will be released as stable in September, it's still fairly mature and you can already try it out with ToT or with the latest unstable releases, as well with the latest stable release (2.52.3). See some links to the API docs below:https://wpewebkit.org/reference/unstablehttps://wpewebkit.org/re
Hello everyone,I'm a final-year Electrical and Electronics Engineering (EEE) student aspiring to build my career in the Electric Vehicle (EV) industry, particularly in areas such as Battery Management Systems (BMS), Power Electronics, Motor Control, Embedded Systems, and eventually R&D.I recently decided to learn the STM32 NUCLEO-F303RE as my primary development platform because I understand it is widely used for motor control, real-time embedded applications, and industrial systems.I am a complete beginner to STM32 and embedded systems (although I have basic C programming knowledge), and I'd like to learn it the right way rather than just following random tutorials.I'm looking for guidance on the following:What is the best learning roadmap from beginner to advanced for the STM32 NUCLEO-F303RE? In what order should I learn the peripherals (GPIO, Timers, PWM, ADC, UART, SPI, I2C, CAN, DMA, etc.)? Which official documents should I read first (User Manual, Datasheet, Reference Manual,
Both Micron and Samsung are putting LPDDR4 memories to EOF.What is the guaranty that STM32MP2 can support other affordable memories e.g LPDDR5?
Hi ,We are facing an RMII signal setup time violation on the RX side of the RTL8364.We have already discussed this issue with the Realtek team, and they have suggested verifying the STM controller side, as the timing issue may be originating there.Could you please review the issue and suggest a possible workaround or any recommended configuration changes on the STM controller side to resolve this setup time violation?For your reference, we have attached the schematics and waveform captures.Looking forward to your guidance. Thank you.
Factory flashing of the STM32MP135 will be part of some device testing (probably ICT) during production at an external manufacturer. So, SSP will play a part in this. Testing and flashing the device will be automated as much as possible with a custom app (GUI or CLI) running on a PC. This app will execute STM32CubeProgrammer_CLI with corresponding arguments in the background.As I understand it, once the whole SSP process has finished, it cannot be done on the same device again. I need a way to test the automation app numerous times before giving the whole package to the manufacturer. I didn't find a clear solution to this, and I don't want to buy many STM32MP135 development boards or HSM cards for it. For the HSM part: I read in the forum that the licence file can be extracted from the smart card and then use it with the STM32CubeProgrammer but I'm not 100% sure about that.So, my questions are:What is the recommended way to test flashing with SSP on a single device? Can a licence file
STM32CubeMX version 6.18.0.When generating “cmake/stm32cubemx/CMakeLists.txt” does not include source files from directory “Middlewares/ST/usbx/common/usbx_stm32_device_controllers”. My workaround is to add those sources in project CMakeLists.txt:# Set usbx_stm32_device_controllers code filesset(USBD_STM32_DEVICE_CONTROLLERS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Middlewares/ST/usbx/common/usbx_stm32_device_controllers)set(USBD_STM32_DEVICE_CONTROLLERS_SRCS ${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_callback.c ${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_endpoint_create.c ${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_endpoint_destroy.c ${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_endpoint_reset.c ${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_endpoint_stall.c ${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_endpoint_status.c ${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_frame_number_get.c ${USBD_STM32_DEVICE_CONTROLLERS_DIR}/ux_dcd_stm32_fu
Hello everyone, I’ve been working for a few weeks on a TouchGFX project using a MCU that is working with CubeMX2, so I used the documentation (Using TouchGFX with STM32CubeMX2 | TouchGFX Documentation) to setup my project, which is working.However I tried to add an SVG Image and then I got the “undefined reference to ‘touchgfx::VectorRenderer::getInstance()’” issue. Normally this issue can be resolved by enabling vector rendering in CubeMX, but because I’m on CubeMX2 it’s not possible in my case.Is there any way to enable vector rendering manually ? Also just to be sure it wasn’t already activated I tried to put a SVG image with the example project that I started with (the NUCLEO-C5A3ZG + RVA15MD project), and I got the same error.MCU used is STM32C552RET6.
Hello All i am making distance sensor using VL53L4ED I wrote code using VL53L4CD library and i found that my module is soldered with VL53L4ED , Can i run VL53L4ED project with VL53L4CD library? i compared ULD library and both seems almost similar although i doubt i might missing something, Regards
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.