Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Dear STM communality member,Greeting of the day!I have selected STM32G070RB MCU for my application, I need your guidance to get clarification on the the below points before finalizing the MCU and start hardware design.Error in the calendar after one year with internal 32KHz crystal selected for RTC.Can Li-ion battery connected to VBAT pin will provide power to MCU, when input power failure, to save the parameter to flash.I have selected TIM1 for encoder and TIM14 for PWM output, can I use encoder and PWM functionality in debug mode. refer below image from data sheet.Data sheet link: https://www.st.com/en/microcontrollers-microprocessors/stm32g070rb.html Thanks in advance..Regards,Anand Sagar
Hi everybody,i just noticed a bug in the HRTIM HAL library for the STM32G4 controller. The defines for the HRTIM deadtime prescaler in stm32g4xx_hal_hrtim.h are swapped between MUL and DIV.For example: MUL8 should be 110 binary but it is 000. DIV8 should be 000 but it is 110. Is there any way to transmit this officially to STM?
First of all, I am not using CUBE IDE, this is a bare metal.Second: STM32H523. ADC (continuous mode; DMA). ADC is configured on PA0 (i.e. INP1, single-ended), GPIO configuration is analog mode.On the pin I can probe (oscilloscope) my signal (correct amplitude): a sinus. But the data (from DMA) is noise.Configured with PA1, all works fine (so my soft is ok). Using ADC1 or ADC2 does not change anything.Second observation: with PA0, the DC is not fixed (floating pin), but configured on PA1, the pin is DC-driven (about VDDA/2, high impedance).=> For these reasons, I have the feeling PA0 is not connected to ADC. I can't find anything in registers/documentation/erratas explaining this (on H7 there is some analog switches, but nothing for H5).Any clue? Thanks!
When using TrustZone, the memory address changes from 0x0800 0000 to 0x0c00 0000. Is thr actual physical address the same? Or are the memory regions separated into a 0x0800 0000 region and a 0x0c00 0000 region? Using MCU stm32l562 freeRTOS
In the RM0456, the LPUART has a block diagram (67.4.1) with a register called LPUART_ RTOR but there is no documentation about this register. For USART, this register is related to Receiver timeout interrupt but this feature is not available for LPUART.
VOID bno055_thread_entry(ULONG thread_input) { tx_thread_sleep(1000); BNO086_Init(); while (1) { tx_thread_sleep(100); } }I'm using the BNO086 IMU sensor with an STM32U575RGT6 MCU.The schematic below shows the sensor connections.The code I'm using is also provided below.I am aware that the sensor communicates using the SH protocol format.I'm trying to send custom packets over the I2C bus, but I haven't received any response from the sensor.I connected the SDA and SCL lines to a logic analyzer, but there's no activity at all.I couldn't read the sensor address over I2C in any way — I have no communication with the sensor whatsoever.I reworked the hardware multiple times, replaced the sensor chip, but it still doesn't work.I had previously used the BNO055 sensor successfully, but I can't get the BNO086 to work.Is there something missing in my software configuration?Do I need to configure anything additional in the .ioc file?#ifndef __BNO086_H #define __BNO086_H #includ
I am using the STM32L433RCT6 and need to assign a GPIO pin as an external interrupt, which will be used to wake and shutdown the MCU (shutdown must use minimal power).However, I am not sure if I have to use a specific GPIO pin, or if I can use any GPIO pin for the external interrupt ?The external interrput will be connected to a momentary push button (net PWR_SWITCH)...There will be a procedure to wake and shutdown the MCU as explained below (there is also a link to a video to demonstrate the procedure)... Start the switch-on cycle by clicking the button once. After approx. one second, an LED will flash. You mustacknowledge the LED light immediately by clicking the button again. This sequence - a click as soon as the LED appears - will be repeated two more times. After a total of four clicks, the MCU will wake up.If you do not act promptly after seeing the LED light, or if you push the button too soon, it will ignore the switch-on attempt. This four-click switch-on cycl
Hello everyone,I’m using the STM32H747I-DISCO development board for evaluation and prototyping. I would like to know whether this board has undergone any form of EMI/EMC certification (e.g., CE, FCC, CISPR) or internal EMI testing by ST.Specifically, my questions are:Is the STM32H747I-DISCO compliant with any EMI/EMC regulations?Can this board be used in pre-compliance EMI testing or EMI-sensitive environments?What are ST's recommended practices or references for designing a production-grade board using the STM32H747 that complies with EMI/EMC requirements?I understand that development boards are generally not certified for end-product use, but I would like to confirm the official stance and request any available documentation or layout guidelines focused on EMI/EMC compliance.Thanks in advance for your support and guidance!
I have a basic FSBL Load and Run application on the NUCLEO-N657 that loads an application from flash into the internal SRAM of the MCU. Since the N6 has no internal flash, I would like to allocate a portion of the external flash memory to a Fat/FileX volume that the loaded application can use. What's the preferred method of creating a custom LevelX nor driver in Application for using the OSPI Flash? Should I use the EXTMem manager to abstract the read/writes, or should I integrate the XSPI2 driver directly into the custom LevelX nor controller? Current Attempt, using EXTMem_manager within custom nor controller: In my FSBL, I successfully init XSPI2, XSPIM, and the EXTMEM_Manager to load and run the application from flash. (Tutorial) However, once the application begins initialization, the app cannot re-init XSPI2 and times out with a busy error. If I bypass the init of XSPI2, then the EXTMEM manager times out trying to access the XSPI2 periph
I am trying to interface DHT22 sensor with STM32F411RE board. When initially I interfaced I was able to see data (i.e., Temp and Humidity) I am giving 3.3v power supply, data pin connected to PA0 ground and set clock frequency to 50MHZ using Internal oscillator. But when now I am trying to check values, I am not able to get values I haven't change anything in code still I am facing this issue. The code is stuck in while loop of DHT22_response function where it is waiting for pin to be low. I have attached coding file please can anyone help me regarding this??
On the STM32H7B3I-DK, several STMod+ signals share two GPIO options (e.g., PA11/PA0, PC3/PD5 for SPI2/USART2). Even when I configure only one of the shared pins as a simple GPIO (e.g., output or input with pull-up), it doesn’t function — no toggling, no input reading, and no internal pull-up.I've:Disabled conflicting peripherals (USB, SPI2, USART2, etc.)Verified GPIO clocks and init codeTried minimal code to toggle pinsConfirmed it’s not a code or hardware mistake on my sideIs there something board-specific or internal (e.g., STMod+ mux, hidden peripheral lock) that blocks these pins?Thanks,
Dear,We would on the STM32H7B0RBTx connecting 2 external QSPI RAM of APS6404L-3SQN-SN.Therefore we will use the 2 QSPI RAM chips in Multiplex mode, but we have only 1 NCS pin that we can configure.When we look in the application note AN5050 on page 27 we see that it is possible but with STM32Cube it isn't possible to configure the NCS pin on port 2.What we doing wrong here?How we should configure the other parameters of the QCTOSPI in STM32cube for the used RAM chip?OCTOSPI1OCTOSPI2:
we need to connect a camera to the STM32H745-Disco board. Our ultimate goal is to develop an application similar to the image_classification example from the STM32AI Model Zoo. Since we are unable to purchase another board, we would like to ask if it is possible to connect a camera module to the STM32H745-Disco for this purpose. Any guidance or suggestions would be greatly appreciated.
Hello,We are currently in the testing phase with the EVSPIN32G4 board using the various available software suites.After upgrading to the following latest versions:MC Workbench 6.3.2 → 6.4.0STM32CubeMX 6.??.? → 6.15.0STM32CubeG4 Firmware Package V1.6.0 → V1.6.1I created a project in MC Workbench for the EVSPIN32G4 board and generated the project for CubeMX.To my surprise, the microcontroller is no longer the correct one in CubeMX, even though it worked fine with the previous version.The evaluation board uses a 64-pin package, but the automatic configurator now selects a 100-pin package instead.I tried rolling back the software versions, but nothing seems to work: the package remains stuck on 100 pins.Do you have any idea what could be causing this issue?Thank you in advance.
Hi, Since there's a huge market for microcontrollers on boards such as the Arduino, like the ATMega and ATTiny, which are available in 20- or 40-pin DIPs, I was wondering if ST competes (could be with the 32bit or 8bit line) with those somehow. If so, what are the options of microcontrollers that compare with them?I'm asking because sometimes using an STM32 is overkill for certain projects, while some STM8 options are too restrictive. Having the flexibility for adding those TH components makes everything much easier when designing boards that do not necessarily need the complexity of manufacturing in SMD. Best,Alessandro
1.i flash the app in flash address 0x08010000 2.and flash the bootloader in flash address 0x08000003. use bootloader jump 0x08010000, but i can not found the app run(because led cannot Flicker)please see my project bootloader and app,how i can let it run normal ????
Hi all,I am looking into secure bootloader options for the STM32U5G9J-DK2 that support application updates using TF-M,please give me guide lines to achieve secure bootloader.
I am using NucleoH563ZI board with threadx and netxduo.I have the following code, it makes http requests.The first completes ok, but the other 2 has a problem where the dns returns with 0xA3, basically can't resolve the host url. With wireshark i noticed that the url somehow contains one additional character: "firestore.googleapis.comD" and with the second case: "firestore.googleapis.comH"calloc (or malloc, does not matter which i am using) returns a valid and good pointer then strcpy copies the url string.In debug I can see that the url is copied succesfully. But after the next calloc suddenly an excess character appears at the end of the string, thus the dns fails to resolve.It does not matter what I put between the strcpy and the calloc, it always fails the same way.if I compile the program with only a single request, then it sometimes works. Any idea what is going on? //get public IP char* public_ip_str = calloc(30, 1); if(public_ip_str == NULL) { Error_Handler();}
Hello,I want to use the PB6 pin as an external interrupt input. When the PB6 pin is triggered, the program enters the low-power stop mode from the normal operation mode. When it is triggered again, the program enters the normal operation mode from the low-power stop mode. According to the above, the test found that after the program enters the low-power mode, it cannot return to the normal operation mode again. Does anyone have experience in this area and can provide me with a solution?
Hi STM Community,I am using a custom board based on the STM32F407VGT6 MCU. Currently, I’m not getting accurate RTC time when using the internal LSI clock (the drift is too high for my application). So I’ve decided to use an external 32.768 kHz crystal oscillator connected to PC14 (OSC32_IN) and PC15 (OSC32_OUT) as recommended.Could you please clarify: What are the exact hardware requirements (crystal specs, load capacitors, recommended ESR, drive level)? How should I calculate and place the load capacitors to match the crystal? Are there any layout best practices (trace length, shielding, keep-out) to get stable LSE operation? Any recommended crystal part numbers that work well with STM32F4? Any common issues or troubleshooting tips if the LSE does not start?
I have read some posts about this topic already but unclear if this works or not. I used the STMCubeMX to create a project using FreeRTOS and USB Device CDC (USB-Serial) together and some LED GPIO's.I can only get one or the other to work, but never at the same time. I have tried adjusting the memory settings heap/stack as suggested in some of the forums but that didn't help. Just wanted to check if anyone has this working or if I should switch to a different scheduler/OS? I am using a STM32F303RE; any help would be appreciated. Thank you
Hi there,I'm curious how other folks handle this situation:Presently, I have a number of screens that all complete some hardware process (ex. move motors) and then navigate back to the Home screen. I'm introducing some additional logic that, across all such screens, would add a conditional to determine what next screen to display (ex. Critical Battery screen if battery is low, ... , with the Home screen being the 'else' option should none of the other conditions be satisfied).I don't want to duplicate and maintain this logic across all of the screens - where is a good place to put this? Thanks,Julia
My voltage sensor output shows 0v when actually the load is 222v. Please help me with the code logic.My current sensor ACS712 30A works well, but voltage sensor ZMPT101B is not showing correct results
Hai. Currently we are working in a project, for that we require AEC Q-100 Products. In that we need STM32F405VGT6 in Automotive Grade. AEC Q-100
This is driving me crazy, whay timers on STM32 are so complicated and no normal information / datasheets etc, how to use.Timer2 is working (external clock), Timer interrupt (TIM_IT_UPDATE) also working, but not capture interrupt. And signal is also present on capture pin, when I manually write capturing code without timer inside main() thread, then it's working. And if I check premade HAL code, there is no timer starting function to enable capture interrupt, just only update interrupt.So my initial code:static void MX_TIM2_Init(void) { /* USER CODE BEGIN TIM2_Init 0 */ /* USER CODE END TIM2_Init 0 */ TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_IC_InitTypeDef sConfigIC = {0}; /* USER CODE BEGIN TIM2_Init 1 */ /* USER CODE END TIM2_Init 1 */ htim2.Instance = TIM2; htim2.Init.Prescaler = 0; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 4294967295; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; h
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.