Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi everyone,I'm working on an STM32 project using STM32CubeIDE. I'm using the built-in debugger with ST-LINK and UART (via HTerm) to monitor communication between the STM32 and a host PC.Here's something odd I noticed:When I click the "Debug" button in STM32CubeIDE (but before I press "Resume"), I already see some UART output in HTerm, like:AA 00 40 02 00 00 4D 55AA 00 50 02 00 00 2A 55Then, when I press "Resume", the same two messages are sent again. So in total I see them twice.This seems strange because I wouldn't expect the UART to be transmitting anything before the code is running (i.e., before Resume is hit). But clearly, something is happening during the debugger halt or initialization phase.Is this normal?Is it common for STM32CubeIDE to somehow "pre-run" some initialization code before Resume?Could it be something about HAL_UART_Transmit being called from main() before HAL_Init() fully returns?Or maybe the ST-LINK somehow triggers this?The program runs fine otherwise, b
HiPlease provide a sample code to interface a Sigma-Delta type ADC like the ADuM7701 with the STM32H562RIT6, which does not have a DFSDM unit, and guide me on optimizing the code so that the microcontroller is not solely occupied with processing the MDAT signal from the ADuM7701. thank you
Hello everybody,I have a question related to the STM32N6570-DK eval kit. Is it possible to change the position of the BOOT switches when the board is powered by USB-C ST-Link ? Or do I always have to power-off the board ?Thanks Max
I have properly connected the SD card module to the NUCLEO-F722 using the following reference URL, but I am still experiencing FR_DISK_ERR. I have searched for a solution in the STMicroelectronics Community and tried the methods described, but have been unable to resolve the issue. Can someone please help me with a solution ?URL: https://qiita.com/FAL19/items/e073ca807dfd1d5e36d5
I’m designing a custom board based on STM32N6 and using the same boot flash as the NUCLEO‑N657X0‑Q (MB1940). In the reference design, all OCTOSPI signals to the flash have 0‑Ω bridges in series, and the traces are length‑matched including those footprints.What’s the main reason for these 0‑Ω parts? Are they only for flexibility during bring‑up (e.g., swapping in damping resistors), or do they serve another purpose? Is it safe to omit them or do they serve a specific reason? Snippet from the MB1940 Schematic:Thanks in advance and best regards,Julius
Hi, im planing on running computer vision DL models on multiple STM32 boards. At this moment I will compare a STM32MP256F-EV1 with a STM32H747-DISCO, however i only bought the B-CAMS-OMV and is not the same connector on the MP board. IS there any way o run this camera module on both board, can I just get an adapter from the 30-pin ZIF to the CSI connector?Also i dont is the any suplementary information about the ZIF connector
Hi, We have bought the NUCLEO-H533RE board and I tried to power it via E5V by connecting the Arduino Minima R4 board 5V power output into E5V and GND signals in pins 6 an 8 respectively. I instantly noticed that the LED LD3 is lit with green, but the MCU got really hot. I would also like to mention that the Arduino board is powered by USB-C so, the output current from the 5V output pin in Arduino shouldn't be more than 500mA anyways. Since then, I tried to get back to using the default 5V_STLK USB power supply, but LD4 starts flashing red rapidly, which indicates that the drawing current exceeded the 500mA. I measured the 3V3 and 5V pins on the board with ~0.28V and ~0.8V respectively. I just would like to also mention that replaced the STM32H533RE MCU with STM32H523RET6 MCU. Is there any reported fault on that board regarding connecting the the external power supply? Also Is it possible to power up the NUCLEO board from Arduino Uno Minima R4 by connectin
I am having difficulty creating AD schematic and PCB libraries for the NUCLEO-H563ZI from the MB1404 Altium project files. The process fails when attempting to create similar components, such as resistors.Is there any chance of obtaining the libraries for this project or access to the MCD_PARTS_database.DbLib?ST team, I would greatly appreciate your support.
Hi everyone ! I am having problem with the I²C connection. The problem is that, normally the the SDA and SCL pins work properly (I checked it with a logic analyzer) but when I connect them to the module or sensor I use, both of them goes LOW and stay at that level. When I reset the board, the SDA goes HIGH for a really really short time and goes LOW again. I searched on the Internet for a solution but couldn't find one. By the way, I am using STM32 H755ZI-Q Development Board and the ADS1115 ADC module. The things that I checked and tried so far: The wiring is correct The code is correct (I am just using the HAL library functions) The I²C address is correct The module is working (at least I used it with Arduino without any problem) I tried it with 10K Pull-Up resistors but nothing changed. As a note, I am having this problem with an other sensor either (OV7670 camera sensor) and also I tested different copies of these sensors and modules, in a case that they can be br
Post edited by ST moderator to be inline with the community rules especially with the code sharing. In next time please use </> button to paste your code. Please read this post: How to insert source code Hello there, i have some connection/re-connection problems with my opcua server, when i unplug the LAN cable.Because of prevent memory problems i disable the most Options for the opcua Server. Perhaps in the Future i will try more options out.But at first the Connection should be stable and when I unplug the LAN cable a re-connection should be possible again.Perhaps you can help me here. Hardware:- STM32F407- DP83826 (TI)- etc. Firmware:- open62541 v1.3.6 (amalgamation)- LwIP v2.2.0- FreeRTOS v10.5.1- etc. Perhaps interesting Settings:- Memory Management: Heap5 - lwipopts.h: #define MEMP_NUM_NETBUF 4 #define MEMP_NUM_NETCONN 8 #define LWIP_COMPAT_MUTEX 1 #define LWIP_COMPAT_MUTEX_ALLOWED 1 #define LWIP_TCP_KEEPALIVE 1 /* STM32CubeMX Specific Parameters (not defined in opt.h) -
The bottom line is the "wba" file stm32wbax.cfg is missing from openocdHere are the details:I have designed a board with the STM32WBA65 CPU.I downloaded openocdDownloading from origin https://github.com/STMicroelectronics/OpenOCD.git (fetch)git checkout v0.12.0-rc3But the needed file stm32wbax.cfg is missingfind . -name "stm32wb*"./tcl/target/stm32wbx.cfgWhat I need is an openocd that works with the stm32wbax.cfg file.I have found the file in https://github.com/openocd-org/openocd However, that file does not work with openocd distributed by MorseMicroopenocd --versionxPack Open On-Chip Debugger 0.12.0+dev-01312-g18281b0c4-dirty (2023-09-04-22:31And I built openocd from scratch and it also failopenocd --versionOpen On-Chip Debugger 0.12.0-rc3-00999-gfcb40f49b (2025-08-05-13:39)Conclusion: When you find the file stm32wbax.cfg, please make sure it works with openocd.And please add LABELS to your GUI so I can file under STM32WBA or STM32WB
Hi everyone, I'm using a Riverdi board (STM32 10.1" Rev. 1.2) with an STM32H747XIH6, and I'm having trouble with the UART8 in single-wire mode. I can't get the interrupt callback function to be called when data is received on that port.This board uses TouchGfx and FreeRTOS.I'm using a test interrupt code just for the UART8, but it's not responding.If I use the blocking function HAL_UART_Receive(...), I receive consistent data, so I don't think it's a wiring or pinout issue. I have checked that the signal is coming in with the oscilloscope.I have the global interrupt enabled for the UART8.The code I'm using is this, in freertos.cvoid startUartTask(void *argument) { /* USER CODE BEGIN startUartTask */ memset(rxBuffer, 65, 128); HAL_HalfDuplex_EnableReceiver(&huart8); HAL_UARTEx_ReceiveToIdle_IT(&huart8, rxBuffer, 64); /* Infinite loop */ for(;;) { //HAL_UART_Receive(&huart8, rxBuffer, 128, 120); osDelay(10); } /* USER CODE END startUartTask */ } In mai
ContextCustom 3D-printer controller that I'm developing from scratch, currently on rev7. Rev6 (very similar) runs the same blinky fine. On rev7 I can connect/erase/flash/verify over SWD, but code doesn’t run—GPIOs stay at ~0 V.MCU / ToolingMCU: STM32F446ZET6 (no bootloader)Programmer: ST-Link V2, STM32CubeProgrammer (SWD)Build: STM32Duino / Generic F446ZETx (144-pin), USB support = None, Clock = HAL, Debug = Serial WireTest firmware: blinker for the LEDs on PA8 and PA15 SymptomsFlash + verify at 0x08000000 succeed.Vector table @0x08000000 looks sane (SP=0x200xxxxx, PC=0x0800xxxx|1).After reset, PA8 and PA15 don’t toggle (measured at MCU pins). PA15 blips only when debugger attaches.Same binary works on rev6.Measured the following:VDD = 3.3 V on all banks (decoupled).VDDA = 3.3 V, local 100 n + 1 µF.VCAP1/VCAP2 ≈ 1.3 V each (2.2 µF caps fitted).NRST ≈ 3.3 V idle, pulses on connect.BOOT0 pulled low (confirmed low during reset).LEDs both been verified to work by injecting 3
We’re enjoying working with TouchGFX, but we’ve encountered a challenge: our projects are stored in the WSL filesystem which uses UNC paths (e.g., \\wsl$\). Currently, TouchGFX Designer doesn’t seem to support UNC paths making it cumbersome to make changes to our project. Right now we have to store a second copy of the project on the Windows filesystem in order to use TouchGFX Designer resulting in extremely slow compilation times due to the virtualized file system boundary.Would it be possible to add UNC path support in a future release? This would greatly improve our workflow and integration with WSL environments.
Hi, I've been working on porting the SBSFU onto a STM32H7A series with my custom gcc-arm build environment.The example project I am referring to is: x-cube-sbsfu-v2-7-0\STM32CubeExpansion_SBSFU_V2.7.0\Projects\STM32H7B3I-DK\Applications\2_Images.Everything seems to be working fine, but I have one issue that I am struggling with. So, the main SBSFU is supposed to call SE_CallGate() being the entry to the core secure engine, and it gets rebooted constantly. And, what I found is that the reboot doesn't happen if I get "IS_CALLER_SE_IF()" commented out. // se_callgate.c SE_ErrorStatus SE_CallGate(SE_FunctionIDTypeDef eID, SE_StatusTypeDef *const peSE_Status, uint32_t PrimaskParam, ...) { SE_ErrorStatus e_ret_status; va_list arguments; volatile uint32_t LR; #if defined(__CC_ARM) || defined(__ICCARM__) LR = get_LR(); #elif defined(__ARMCC_VERSION) __asm volatile("MOV %0, LR\n" : "=r"(LR)); #elif defined(__GNUC__) register unsigned lr asm("lr"); LR = lr; #endif /*
Hello,I've implemented, using the Designer, a Swipe container composed by 2 pages which are respectively 2 containers (SwipeContainerPage1, SwipeContainerPage2).Each page includes some text and box which are updated on page swipe change and everything works fine.Now I want to command an Action (a page change) when the user presses for a couple of seconds (let's say 2 seconds) SwipeContainerPage1 or SwipeContainerPage2 while maintaing the swiping property of this macro object.Is this possible? I've taken as a reference the "ClickListener_Implementation_longPress" as a reference but with no success...(Edited) I tried doing this and it works for the first page (calls goTo_GUITemperatureSet_Action()) but it blocks the swipe capability and I cannot go to the SwipeContainerPage2://In the .hpp file class GUIMainSwipe_View : public GUIMainSwipe_ViewBase { public: GUIMainSwipe_View(); virtual ~GUIMainSwipe_View() {} virtual void setupScreen(); virtual void tearDownScreen(); virtual void ha
Hi all,we're right now switching from 32F469IDISCOVERY with STM32F469NIH6 (running @180Mhz) to another display board with a STM32U5A9NJH6Q (running @160Mhz).Our UI has one Screen with a SwipeContainer (total of 3 pages). On the second page we're using two DynamicGraphs to display a target curve and a curve with measured data (both Graphs are using a Line as Element).During swiping the animation is very slow and laggy. Of course we can also see some performance decrease on the discovery board but on the new board it is not acceptable- therefore I'm searching for some hints how to improve this behaviour.When the graphs are empty the animation of the swipe container is fast enought. But If both graphs are filled with data (right now we have 480 datapoints for each graph / maximum is 600 for each graph) the animation is very slow. The more datapoints are pushed to the graphs the slower the animation gets.1) Is there a way to improve this?2) Why the Line/Data has such an
I have been using the BLE_Ota released binary in an unmodified form in my products for years. Now I want to modify it for use on a product that doesn't have an LSE crystal. I have successfully updated my own application to run on HSE only, but now I need to modify the BLE_Ota to do the same.I would like to step through the BLE_Ota code with the debugger, but I am running into the error "Break at address "0x800fd70" with no debug information available, or outside of program code." That address is past the locations of BLE_Ota, and into my own application code. I have tried a few things to get debugging to work, and I've run out of ideas.Things I have tried:Made a new workspace in the BLE_Ota area so that the relative include references will work. The code now compiles.Made a new debug build configuration, with Optimize for debug (my usual optimize-none makes the code too big), and debugging set to maximum (-g3) in the GCC assembl
HelloI am trying to get the STMN32G431 processor to do what I want.If I set the baudrates 500kB / 2MB and a samplepoint of 87.5% for both and send a CAN packet with FDF and BRS I get after 3 ms:LastError = Recessive Bit Error and 8 Tx errorsand 2 ms later:LastError = Recessive Bit Error, 248 Tx errors and Bus OFF !Sometimes it is also a Dominant Bit Error.This happens even in Internal loopback mode!Therefore I set a Tx delay compensation of zero.But also with other values for Tx delay compensation, it never works.If I chose the samplepoint up to 85% all is still fine.But with 87.5% I get a BusOff which is 100% reproducable.Now comes the strange thing:HAL_FDCAN_ConfigTxDelayCompensation(&can_handle, 0, 0); HAL_FDCAN_EnableTxDelayCompensation(&can_handle);will produce this problem, but withHAL_FDCAN_DisableTxDelayCompensation(&can_handle);it suddenly works correctly!How is it possible that setting a delay of zero is not the same as a delay that is turned off?Here my set
Hi All,I am working on B-WL5M-SUBG1 hardware.I compiled the example "C:\...........\STM32Cube\Repository\STM32Cube_FW_WL_V1.3.0\Projects\NUCLEO-WL55JC\Examples\PWR\PWR_STANDBY" to measure the current consummed in standby mode and I am measuring the current using STLINK_V3PWR.I removed JP2 and connect "OUT" from STLINK_V3PWR to the pin that supply STM32WL5MOC and the GND of STLINK_V3PWR to GND of STM32WL5MOC.I got current of about 2.3mA in standby mode instead of less than 1uA as specified in the datasheet and I discovered that the 5V_PWR LED(LD4 Green) was ON.I am just wondering how power got to the 5V_PWR LED or if I am missing something, has anyone done this in the past?
Post edited by ST moderator to be inline with the community rules especially with the code sharing. In next time please use </> button to paste your code. Please read this post: How to insert source code The LCD Driver in stm32u083rc is consuming more power in stop 2 mode, it is taking more current at every interval (interval is of refresh rate , if refresh rate is 128Hz then the spikes come at (1/128 = 7.8ms)) currently we are entering low power mode like this void lowpwrmode_EnterLowPowerMode (void) { // LOG_INFO_UART("Entering Stopmode2 \r \n"); HAL_CRC_MspDeInit(&hcrc); //CRC HAL_SPI_MspDeInit(&hspi1); //SPI HAL_CRYP_MspDeInit(&hcryp); //AES HAL_UART_MspDeInit(&hlpuart2); //LPUART HAL_LPTIM_MspDeInit(&hlptim3); //Buzzer HAL_DAC_MspDeInit(&hdac1); //DAC HAL_I2C_MspDeInit(&hi2c2); //I2C //SysTick Timer HAL_SuspendTick(); //CLear Wakeup Flags __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); HAL_PWREx_EnablePullUpPullDownConfig(); //Disable Debug HA
Hello,i'm starting a project with STM32F407VG and ADAU1466 DSP. The ADAU1466 generates the MCLK for the audio codec (ADAU1701), so far so good.Now i'd like to implement full-duplex I2S communication between ADAU1466 and STM32 too using a different I2S port on the DSP. The idea is to set the STM32 as a slave receiver and let the DSP generate BCLK and LRCLK. In this context, do i need to provide master clock to STM32 too and if so, how? I mean, which pin should i use? For I2S2 i can see PC9 alternate function I2S_CKIN but i'm not sure if this is the proper way to provide external master clock.
I am working on an STM32 H7 but I assume this applies to other series as well. I wrote an application function to set a timer period based on a uint32_t value which basically contains the following snippet: htim->Init.Prescaler = timerClockFreqInMHz - 1;htim->Init.Period = periodUs;if (HAL_OK != HAL_TIM_Base_Init(htim)){ Error_Handler();}Now this worked as expected for some timers but failed specifically when using timer TIM4. I took some time to debug but I realized only via cubeMX (and later on checked in the manual) that some timers do not have a 32bit ARR register but only 16bit and indeed my "non working behaviour" came from an overflow on the 16bit TIM4. Now going deeper in the HAL, it appears that HAL_StatusTypeDef HAL_TIM_Base_Init(TIM_HandleTypeDef *htim)calls void TIM_Base_SetConfig(TIM_TypeDef *TIMx, const TIM_Base_InitTypeDef *Structure)and here ARR is set /* Set the Autoreload value */TIMx->ARR = (uint32_t)Structure->Period;&n
Hi everyone,I have custom stm32wle board that is configured as dc-dc supply, and external 32MHz crystal with 6.8pF capacitors.I can read and write to/from radio registers but i can't transmit any data. Indeed even transmit interrupt (HAL_SUBGHZ_TxCpltCallback) is fired after i call sx126x_set_tx() function. void send_data(){err += loradio_reset(p); err += sx126x_set_pkt_type(p, SX126X_PKT_TYPE_LORA); struct loradio_params_str radio_params;radio_params.bw = LORADIO_BW_125;radio_params.cr = LORADIO_CR_4_5;radio_params.sf = LORADIO_SF7;radio_params.ldro = 0;radio_params.preamble_len_in_symb = 8;radio_params.header_type = LORADIO_LORA_PKT_EXPLICIT;radio_params.payload_length = 23;radio_params.crc_enabled = true; //trueradio_params.invert_iq_enabled = true; //trueradio_params.radio_freq = 915000000;err += loradio_set_lora_params(p, radio_params); // it is a function firstly set lora mod params and then paket params err += sx126x_set_reg_mode(p, SX126X_REG_MODE_DCDC); //L
NUCLEO F411RE, MPU 9250 I'm reading acceleration data via SPI from an MPU 9250 directly to memory. This part is working for one off reads in a loop I can see my x, y, z values change in the debugger I would like to do FFT on the acceleration data but at the same time not interrupt the flow of data so I can know for sure the sampling frequency. I'm thinking having a constant stream via DMA into a circular buffer or possibly a dual buffer set up, read one buffer whilst the other is processed? About the frequency - I'm unclear about how calculate this accurately. SPI1 is on the APB2 bus which has a default frequency of 16MHz. I have a function that requests the acceleration data (sends register address & a read flag) & waits for the data to be received which is 6 bytes, then does it all over again. So is my thinking right here, there's some over head for the actual request but the data is arriving in 3us (48/1600000) ~333KHz? Also, this is blocking isn't it (see mpu92
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.