Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hello everyone, the STM32F723IEK6 chip on my H755ZI-Q development board is damaged. If I replace it with a brand new MCU, how can I restore the program
1.I have TouchGFX Designer 4.24.2 and STM32CubeMX running on Windows 11. I downloaded the demos and examples via the file menu, also the latest TouchGFX Generator via CubeMX. I am targetting a NUCLE0 STM32G071 with GFX01M2($AZ2) display, so I selected the demos for that board, and have tried several of them, giving each a project name and pressing Create. In each case the progress bar goes to 88% then the program closes. If I restart TouchGFX Designer and try to open the project it has created in "TouchGFX Projects" folder, I get the error "Failed to open native freetype library". If I manage to import the projects (individually) to STM32CubeIDE (1.17.0) they appear to be missing some header files and do not compile. The configured paths (in project properties) appear to be wrong.I also downloaded TouchGFX 4.22.0, thinking it may be a compatibility issue, but it did the same thing. 2.Is it feasible to run TouchGFX designer on Windows, then import the p
I am using STM32CubeIDE 1.13.2 in Windows 11 and am trying to install TouchGFX.4.22.0 and its "Graphic Application" for a STM32H727i-DISCO board.The project is newly created and there are 14 errors that I need help fixing.As requested by the IDE, CRC was configured and activated before adding X-CUBE-TOUCHGFX.Here are the errors. The .hpp files do appear on the same drive that CubeIDE and the project are on, but the IDE can't find them.fatal error: platform/driver/touch/TouchController.hpp: No such file or directoryfatal error: texts/TypedTextDatabase.hpp: No such file or directoryfatal error: touchgfx/hal/BlitOp.hpp: No such file or directoryfatal error: touchgfx/hal/GPIO.hpp: No such file or directoryfatal error: touchgfx/hal/HAL.hpp: No such file or directoryfatal error: touchgfx/hal/HAL.hpp: No such file or directorymake: *** [TouchGFX/target/generated/subdir.mk:28: TouchGFX/target/generated/OSWrappers.o] Error 1make: *** [TouchGFX/target/generated/subdir.mk:28: TouchGFX/target/gene
i DEBUG STM32N5670-DK Template_XIP_FSBL with stm32cubeide1.19.0 and ERROR comes:Device debug scriptthe detail is:STMicroelectronics ST-LINK GDB server. Version 7.11.0Copyright (c) 2025, STMicroelectronics. All rights reserved. Starting server with the following options:Persistent Mode : DisabledLogging Level : 1Listen Port Number : 61922Status Refresh Delay : 15sVerbose Mode : Disabled Waiting for debugger connection...Debugger connectedWaiting for debugger connection...Debugger connectedWaiting for debugger connection...-------------------------------------------------------------------STM32CubeProgrammer v2.20.0 ------------------------------------------------------------------- Log output file: C:\Users\supcon\AppData\Local\Temp\STM32CubeProgrammer_a04640.logST-LINK SN : 0038002E3333511*********ST-LINK FW : V3J16M9Board : STM32N6570-DKVoltage : 3.27VJTAG freq : 21333 KHzConnect mode: Under ResetReset mode : Hardware resetDevice ID : 0x486R
Hello,I am currently working with HSO for motor control and would like to clarify whether DPWM (Discontinuous PWM, 2-Phase PWM) is supported.In the Observer + PLL method, it seems possible to select discontinuous PWM by setting the modulation flag.However, I noticed that such an option does not appear to be available in HSO.Thank you in advance!
Hi there, Ive gone around in circles for hours on this. I'm just trying to read a frequency, around 150Hz typ. using the 32 bit timers, for now just TIM2, 4 channel but behaviour same on all channels. Using 16MHz clock the timer overflow happens around 4:40 mins, the read of the period and calc of frequency is fine, matches input signal, until the first overflow.After first overflow the period halves, frequency doubles, and stays like this for every subsequent overflow (confirmed by making a smaller ARR so overflows more frequency). I am trying to increment the high side of a 64bit counter-measurement value with the overflows and then populate the low side with the TIM2->CCR1. Below is my code, just one channel for brevity.As far as I can see it looks relatively textbook and it's just a simple task, it seems so odd that it just doubles the frequency reading on the first overflow but on no subsequent. Any help very gratefully received... // uint8_t TIM2_CH1_N
I have a MC SDK project which works a treat, unless I reorder the windings on my motor. It's configured for UVW / EN because that's how my driver works. (TI DRV8311SA)The motors for my production build are a different phase order than I have been developing on. Is it possible for me to reorder UVW in software so that my commutation is correct? U and W need to be swapped physically for the motor to work. Ideally this mapping would be changeable in the software somewhere? R
Subject: STM32G070RB – Need PWM Output on PD 4 (TIM1_CH3N) for WS2812 LED Strip Interface – Hardware LockedDescription:We are working with a custom-designed board based on the STM32G070RB, running at a system clock of 64 MHz. The hardware is already manufactured and cannot be modified.In this design, we have routed the output pin for PWM to PD 4 which corresponds to TIM1 Channel 3 N (CH 3 N) — an inverted/complementary output channel.Our requirement is to interface a WS2812 LED strip, which needs precise PWM (typically using one of the timers with DMA or tight timing). However, we now realize that PD 4 is a complementary output (CH 3 N), and normal PWM output through this pin is not functioning as needed.Since we cannot change the hardware, we are looking for guidance on:Is it possible to generate a usable PWM signal on PD 4 (TIM1_CH3N)?Can this inverted/complementary channel be configured to act as a standard PWM output?Is there a known workaround or recommended method for
Hey,I am trying to make a device which connect to an app using stm32wb15. Everything works properly, but I want to make it so that when the device becomes disconnected, i can use a button to broadcast BLE so that i can connect through an app again. I tried the existing ready functions. But I could not seem to make it visible as a Bluetooth device again (have to restart the device) Can someone point me to which functions i should call in the main.c to start broadcasting durign button press.
I'm trying to create a long vertical menu that can be configured for a different number of items. I have managed to get a working implementation with a single issue.I would like to be able to select which item in the list is shown when the menu is loaded. For example, given a list of 30 items, I would like to go to Item 10 if it were the last item selected previously.What I have tried:Custom container scroll list with a custom container menu item. The scroll list is stored in a scrollable container to provide a scrollbar. For the scroll list to work with a long list, I have made the scroll list container's height long enough to fit 30 items within the designer. To force the list display to start from a specific point, I have tried animateToItem()which has no effect.listMenuView.cpplistMenuView::setupScreen() { scrollList1.setNumberOfItems(params->visibleItems); scrollList1.invalidate(); scrollList1.initialize();}what is this the correct w
Hello! I'm working on a custom PCB that uses the STM32WB1MMCH6TR module, which was chosen specifically because of its integrated antenna. Unfortunately, with the first prototypes I'm getting extremely poor range with BLE, usually <-80 dBm even just a few inches away. This makes it near impossible to communicate with it from any useful distance. I made sure to turn the transmit power (CFG_TX_POWER in CubeIDE) all the way up to 6dBm, but it didn't help with the signal strength. I was not able to find much information on designing a PCB around this module, so I just went based off the keep-out zone that came with the supplied footprint on Digikey. I suspect that there may be components too close to the antenna side of the module, but I want to ask for advice before ordering the next revision. Thank you!
Hello,I am currently working on a project using MC Workbench 6.3.2 and the B-G431B-ESC1 board using the STM32G431 MCU to control a small motor, and I'm really struggling to wrap ny head around the current conversion formula. In various places in the code, it is explicitly stated that the current conversion formula is Current (digit) = [Current(Amp) * 65536 * Rshunt * Aop] / Vdd micro. However there are parts of this formula that confuse me. For one, the 65536 term seem to come from the adc conversion from voltage to digit. However the adc has only 12 bits, so I'm confused as to why this is not 4096 (2^12) instead. The other value that stumps me the amplification gain, Aop. It is stated to be 9.14 in the code parameters. But when i looked into the amplification parameters, i found the following line of code : LL_OPAMP_SetPGAGain(OPAMP1, LL_OPAMP_PGA_GAIN_16_OR_MINUS_15);Which seems to indicate the gain is 16? I'm not very familiar with the opamps peripherals so it is poss
Hello,I'm working with a RAK3172 based on STM32WLE5CC chip.I'm using Zephyr RTOS and trying to use the power management features.I've an uart communication, when CONFIG_PM=n, everything works well. When setting CONFIG_PM=y, I don't receive any data.I've configured, the lsi, hsi, pll and rcc in my dts file.I've tried a bunch of configuration, but impossible to get power management to work alongside uart.I just have the following code: int main(void) { while (1) { gpio_pin_toggle_dt(&gpio_led0); printk("Hello, World from main!\n"); k_msleep(1000); } return 0; }Thanks for the help
Hi,I’m using an STM32U385 (Cortex-M33) and trying to enable the Micro Trace Buffer (MTB) using ARM’s MTB-M33 register addresses (0xE0043000 base).No matter what I try, the EN bit in MTB_MASTER never sets.Does the STM32U385 have the MTB component?Thanks,Rakesh
Hi, I’m working on an STM32L431CBT6 project where I enter STOP2 mode and measure ~1 µA current, which is great. However, I need to use PA0 as a GPIO input to wake up the MCU from STOP2. When I configure PA0 as an input (no pull, or pull-up/down), my STOP2 current jumps to about 50 µA. Here’s the relevant setup: MCU: STM32L431CBT6Toolchain: CubeMX + HALSTOP2 entry via HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI)All unused GPIOs are set to analog modePA0 configured as GPIO_MODE_INPUTSupply voltage: 3.3VCurrent measured with multimetervoid Enter_Stop2_Mode(void) { // Set all GPIOs to analog GPIO_InitTypeDef gpio = {0}; gpio.Mode = GPIO_MODE_ANALOG; gpio.Pull = GPIO_NOPULL; gpio.Pin = GPIO_PIN_All; // Set all pins to analog mode HAL_GPIO_Init(GPIOA, &gpio); HAL_GPIO_Init(GPIOB, &gpio); HAL_GPIO_Init(GPIOC, &gpio); HAL_GPIO_Init(GPIOD, &gpio); HAL_GPIO_Init(GPIOE, &gpio); HAL_GPIO_Init(GPIOH, &gpio); gpio.Pin = V1_Pin; gpio.Mode = G
Hello, I hope this message finds you well. I am currently testing two MT25QL512ABB devices in dual mode using the STMH747I, with the same driver for the MT25QL512ABB. After performing write/read verification and rebooting, I encounter issues during subsequent read operations, as it consistently returns 0xFF. I would greatly appreciate your assistance in sharing any insights or findings regarding the root cause of this issue, if available. Thank you in advance for your support. Edit: moved from Issue with Programming NOR Flash MT25QL512ABB1EW9 Using STM32H735IGT6 to a new thread.
Hi, I recently designed a custom STM32F405RGT6 board. It's my first custom board, and I wanted to post the schematic here for some feedback on mistakes that I might have made before I move on to the motor control section.
STM32U575RGT6 + LIS2MDLTR三轴磁场传感器,通过IIC配置传感器寄存器模式,0x20、0xFE;0x21、0x00;0x22、0x00;0x23、0x0C;0x24,0x40。但是通过测试,Debug出来的点数,Z轴数据不变
Hi!TLDR; Mass Storage on STLINK on NUCLEO-C071RB isn't enabled by default. You need to use STLinkUpgrade to change Type to STM32 Debug+Mass Storage+VCPI've got a new NUCLEO-C071RB for test purpose, to evaluate that it's ready to be programmed in my build environment. I quickly wanted to test it in the Arduino IDE with stm32duino board files. For simplicity I choose the upload method Mass Storage. I sat up the typical udev rules manually and added my user to dialout group, and restarted Ubuntu. After this, I still struggled to program the NUCLEO-C071RB board with Arduino IDE using the Mass Storage upload method.That's when I had the idea to bring out a previous board I have laying around, NUCLEO-F401RE. Quickly after, this one was confirmed to work. At this moment i realized that NOD_F401RE was visible as an external storage on Ubuntu, while NOD_C071RB was not. Which confirmed that Mass Storage wasn't working on the NUCLEO-C071RB.Update: I tried to see if there was any firmware updates
Hello,I just created a default project with the nucleo board template and with VCP initialized, how can I transmit data via UART using the VCP?
I am working with STM32H745I-Discovery board. I trying to do Data transfer through SPI with DMA. But unable to transfer the data. Could any help me with example code for STM32H745I-Disco board.
I made pcb with stm32l011d3, but st-link doesn't detect mcu.Detect other commercial pcb with st-link, so st-link has no problem.I know that boot0 in the current dataset is not connected to gnd. It is not recognized even if I connect it to gnd right away.What am I not doing well?
We are using TouchGFX for LCD UI design. It seems that the generated c files for image have reverse-ordered 16-bit data. We have to revert the image at run-time. Is there a way to revert the 16-bit order during image converting?
Hello,I have STM32-WBA55CG connect with MEMS sensor. STM32 board will send the messages back to terminal through USART. The WBA55CG is right now connected to stationary power source. It would be nice if someone can give some ideas, how to transform it into a mobile device and save USART messages?
Having faced the same problem, ended up in this thread. This is the same for HAL_SPI_Receive_DMA() as well, because it internally calls the transmitReceive function. So, it made me enable tx dma interrupt as well rx. Why on earth I have to enable tx dma when I just need rx dma? It does not even call the tx complete callback. My workaround was to: 1-make tx dma interrupt priority higher than rx dma interrupt. 2-poll for tx dma complete in rx interrupt routine before proceeding to next transaction. void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) { handleXferCplt(hspi); } void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) { handleXferCplt(hspi); } bool handleXferCplt(SPI_HandleTypeDef *hspi) { // stm hal forces to use both tx and rx dma becasue it calls tranmitReceive() internally for receive. // however, dma tx transfer complete interrupt comes after rx complete. So, tx dma busy flag is still set and queued // sessions cannot proceed. so wait for it to finish. this i
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.