Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi,I have a problem with my custom container. I made a custom keyboard container in my project (4.26.1 compile is ok). I would like use this in another project.I exported this container which works.In the another project i import the widget, but compiler get unexpected error.What is the problem with widget?Thank you!These are the designer logs:2026-06-19 09:15:01,186 [1] ERROR TouchGFXDesigner.App: Object reference not set to an instance of an object.System.NullReferenceException: Object reference not set to an instance of an object. at TouchGFXDomainModel.LoadSave.Serial.ToSerial.Convert(TriggerCustom t) at TouchGFXDomainModel.LoadSave.Serial.ToSerial.Convert(Interaction i) at System.Linq.Enumerable.IListSelectIterator`2.ToList() at TouchGFXDomainModel.LoadSave.Serial.ToSerial.Convert(CustomContainerDefinition c) at System.Linq.Enumerable.IListSelectIterator`2.ToList() at TouchGFXDomainModel.LoadSave.Serial.ToSerial.Convert(Application a) at TouchGFXDomainModel.LoadSave.
Hello STM32 Community,I am developing a custom board based on the STM32F302R8T6 MCU. My schematic is largely derived from the MB1136 evaluation board reference design, and I would appreciate a review from experienced STM32 users before PCB fabrication.I would like feedback on the following areas:Power Supply Design VDD, VDDA, VBAT, VSS, and VSSA connections Decoupling capacitor placement and values Analog supply filtering Clock Circuit Main crystal oscillator connections 32.768 kHz RTC crystal circuit Load capacitor values and recommendations Boot and Reset Circuit BOOT0 configuration NRST pull-up and reset button circuit Any missing protection or filtering components Programming and Debugging SWD interface (SWDIO, SWCLK, NRST, SWO) Compatibility with ST-LINK Ability to program and debug reliably GPIO Connections Review of user button, status LEDs, buzzer, and external interfaces Any pins that should not be used for GPIO due to boot/debug functions General Design Review A
Hello. I’m facing strange issue in my design with STM32U575RGT6, revision “U”.Finally I discovered what is going on, but I don’t have ideas how to fix this.I’m using electronic switch to power ON and OFF the device:VBATT is 4.2V Li-Ion battery.One half of BAV70 diode is controlled by manual SWITCH (to power ON), second one by IO pin from uC (to maintain ON, and to OFF).Problem is that my program often hangs up in this function (I added LED blinks inside): if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) { while (1) { HAL_GPIO_WritePin(POWER_ON_GPIO_Port, POWER_ON_Pin, GPIO_PIN_SET); HAL_Delay(100); HAL_GPIO_WritePin(POWER_ON_GPIO_Port, POWER_ON_Pin, GPIO_PIN_RESET); HAL_Delay(1000); } Error_Handler(); }Voltage on VCAP pins is 0.9 V, and often freezes in this level. Rarely steps up to 1.2V and program normally continues.I finally discovered that is caused by slow rising of VDD voltage. This is from my electronic switch:I can bypass the
I read a couple of topics that discussed having to use the external xtal to drive the 48 Mhz as opposed to HSI48. When I run cube mx, the clock mux is greyed out and I cannot change the clock source.Am I chasing the right issue here and if so, how do I ungrey the clock mux?My IOC file is attached.
Hi, Can I Migrate a project from IAR to Cube IDE, It also Has third party Libraries Like, Threadx.
Hello,I am trying to obtain the old STM32CubeExpansion_LRWAN_V2.0.0 package (I-CUBE-LRWAN v2.0.0), but I can only find the current versions on the ST website.I specifically need version 2.0.0 for compatibility with an existing project based on the original LoRaWAN stack provided by ST.I have already checked:The current I-CUBE-LRWAN page on st.com STM32Cube repositories and mirrors on GitHub Archived documentation and release notesUnfortunately, I have not been able to locate the original archive (STM32CubeExpansion_LRWAN_V2.0.0.zip).Does anyone know:Where this version can still be downloaded? Whether ST keeps an archive of legacy expansion packages? If there is an official replacement package fully compatible with v2.0.0?Any help or archived download link would be greatly appreciated.Thank you.
Hi all, we have developed a video capture application and are field-testing this right now. In order to optimize perceptual quality, we are tuning the quality parameters to find a good trade-off.I saw in the h263encapi.h some features mentioned that are interesting to our application but could not find out if the VENC hardware actually supports it, likeRegion of interest cyclic intra refresh Video stabilization (although I fear that memory bandwidth is a limit here)I have read the Hantro Software Integration Guide in the github repository but that does not go into detail on what is available on the STM32N6.It seems that there has been an earlier discussion in this topic mentioning an Internal ticket number: 209269Could we have a feature map on what the IP block actually supports and the related software documentation?Thanks a lot Simon
Hello Team,We are developing a custom board based on the STM32N657 MCU. Kindly suggest a method to program the external flash using both SWD and USB1 interfaces. Additionally, please provide the required configuration for the BOOT0 and BOOT1 pins.Thanks
Good morning everyone,I need to drive an external pump using DAC out pheriperal.I am working with an STM32H562ZI microcontroller and have followed the guide available at the following link: Getting started with DACBelow is my current configuration:/** * @brief DAC1 Initialization Function * @param None * @retval None */static void MX_DAC1_Init(void){ /* USER CODE BEGIN DAC1_Init 0 */ /* USER CODE END DAC1_Init 0 */ DAC_ChannelConfTypeDef sConfig = {0}; /* USER CODE BEGIN DAC1_Init 1 */ /* USER CODE END DAC1_Init 1 */ /** DAC Initialization */ hdac1.Instance = DAC1; if (HAL_DAC_Init(&hdac1) != HAL_OK) { Error_Handler(); } /** DAC channel OUT1 config */ sConfig.DAC_HighFrequency = DAC_HIGH_FREQUENCY_INTERFACE_MODE_ABOVE_80MHZ; sConfig.DAC_DMADoubleDataMode = DISABLE; sConfig.DAC_SignedFormat = DISABLE; sConfig.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE; sConfig.DAC_Trigger = DAC_TRIGGER_NONE; sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE; sConfig.DA
Hi,We are currently evaluating the possibility of booting an STM32N655X0-based custom board from an SD card and would appreciate some guidance before committing to this design.Current Setup MCU: STM32N655X0 Custom hardware Currently, the FSBL is downloaded directly into RAM during development. The FSBL then loads the application from external flash. We would like to migrate to SD card boot. Understanding from UM3234While reviewing UM3234 - How to Proceed with Boot ROM on STM32N6 MCUs, I found the following description (page 15):In data transfer mode, the Boot ROM searches for two FSBL images. It first looks for a GPT header at LBA1. If GPT is present, the Boot ROM uses the GPT table to locate the FSBL images. If GPT is not found, it falls back to the default locations: FSBL1: LBA 128 FSBL2: LBA 640 Our goal is to use a single SD card for both: Storing the FSBL used by Boot ROM Storing application data using FileX What We TriedOption 1: GPT PartitioningWe partitioned the SD
I need to create, read and modify files using filex. Such files have names that uses cyrillic characters set (they must be codified using unicode 16 bit). It is possible to manage such files? Thanks
Hello folks,I am investigating the Video Encoder on the STM32N6 and have been working through the reference project (VENC_SDCard_ThreadX).The user manual (RM0486) is very vague on detailing the Video Encoder, and lists over 100 pages of registers which appear to be referencing other Software Registers (VENC_SWREGx):There are approximately 500 of registers like these, and it doesn't really say much. Looking through the `asicRegisterDesc[]` structure in the Middleware has been useful to try and see what the registers are used for, but still is nowhere near the amount of detail that is needed.Any further info would be greatly appreciated.Kindest regards,
Hi everyone,I'm working on a project using the STM32F4 series with STM32CubeIDE. After the MCU wakes up from Stop mode, HAL_Delay() seems to get stuck and the program doesn't proceed as expected.I've already re-initialized SysTick after wake-up, but the issue still persists. Has anyone run into this before? Would appreciate any pointers on what might be missing in the clock/SysTick reconfiguration after Stop mode exit.Thanks in advance!
On the STM32WL55, when using LoRa and non-continuous receive mode, the RX timeout triggers immediately, i.e. the value passed to Radio.Rx is ignored. This can be demonstrated using the SubGHz_Phy example on the NUCLEO-WL55JC and setting#define USE_MODEM_LORA 1 #define USE_MODEM_FSK 0and also#define TEST_MODE RADIO_RX and modifying the call to Radio.SetRxConfig: Radio.SetRxConfig(MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR, LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH, LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON, 0, true, 0, 0, LORA_IQ_INVERSION_ON, false);i.e. setting the last parameter to false such that continuous mode is disabled. The OnRxTimeout function will be called very quickly, even though the timeout is set to 2s. The red LED will flash very quickly. (No transmitter is present, just listening to "silence").Timeouts work fine on FSK RX in non-continuous mode (red LED flashes slowly).Strangely, when first setting the modem to LoRa TX and transmittin
I have used the HAL_Delay function as below, the micro is stm32g474ret6.while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, SET); HAL_GPIO_WritePin(Buzzer_GPIO_Port, Buzzer_Pin, RESET); HAL_Delay(1000); HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, RESET); } /* USER CODE END 3 */}The problem is the code always struck in the HAL_Delay function with uwTick always returning 0. The systick interrupt handler is not called. Another observation if i enable the timer1 interrupt (i assume enable any interrupt) the code is reset. I generated the PWM using timer1 without interrupts. What is the problem when i enable interrupts how do i check it? Is it something to do with the Interrupt vector table.
i am using a 256K flash version of the STM32G0B1RE. part of the code is to use page 127 for various settings. when the device first starts up i set these settings at address 0x0308F800 this works perfectly. when i update a settings i erase page 127 then write the new settings. For some reason i cannot erase page 127, i am using single BANK mode, i think. when i pause to examine registers and memory i cannot see all the bits in the FLASH register. Suspect there is an issue with the svd file.i have used this technique successfully on other CPU versions so i am confident the basic code works. i think i am missing something around the 1 bank or 2 bank settings for this processor.any help appreciated. Mark
Hi, For a reason that I cannot explain, the STM32U575ZI (on the nucleo board) is sending a CAN bus message with infinite repeats and 100% bus utilisation, but I have repeated transmission turned off (DAR bit set to 1) and I have confirmed this using the debugger. It continues to send this message at full rate even if I pause the device in the debugger. My code is configured to send a packet with a changing ID from 0 to 4, but the repeated message always has the same ID (0x1, the first message that was queued), indicating that the message is stuck in the TX FIFO. FDCAN_TXBRP is always 0x1. Interrupts for the FDCAN peripheral are not enabled. I have the following code as my main loop: if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK) { Error_Handler(); } FDCAN_TxHeaderTypeDef header; header.Identifier = 0; while (1) { const uint8_t tx_data[] = {0x01, 0x23, 0x45}; while (HAL_FDCAN_GetTxFifoFreeLevel(&hfdcan1) != 3) { HAL_Delay(1); } header.Identifier = (header.Iden
I have a laser engraver that runs on an ESP32 S2 Mini microcontroller. It has the following signature: “Espressif CDC Device” and emulates a COM-type serial port. I had two identical cables; if I connect my engraver to my PC via a serial program (NinjaTerm), I can control GRBL. I cut one of these cables, and they have four wires: VBUS, D+, D-, and GND. After crimping some connectors onto the ends of the wires and testing the cable connected to the port to distinguish between my D+ and D-, Now I’d like to put an STM32F411 (WeAct BlackPill v3.0) between my engraver and my PC to control my homemade Z-axis. The PC side is on a UART port of the STM32 connected to a CH340, and on the engraver side, a USB (D+/D-) CDC Host (Note: I’m not using the USB-C connector already soldered onto the BlackPill). The UART programming side worked perfectly. Where it’s getting stuck is on the CDC side… no response… #include <stdio.h>#include <string.h>#include <stdarg.h>#include "usbh_cdc
I am working with the STM32H7S3L8 MCU and using Zephyr RTOS for development. Currently, I see that Zephyr supports USB FS but does not seem to support USB HS for this MCU. Are there plans to add this support in future Zephyr releases? Any guidance or workarounds for enabling USB HS in Zephyr would be greatly appreciated. Thank you!
Bytewide DMA to a port: RAM to PD8-PD15, with a timer PWM used to generate /WR signal.I wonder if this will work. Some of it is a grey area. This is for loading a buffer into a ST7789 LCD controller, 66ns shortest cycle time.TIM1 and DMA1 are already used in my project.Digging around, it looks like TIM8 -> DMA2 should work, and a byte write to ODR+1 should land in ODR[15:8] and drive PD8-PD15.It also looks like PC6-8 can be used for the PWM output to produce the /WR. The timer overflow loads the next byte, so you have to load the 1st byte manually.There are some gotchas with spurious TIM behaviour. People found that with TIM8_UP, when you enable the timer, if the UGEN (update generation) bit or the initial configuration causes an immediate update event, you can get a spurious first trigger. You may have to set the UDIS bit or clear the update flag carefully, or use the ARPE/preload setup so the first genuine overflow is the first DMA trigger. One methid is after configuring TIM8 but
Hello @B.Montanari I am working with the STM32N6570-DK board and facing an issue while configuring LTDC in a dual-project (FSBL + Application) setup. As an initial step, I tested the "LTDC_Horizontal_Mirroring" example provided for STM32N6. This example is built as an FSBL-only project, and after building and flashing it, the display works correctly as expected. However, my final goal is to use LVGL for GUI development. Since I need more memory space for image storage and application resources, I created two separate projects: FSBL project – responsible for boot and low-level initialization Application project – intended to handle LTDC and GUI (LVGL) In my setup: The device boots successfully. FSBL execution appears correct. Control jumps to the Application project. LTDC peripheral configuration in the Application project is replicated from the working example. RIF configuration is performed in the FSBL project. Despite this, the display remains gray after
Hello, MCU : STM32C011J4-SO8NBoard : Custom I am working on a Teleruptor and one of the feature is to control relay based on zero crossing due to relay latency.My test code is simple: while(1){ if(HAL_GPIO_ReadPin(ZERO_CROSSING_GPIO_Port, ZERO_CROSSING_Pin) == GPIO_PIN_SET) { RELAY_CTRL_GPIO_Port->BSRR = RELAY_CTRL_Pin; } else { RELAY_CTRL_GPIO_Port->BRR = RELAY_CTRL_Pin; }}I run my system at 3Mhz (Consumption matter) and I see a big clock jitter of (8-10us). Please see image below.Normally, this shouldn’t take more than 1-2us.I tried using EXTI but got the same issue.I tried to run system at 12Mhz and issue is resolved but I can’t. Question:Is this behavior normal at this speed?Is there any way I can reduce the jitter? Thanks,Ayoub
I posted something the other day; that thread is still open, and I'll close it once I have a solution. I think this information must be out there somewhere because right now it's very limited. Here is the thread: CDC HOSTAs I said, I have no problem with the development boards, but your reasoning means that I might still end up with the same problem in the end. Let me explain. We have 3 chips of the same model but in different packages. This means that the 3 chips have the same functions but a different number of ports.STM32F411CEU6 (UFQFPN48) / Dev Board: Weact Blackpill. (unofficial) (BlackPill Schematic)STM32F411RET6 (LQFP 64) / Dev Board: Nucleo-F411RE (Nucleo F411 Schematic)STM32F411VET6 (LQFP 100) / Dev Board: F411-Disco (Disco F411 Schematic)First, I should start by saying that tutorials for HOST/CDC mode are very rare. Usually, the code generated by CubeMX is reliable, and in this case, I was able to test the DEVICE/CDC part wit
Hi,We recently bought a STM32H757I-Eval board and played around with it. This did overwrite the demo program it came with so I downloaded the stm32h757i-eval_demo.zip package to restore the demo.I used STMCubeProgrammer for this, did a full chip erase and pointed it at the hex demo file. The programming failed with Error : failed to download Sector[0]I tried the other hex demo files in the with the same result and on two different laptops and the latest CubeProgrammer.The weird thing is that when I power the board the demo seems to work as when new so I don’t know if only part of it is working. It could even have arrived in this condition.Anyone else have this problem? and perhaps a fix?I did try to compile one of the examples from the x-cube-azrtos-h7-v3-5-0.zip package to see if the generated hex would program ok.After a few issues I loaded the program with CubeIDE in debug mode and found the code would enter an infinite loop: while ((PWR-
According to AN5054, to prepare SFI (secure internal firmware install) or SFIx (secure external firmware install) "STM32 Trusted Package Creator" is required. Were do I find it? Searching ST website I find no such software product. Was it maybe recently replaced or "absorbed" by STM32Cube Programmer?
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.