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 working with an STM32C031 and have written bare-metal firmware based on the CubeMX-generated framework. When I compile in Debug mode, the firmware uses about 79% of the available flash. Switching to Release mode reduces this to around 45%, which is a big improvement.I’d like to further minimize code size while still retaining as much debugging capability as possible.A couple of questions if someone could advise:1. What techniques and/or compiler/linker options do you recommend?2. where and how do I set any such settings? I assume in CMakeLists.txt? but not sure.Thank you
Hello,I am developing via a CMake project in VSCode. My build environment got corrupted by trying to mv/rename firmware folders via git. Now i cannot build anymore.[ 1%] Building C object cmake/stm32cubemx/CMakeFiles/FreeRTOS.dir/__/__/Middlewares/Third_Party/FreeRTOS/Source/event_groups.c.o /home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h: Assembler messages: /home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:195: Error: operand type mismatch for `mov' /home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:196: Error: no such instruction: `msr basepri,%eax' /home/jonas/repos/aware01/firmware2_1/cmake/stm32cubemx/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h:197: Error: no such instruction: `isb' /home/j
Hello,I'm encountering a problem with the STM32G0B0 (also applicable to the STM32G0B1RE) when using flash memory in single bank mode.My application requires single bank mode, but when I use the erase function to erase pages (from both bank 1 and bank 2), it erases the wrong page.using the "FLASH_EraseProgram" example provided on the STM32CubeFw with the updates below:Define bank 2 user pages address in main.h #define ADDR_FLASH_PAGE_128 ((uint32_t)0x08040000) /* Base @ of Page 128, 2 Kbytes */ #define ADDR_FLASH_PAGE_129 ((uint32_t)0x08040800) /* Base @ of Page 129, 2 Kbytes */ #define ADDR_FLASH_PAGE_130 ((uint32_t)0x08041000) /* Base @ of Page 130, 2 Kbytes */ #define ADDR_FLASH_PAGE_131 ((uint32_t)0x08041800) /* Base @ of Page 131, 2 Kbytes */ Update "FLASH_USER_START_ADDR" and "FLASH_USER_END_ADDR" #define FLASH_USER_START_ADDR ADDR_FLASH_PAGE_126 /* Start @ of user Flash area */ #define FLASH_USER_END_ADDR (ADDR_FLASH_PAGE_131 + FLASH_PAGE_SIZE - 1) /* End @ of user
Hello everybody. I'm trying to make LWIP work on NUCLEO-H723ZG board, but I can't even get a ping response so far, even with static (DHCP disabled) network configuration. The project uses FreeRTOS (CMSIS API v2) and is created with MX tool. It seems to be an ARP problem, since there is no ICMP request from my PC when I execute the ping command (checked with Wireshark). Did anyone face similar issues using an environment like this? Attached is the output generated by LWIP, as well as the project configuration file and linker script. Any help will be greatly appreciated. Thank you!
Hello Team,I am using the STUSB4500 USB Power Delivery controller in my design.I have designed my board by strictly following the reference schematic provided in the STUSB4500 datasheet. However, the board is not working as expected.I have already tried the following:Tested multiple firmware / configuration codesVerified all register values according to the datasheetChecked I²C communication and configuration writesDespite this, the device does not negotiate higher PD voltages.Issue Details:VBUS_READY always remains falseOnly default 5V is available on VBUSHigher voltages (9V / 12V / 15V, etc.) are not being triggeredI want to trigger a higher PD voltage, but the negotiation does not complete successfully.Could you please help me understand:Possible reasons why VBUS_READY stays falseAny common hardware/firmware or configuration mistakes to checkAdditional requirements for enabling higher PD voltage negotiationAny guidance or suggestions would be highly appreciated.Thank you for your su
Hi,I’m working with a custom PCB based on an STM32H743BI and an external MT25TL01G memory device.To manage the data I’m using FileX + LevelX. I’m able to create the media, create directories, create files, write to them, and read them without issues. However, I’m running into a problem when trying to read files after a reset.After formatting the media with:fx_media_format(&pFileManagerDesc->fxFileMedia, fx_stm32_levelx_nor_driver, (VOID *)LX_NOR_QSPI_DRIVER_ID, (UCHAR *) mediaBuffer, sizeof(mediaBuffer), QSPI_VOLUME_NAME, QSPI_NUMBER_OF_FATS, 32, QSPI_HIDDEN_SECTORS, ((LX_STM32_QSPI_FLASH_SIZE - LX_STM32_QSPI_SECTOR_SIZE) / QSPI_SECTOR_SIZE), QSPI_SECTOR_SIZE, 8, 1, 1); I open the media and try to read from it, but I always the error FX_NO_FOUND trying to open the file.This doesn’t happen if I create a file first. I’m not sure if I’m missing a step before reading the media after formatting.I’m not performing any erase operation because I have: LX_S
Hello,unlike the STM32MP157F-DK2 the STM32MP257F-DK is not equipped with an Touch/LCD.Is it possible to use an identical/similar LCD with the STM32MP257F-DK (that means: are the appropriate connections on the board)?Marc
Hi,I am using the steval-esc001v1 and the A2212 1000 KV BLDC Motor with the motor parameters are, The ESC input range is 1060–1860 µs. I arm the ESC at 1000 µs and then increase the input to 1062 µs, at which point the motor starts running. After startup, the RPM and current gradually increase without any change in the input signal. Within few seconds it reaches 4000 rpm (approx), then motor suddenly jerks and then settles at a minimum speed of around 1000 RPM. Sometimes, after this jerk, the motor stops completely.I would appreciate help with maintaining the motor speed at 1000 RPM after startup.Additionally, the motor turns 1 rotation during the power-up of the STEVAL-ESC001V1. Is there a way to prevent this initial turn at power-up?Best regards,Santhosh.
Heyho, until now I have only used the STM32 MCUs, from L01x, to G4, up to H7 (single core), always bare-metal. We're now thinking about scaling up to some MPU, for more processing power, and also for some faster interfaces (mainly gigabit ethernet). From my first investigations about the MPUs, I'm not sure if we can "afford" this on the personnel side, due to the complexity and very probably the necessity to use an OS (real-time is a must, at least "real" enough for multi-channel low latency audio). We have an overworked software department, and no "embedded SW" people, and I'm more of a hardware designer who can do some basic C stuff. So I'd like to know: which OSs are mostly used on the MPUs, or which are you using how's your experience with these what's the learning curve for newbees anybody working bare-metal with the MPUs, and how's that Thanks in advance!
Hello!I'm trying out the new STM32CubeIDE extensions for VSCode and have generated a CMake project using CubeMX. I'm unable to setup my project as I get this error:I don't know what JSON file it is referring to as there are none in my project except the auto-generated CMakePresets.json, but I don't think that's the issue since I get the same error even if I remove that file.I have tried to re-install the extensions and restart VSCode with no luck.
Hi!I’m asking for your recommendations :I would like to integrate the DCMIPP continuous example to add a photo capture and recording feature to the SD card through a button.I have already configured the SD card using CubeMX, and now I want to integrate the DCMIPP continuous example and then continue adding my own contributions.Is there another example that would be more appropriate to use as a base?Because I prefer to use CubeMX, but with the DCMIPP example I find myself having to manually add all the libraries to my project < as it comes without cubemx>, and at the moment I see that some libraries are not recognized despite that I added them with all the paths.Do you have any suggestions for what I want to do?Thanks in advance
I'm using "STM32CubeIDE for Visual Studio Code" on Ubuntu 22.04. I have a situation where I'm making a driver for a chip where it very much benefits me to make the driver into a class and instantiate several instances of it.Generally speaking, what are the best practices here, if I still want to use the CubeMX code generation?At the moment, here's what I'm doing:Add `CXX` to the languages in the `./CMakeLists.txt` file. Also add the driver.cpp file to the target_sources() directive in `./CmakeLists.txt`. Change the file extension of main.c to main.cppChange the ./cmake/stm32cubemx/CMakeLists.txt to reference the main.cpp fileI was planning on automating this with a pre and post script which would do a `mv main.cpp main.c` and `mv main.c main.cpp`. And then also changing the generated CMakeLists.txt to reference the main.cpp.However, it seems that a simple bash script isn't being run. Is there a less hacky way to do this?Does the Before Code Generation and Af
Linux kernel, Yocto project, etc. each has their LTS strategy, does ST has similar plan for its OpenSTLinux?
Hello everyone, I have a Python app that needs to communicate with my custom STM32L432KC board. Before ordering my prototype board, I was wondering if it is possible to do it only via USB with the pins PA11 and PA12, or if I need a USB‑UART chip like the CP2101‑GM? Thanks
Hi everyone,I am working on a TouchGFX project using the STM32H750B-DK Discovery Board. The project works perfectly fine (UI is shown, everything runs smooth).The Issue:As soon as I enable a Timer in CubeMX (e.g., TIM15 or TIM3 in Input Capture mode) and regenerate the code, the display stays white after flashing. The application seems to crash or hang completely during initialization.Observation:Even if I disable the Timer in CubeMX again and regenerate the code, the display remains white.It seems that the first modification permanently breaks the project configuration (likely LTDC, QSPI, or MPU settings), and I have to restore a backup to get it working again.Has anyone experienced this behavior where simply touching the configuration breaks the board initialization permanently?Thanks for any help!
Hello everyone, I'm seeking advice on video playback implementation using TouchGFX 4.25 with a Riverdi RVT121HVSFWN00 display (12.1" LCD with STM32H7 MCU). **Current working setup:**- TouchGFX version: 4.25- Display: Riverdi RVT121HVSFWN00- Current video configuration: 480x272 resolution- FFmpeg command that works:ffmpeg -i video2.mp4 -s 480x272 -vcodec mjpeg -q:v 1 -pix_fmt yuv420p -color_range 1 -strict -1 -an output.aviThis works perfectly with the Video widget alongside other UI elements (backgrounds, buttons, etc.) When I try to increase the video resolution to 800x800 pixels, I only get a black screen. No video is displayed. **What I've tried:**1. Modified FFmpeg command for 800x800:ffmpeg -i input.mp4 -vf "scale=800:800:force_original_aspect_ratio=decrease,pad=800:800:(ow-iw)/2:(oh-ih)/2" \-c:v libxvid -qscale:v 5 -c:a libmp3lame -b:a 128k output.avi```2. Also tried various combinations with `mjpeg` codec and different pixel formats **My questions:**1. Are th
I installed stsw-link009 on my pc so I could use the STLinkv3. The PC did not see the STLink-v3. I then installed STM32Cubeprogrammer thinking that would fix the stlink driver issue but when I look under devices USB in the device manager I can not see the stlinkv3 anywhere and the STM32CubeProgrammer doesn't see it either. The same stlinkv3 works on other pcs. Since I can't see it on my pc I can't right click it to uninstall the driver so I am not sure what to do next.
Hi All,Im trying to play a video on my custom device board based on the STM32H750B-DK paired with 128MB SDRAM hooked-up to an 1024x600px LCD.When i preload a video into the videoWidget in touchgfx designer and flash it to the board the video plays fine and smooth at 25FPS.Im using hardware decoding, double buffered.Now id like to playback some dynamic content that i will load into the SDRAM that placed at the base of the SDRAM (32-bit aligned).MPU is setup.i set the video widget to the data in SDRAM video.setVideoData(bufferSDRAM, bufferSDRMALenght);But when I start the video player I do see the video but the image is jittering around and not stable.its like every second (guessing here, could be random) frame is slightly offset a bit down and to the right. Ive also tried a chunked data reader using a custom reader object which serves chunks by copying parts from SDRAM to a smaller buffer in internal ram.This created a smooth playback without the jitter but the video playback
Hello, I am working on a project using the STM32WL55JC1 board. In my base application, UART1 and some I2C peripherals are already configured in the default project structure generated by STM32CubeIDE. Now I need to add support for both LoRaWAN and proprietary LoRa in the same project. For LoRaWAN, I am using the example provided in the STM32WL firmware package:STM32Cube MCU Package for STM32WL series v1.0.0 For proprietary LoRa, I followed the Digi-Key forum guide:Using the low-level Sub-GHz radio driver for STM32WL series. My requirement is: The device should normally operate in LoRaWAN mode. When specific data is received through UART, the MCU should switch to proprietary LoRa mode. After handling the proprietary communication, it should return to LoRaWAN mode. I understand that both LoRaWAN and proprietary LoRa cannot run simultaneously because they share the same radio. However, I am confused about: How to properly merge the project structures. Where to pl
Hi, I am on stm32u585 IOT dev board for low power modes am using RTC wakeup the sleep and stop 1,2 and 3 are working fine but standby and shutdown is not working ? my code void sleep(int mode, int seconds ) { if (seconds <= 0) return; HAL_RTCEx_DeactivateWakeUpTimer(&hrtc); __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&hrtc, RTC_FLAG_WUTF); uint32_t wakeup_counter (uint32_t)(seconds 2048); HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, wakeup_counter, RTC_WAKEUPCLOCK_RTCCLK_DIV16, 0); switch (mode) { case 0: // Sleep HAL_SuspendTick(); HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); HAL_ResumeTick(); break; case 1: // Stop0 HAL_SuspendTick(); HAL_PWREx_EnterSTOP1Mode(PWR_STOPENTRY_WFI); break; case 2: // Stop1 HAL_SuspendTick(); HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI); break; case 3: // Stop2 HAL_SuspendTick(); HAL_PWREx_EnterSTOP3Mode(PWR_STOPENTRY_WFI); break; case 4: // Standby __HAL_PWR_CLEAR_FLAG(PWR_WAKEUP_ALL_
Post Edited by ST moderator to apply source code formatting Hi ST Community,I am using STm32U575VGTX. I configure RTC as default, enable RTC non-secure interrupt, activate alarm A trigger each 10 seconds as below: ******************************************* static void MX_RTC_Init(void) { /* USER CODE BEGIN RTC_Init 0 */ /* USER CODE END RTC_Init 0 */ RTC_PrivilegeStateTypeDef privilegeState = {0}; RTC_TimeTypeDef sTime = {0}; RTC_DateTypeDef sDate = {0}; RTC_AlarmTypeDef sAlarm = {0}; /* USER CODE BEGIN RTC_Init 1 */ /* USER CODE END RTC_Init 1 */ /** Initialize RTC Only */ hrtc.Instance = RTC; hrtc.Init.HourFormat = RTC_HOURFORMAT_24; hrtc.Init.AsynchPrediv = 127; hrtc.Init.SynchPrediv = 255; hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE; hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; hrtc.Init.OutPutPullUp = RTC_OUTPUT_PULLUP_NONE; hrtc.Init.BinMode =
Hi all.I tried to upgrade my onboard ST-Link V3 (STM32U5G9j-DK2).I use STM32CubeProgrammer for MAC V2.21.The upgrade process breaks with this message:"ST-Link device lost when exiting upgrade mode"In this situationthe COM-LED red is ON,the COM-LED yellow is BLINKING,the PWR-LED is OFF.How can I reactivate the onboard ST-LINK V3 in this situation?Kind regardsT3-Uwe
Respected ST Team, We are planning to purchase the STM32H7B3I-EVAL evaluation board and would like to confirm the accessories included in the standard package before placing the order. Order link is https://www.st.com/en/evaluation-tools/stm32h7b3i-eval.html?ecmp=tt9470_gl_link_feb2019&rt=db&id=DB4091#documentation Kindly confirm the following: Does the board come with a USB programming cable (for the onboard STLINK-V3E) ? If not please share the specification for the same. Is any external power adapter included with the kit? If not please share the specification for the same. Also share the different combinations to power the board. Please share the list of accessories included in the package. Are there any mandatory additional accessories required to use complete feature of the board. Please share diffrent flashing methods avaible on this evaluation board. We plan to use this board for development and training purposes, so confirmation of the included items will
Hello STM Community,I'm encountering persistent UART Overrun (ORE) errors on the STM32H573RIT6 when using code generated from a fresh STM32CubeMX project (.ioc file).Setup and Reproduction:Created new STM32CubeMX project for STM32H573RIT6Generated code and tested UART reception with:HAL_UART_Receive_IT()HAL_UARTEx_ReceiveToIdle_IT()Result: Continuous ORE errors in both interrupt and IDLE modesKey Observations:Issue persists even at:Reduced system clock frequenciesLower baud ratesWith non-blocking ISR implementationDMA Mode Works Perfectly:HAL_UART_Receive_DMA()HAL_UARTEx_ReceiveToIdle_DMA()No ORE errors observedComparative Testing:Regenerated multiple fresh CubeMX projects for STM32H573RIT6 → ORE persistsUsed older .ioc file with UART configuration → No ORECreated new CubeMX project for NUCLEO-G071RB → UART interrupt/IDLE works perfectly, no OREQuestion:Could this indicate a CubeMX configuration issue specific to STM32H573RIT6 UART peripheral initialization?Any insights from ST en
Hi,on STM32F429I-DISC the timer TIM2 kicks ADC1 and the data goes to buffer via DMA. APB1 clock for TIM2 is 36MHz, reload value for TIM2 is 143, I exspect 36e6/144= 250k samples/second.I get 8.3e6 samples in 123 seconds which results in 67.4ks/s. This is factor 3.7 low, not even an integer ratio.There is a clock issue for the 48MHz, see enclosed .ioc What do I miss?THX CheersDetlef
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.