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 trying to get the LVGL library running on the STM32H7S78. The simple DMA2D variant (LV_USE_DRAW_DMA2D) with 16-bit color depth works perfectly, but it's not very performant. Therefore, I'm trying to get the LV_USE_NEMA_GFX variant running instead. The basis is LVGL version V9.3, which already runs on an STM32U5 with NEMA_GFX. However, the problem is that it always crashes during initialization in lv_draw_nema_gfx_init(). lv_draw_nema_gfx_unit_t * draw_nema_gfx_unit = lv_draw_create_unit(sizeof(lv_draw_nema_gfx_unit_t)); /*Initiallize NemaGFX*/ nema_init(); draw_nema_gfx_unit->base_unit.dispatch_cb = nema_gfx_dispatch; draw_nema_gfx_unit->base_unit.evaluate_cb = nema_gfx_evaluate; draw_nema_gfx_unit->base_unit.delete_cb = nema_gfx_delete; draw_nema_gfx_unit->base_unit.name = "NEMA_GFX"; /*Create GPU Command List*/ draw_nema_gfx_unit->cl = nema_cl_create(); /*Bind Command List*/ nema_cl_bind_circular(&(draw_nema_gfx_unit->cl));
Hello,I am currently designing a custom PCB with the STM32WLE5CC (QFN package) targeting +22 dBm in the 868 MHz frequency band.I have been following the reference design based on the MB1720 board, which is specifically described as being for +22 dBm at 868 MHz. However, I don’t fully understand why, in this high-power configuration, the solder bridge for RFO_LP is closed while RFO_HP is left open.Could you please clarify the reason for this choice in the reference design?Thank you in advance.
Hi : I want to use MTP & HID simultaneously in stm32f103RE, but there is not CompositeBuilder and MTP in stm32f1 STM32_USB_Device_Library, so can I use stm32f4 STM32_USB_Device_Library directly? Or is there any other solution to use MTP & HID simultaneously in stm32f103RE?
Issue SummaryOn STM32N6570-DK, enabling ANY peripheral together with ThreadX or FreeRTOS causes an immediate HardFault, even in a minimal CubeMX-generated project with no user code.This includes peripherals such as:DCMIPPLTDCSDMMCUSBUARTI2CSPIGPIO with interruptsDMAAnything beyond simple GPIO outputThe issue is NOT limited to the camera/display pipeline.EnvironmentBoard: STM32N6570-DKIDE: STM32CubeIDE (latest)CubeMX: latest versionFirmware: STM32N6 HAL/BSP (latest)Security Modes Tested:FSBL + Application (secure/non-secure)Non-secure Application only (no FSBL)Both show the same problem.What Works✔ RTOS disabled → All peripherals work✔ Camera + display pipeline works bare-metal✔ GPIO output works with RTOS (LED blink, simple logic)What Fails:cross_mark:ThreadX + ANY peripheral init → HardFault:cross_mark:FreeRTOS + ANY peripheral init → HardFault:cross_mark:Even minimal projects with zero user code crash before scheduler start:cross_mark:Commenting a peripheral moves the crash to
Device detailsMPU: STM32H753AII6Connection:Probe: J-Link V11.00 / SW version V7.98c STM toolset: STM32 Cube Programmer / Trusted Package Creator v2.20.0SFI programming fails with error:Error: SECURITY State FailError: Invalid state after SFI install !Error: RSS internal system error or License is invalid ! I also tried against the STM32H757I-EVAL board, which has a compatible CPU, with the same result.-----HSM provisioningHSM provisioningFor Personalization Data I chose the group with the H753 in it, and from the 4 options in dropdown list the combination of "SFI" and Device ID "45002001" which is how the STM32H753 identifies.SFI creationFor the simplified example, there is only one section of code starting from default address 0x08000000.Settings for RAM size and continuation token are default, and seem to make sense.Option bytes are, except for RDP level = 0xBB (level 1), identical to the defaults after mass erase.SFI creationSFI flashingSFI flashingComplete log:15:25:
Dear experts,I'm reading RMs for STM32 models with dual flash banks (F4, H7...) and don't quite understand how to use bank switching.Take the firmware update scenario when old firmware is in bank1 and new is programmed to bank2. So it programs some option byte to switch banks and next time should boot from bank2.If the new version is bad, I'd like to boot automatically from bank1. But how? the option byte is written. Is there a way to control bank switch by external pin? On some systems that I've seen before we did it in the following way: we made a simple watchdog (CPLD or whatever) that automatically toggles the boot selector pin. If the CPU does not touch the watchdog in defined time since reset, it will switch the selector pin and reset again.So if the new firmware fails to boot, the system will reboot to the old firmware.I'd like to implement the same on STM32, with external widget if needed, but better without it.On the other hand, for H7 you can define alternative start addresse
cubeide 2.0.0 start touchGFX project, cross compiler prefix: ? cross compiler path: ? MX be removed, how to setup MCU component? first start from MX?
Heyho,do all SAIs in all MCUs offer the SPDIF output feature?CubeMx and online MCU selectors do not show this info, no time to check 20 more datasheets.For the few STM32 I know and worked or played with (G4, F7, H7) the answer is yes.Merci!
Hello,i am Interfacing a module (Radiomaster Ranger Micro) to my MCU (STM32F411) using the UART Interface, but this module has only one Hard-Pin for both TX and RX.Sending packages from the MCU to the module is working already well.Now i want to receive packages from it.I searched the net for a solution and readed that i may use a gate switch (NAND, OR, …) or even MUX, DEMUX.I want to write here and ask for some advices which is the better.I do not want that the MCU heat it self so i want to connect only TX to the module for sending and only RX to the module when receiving.Thanks in advance.
Hello Forum,I'm trying to get a simple application, running on a NUCLEO-U5A5ZJ-Q dev board, to jump to the system bootloader from FreeRTOS. I've also got AN2606 to hand (application note for the STM bootloader) and RM0456 (STM32 U5 reference manual). I have been following this guide. How to jump to system bootloader from application ... - STMicroelectronics CommunityAccording to the guide and reference manuals the bootloader base address on my MCU (STM32U5A5) is at 0x0BF90000. The 32 bit word at that address is the stack location, and the 32bit work at 0x0BF90004 is the entry point for the bootloader. In my setup values are read as:0x200034E8 - this is valid memory (stack)0x0BF98C39 - this is unexpected as lots of the internet says this should be 0x0BF99EFE but I'm guessing this is actually OK.I currently have this code:#define BOOTLOADER_BASE 0x0BF90000 typedef struct boot_vectable { uint32_t Initial_SP; void (*Reset_Handler)(void); } boot_vectable_t; void Ju
Do all the STM32WL series MCUs support STSAFE ? If yes, how it can be done?
Hello,Hello, in our project we are using an STM32N6 MCU and an external flash from ISSI with this MCU. Datasheet of the flash's link in the below.https://www.issi.com/WW/pdf/25LX-WX032-064.pdfDuring debugging, we read the flash using standard commands, and the values we read appear as shown in the image.Everything works fine up to the code marked with the red box;however, when it reaches that point, we get an error. If we comment out the code marked with the red box, it works, but when we try to read using the cube programmer, we get a "read fail" error. What could be the issue?Also, is the ExtMem driver supports 1S-8D-8D?Best regards,Egemen Aksoy
Hi, I'm having really a hard time setting up my ADCs to work with DMA using the STM32F429I-DISC1. My objective: have a clock source from a Timer at a given frequency as trigger to the ADCs, each ADC would then read a specific pin (let's say ADC1-> pin_x; ADC2->pin_y and ADC3->pin_z). Since nothing is working regardless of the configuration I set, I'm trying with very big time intervals to avoid busy bus and so on. So I've set the TIMER8 to have a period of 5s and tested it individually with the interrupt enabled to make sure it is triggering and having the correct interval. Now the idea is to trigger the ADCs to perform a few conversions of the pins in order to do some oversampling. Here is my ADCs configurations: The ADC3 is identical to ADC2. Timer8 Trigger Event Selection is set to "Update Event". Here is my main function: int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configurati
Hi All,There is any problem if VBAT powered before VDD? (VBAT is another supply that feeds from Battery with LDO ) I deep dive all the datasheet and didn't find any reminder about it.
Hi everyone,I was exploring the VENC_SDCard example from STM32CubeN6 v1.2.0, and I was successfully able to record and store video to the SD card after making a few necessary changes mentioned here.Now, I want to record and store the video in grayscale format. After modifying the MX_DCMIPP_Init() function in main.c and the BSP_LCD_InitEx() function in stm32n6570_discovery_led.c, I can correctly see the grayscale video output on the display.However, when I try to record this grayscale stream, the resulting video is distorted.(Attached it)Upon debugging, I suspect the issue originates from the following line in encoder_prepare():preproc_cfg.inputType = H264ENC_RGB565;The inputType is still set to RGB, and after checking the h264encapi.h header file, I found the following enum for H264EncPictureType on line 159: typedef enum { H264ENC_YUV420_PLANAR = 0, /**< YYYY... UUUU... VVVV... */ H264ENC_YUV420_SEMIPLANAR, /**< YYYY... UVUVUV... */ H264ENC_YUV420_SEMIPLANAR_VU, /
I am not able to discover the error It should work but i do not have any pulse on PB6 CPU STM332F103C8T6 ide PlatformIO #include <Arduino.h> void setup() { RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // Enable GPIOB clock RCC->APB1ENR |= RCC_APB1ENR_TIM4EN; // Enable TIM4 clock RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; // Enable Alternate Function clock GPIOB->CRL |= (0b0011 << (4 * 6)); // Set PB6 as Alternate function output Push-pull (TIM4_CH1) TIM4->CR1 = TIM_CR1_CEN |TIM_CR1_ARPE; // Enable counter and auto-reload preload TIM4->CR2 = 0; TIM4->SMCR = 0; // No slave mode TIM4->DIER = 0; // No interrupts TIM4->EGR = 0; // No event generation TIM4->CCMR1 = (0b110 << 4 ) | TIM_CCMR1_OC1PE; // PWM mode 1, preload enable TIM4->CCMR2 = 0; TIM4->CCER = TIM_CCER_CC1E ; // Enable output on channel 1 TIM4->PSC = 71; // Set prescaler to have 1MHz timer
I use the STEVAL-MKBOXPRO and I updated the board with the data recorder thanks to the expert view. I added the bluetooth stream output and I can see all the sensors on the IOs application. But I don't record any data on the SD card. The file is created and I see the header with all the sensors, but there is no data. The defaultAppPro is available on the card. I use the card provided by ST with the eval kit. What is wrong in my set up if I cannot record sensor data?
In the setupscreen function:Screen1ViewBase::setupScreen(); digitalHours = digitalClock1.getCurrentHour(); digitalMinutes = digitalClock1.getCurrentMinute(); digitalSeconds = digitalClock1.getCurrentSecond();and in the handletickeventScreen1View::tickCounter++; if (tickCounter % 60 == 0) { if (++digitalSeconds >= 60) { digitalSeconds = 0; if (++digitalMinutes >= 60) { digitalMinutes = 0; if (++digitalHours >= 24) { digitalHours = 0; } } } // Update the clocks digitalClock1.setTime24Hour(digitalHours, digitalMinutes, digitalSeconds);But as shown below the time is the initial value (current time was 22:47) how can we fix it.
one box in the screen, then create a button on box, meant to change the color of box, when button pressed; simulator -> OK; but download to board, running denormal , when button pressed, finger off, button not release, still pressed state, why? (use STM32F429I_DISCO BOARD CUBEIDE)
Reply to you How to fix SDIO error HAL_SD_ERROR_RX_OVERRUN? - STMicroelectronics Community SDIO data region should be AXI SRAM.
Respected Sir/ Madam, AS i'm using LORA-E5(stm32wle5jc) module communicating point to point Radio Frequency and AT Command also. We are config SubGHz for Radio Send and Receive Functions in Loop Mode . No Response received from this. By using AT command we need to flash any Binary Files? How to Communicate P2P Two Lora-E5 module. Thanks,
Hi techs, I have a problem with the LoRa configuration with the LoRa-E5 Development Kit. How to do the Pin configuration for the LoRa point to point communication. I have tried multiple ways to do but the communication is not happening, and I also tried the PA4 = 0 and PA5 = 1 pins are in Tx mode. I have used the CubeMX for HAL code generation. Can anyone tell how to do?
Hi Team,As we are going to use RAM – IC CY62136EV30 (TSOP-44) in our new project with ST micro STM32F407ZG (LQFP-144).Do we need any impedance matching for 6-layer board?Can you please suggest the same. Crystal frequency we taken 16MHz for the MCU.Thanks.Regards,Ashutosh
System OverviewHardware ConfigurationMicrocontroller: STM32H7S3L8H6Memory ArchitectureXSPI1 (Flash, MX25UW25645GXDI00): 32MB, accessed via GPIOP/GPIOOClock: PLL2S source, Prescaler = 3flash_xspi_handle.Instance = config->instance; flash_xspi_handle.Init.FifoThresholdByte = 1; flash_xspi_handle.Init.MemoryMode = HAL_XSPI_SINGLE_MEM; flash_xspi_handle.Init.MemoryType = HAL_XSPI_MEMTYPE_MACRONIX; flash_xspi_handle.Init.MemorySize = HAL_XSPI_SIZE_256MB; flash_xspi_handle.Init.ChipSelectHighTimeCycle = 2; flash_xspi_handle.Init.FreeRunningClock = HAL_XSPI_FREERUNCLK_DISABLE; flash_xspi_handle.Init.ClockMode = HAL_XSPI_CLOCK_MODE_0; flash_xspi_handle.Init.WrapSize = HAL_XSPI_WRAP_NOT_SUPPORTED; flash_xspi_handle.Init.ClockPrescaler = 3; flash_xspi_handle.Init.SampleShifting = HAL_XSPI_SAMPLE_SHIFT_NONE; flash_xspi_handle.Init.DelayHoldQuarterCycle = HAL_XSPI_DHQC_ENABLE; flash_xspi_handle.Init.ChipSelectBoundary = HAL_XSPI_BONDARYOF_NONE; flash_xspi_handle.Init.MaxTran = 0; flash_xsp
Hello, Is it possible someone to help how to generate 6 PWM signals with STM32H753ZI. They should be diphase on 60 degrees, im trying to reach 50 khz on each output at least. How to do it, please help me.Thank you in advance.Best Regards,
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.