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’ve been struggling with this for several days and could really use some guidance. I’m working on a project with the Nucleo-H743ZI, using LwIP’s built-in MQTT client over Ethernet. The basic MQTT setup on port 1883 works perfectly — I can publish and subscribe without any issues. But now I need to secure the connection with TLS (MQTTS), and I’m stuck. I haven’t been able to find a clear example or step-by-step guide to make this work. Here’s what I’m trying to figure out: How to run MQTT over TLS using LwIP + mbedTLS. How to load and manage certificates (CA/root, and possibly client certs). How to wrap or replace the default TCP socket used by the LwIP MQTT client with a secure TLS layer. If anyone has done this before, or has a working example project or even just the key integration steps, I’d really appreciate your help. Thanks in advance
Hello Using a STM32U5G9NJHxQ.Using a 646x480 1byte per pixel monochrome Dcmi camera --> 310080 bytes --> 77520 words (32 bits) --> according to AN5020 6.4.8 this means Double buffer mode for medium resolutions, continuous capture in my case.Based on DCMI_ContinousCap_EmbeddedSynchMode example, I made some changes to try the linked list and double buffer.Please see txt file attached explaining my testing.Please, is there any official example from Stm on how to configure stm32u5g9 Dcmi with linked list and double buffer ? Regards.
Good morning, I am trying to debug an STM32H573II with ETM, but I cannot get it to enter that mode.Debugging without trace with SWD works correctly. I have used this environment: - uVision 5.42- ARM Compiler 6.21- STM32CubeMx 6.14.1 I have performed the following checks: - MCU Non_Secure mode. Avoid conflicts.- Enter debug mode with SWD.- Verified pinout.- Checked that JTrace - CortexM works ETM with other MCUs (STM32H7, STM32F4, tested)- Generate an empty project with STM32CubeMx, just to enter debug mode with trace The JTrace log indicates a problem with the reset, but there is no problem if I debug with SWD and SWD+SWO. Can you help me, please?Has anyone had problems with any H5?
I try to create vehicle GUI on STM32U5G9J-DK2, but I can't find CAN pin to send data out from board to another node in CAN bus.
I use the STM32CubeIDE Version: 1.18.1 and the stm32g030k8.I have a hardware that uses a firmware. This firmware correctly returns the values of the ADC. The ADC is linked to a DMA. Channel 4 == 2545 (this is a voltage divisor) 12.5 voltsChannel 10 == 1 (this is connected to a current shunt resistor) No current, then almost 0. Channel Temperature == 929Channel Vreference == 1506 I develop a new firmware with the very same hardware (not just same design but same device). I apply debug optimization. I use ADC1 with the DMA, first I use the ioc file to set up the ADC and then I copy the MX_ADC1_Initfrom the other stm32cubeide project. Yet It does not return the same value from the external pins. Why is that? Thanks for all.
Hello, so I was originally using printf with uart3, and that seemed to work fine. The characters were being printed as expected on a PuTTY terminal that I was using. I was using the following code:/* USER CODE BEGIN PV */ UART_HandleTypeDef *uartHandlerDebug = &huart3; // UART bank used for communication with computer for debugging /* USER CODE END PV */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ setvbuf(stdout, NULL, _IONBF, 0); //! Disables buffering for stdout HAL_Delay(1000); // Allow previous code to be erased /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_USART3_UART_In
Good morning allIm trying to follow the https://github.com/actility/nucleo-stm32wl55jc-fuotav1?tab=readme-ov-file#readme in order to simulate a firmware update on my STM32WLJC1 nucleo board but i am running into a something strange. All the projects build successfully but the first project to build, namely 1_image_SECoreBin builds with 6 warnings. The rest of the projects , 1_image_BFU and LoRwaWAN_End_Node buid with no warnings. When I try and program this to my board, the old firmware remains on the device even after supposedly being successful. My assumption is that it is due to these warnings. What should i do in order to stop these warnings and allow a successful upload. Attached you will find the outcome of the first build. In function 'determine_block_state', inlined from 'determine_block_state' at C:/GitClones/Actilitity_FUOTA/nucleo-stm32wl55jc-fuotav1/Middlewares/ST/STM32_Key_Management_Services/Modules/kms_nvm_storage.c:721:28, inline
Setup: NUCLEO-H503RB with X-NUCLEO-IKS4A1, using STM32CubeIDE. To familiarize myself with I3C, I am playing around in this setup and have some source code which causes I3C interaction between the controller (Nucleo board) and two targets (daughter board). I have a logic analyzer attached. What I cannot get to work is the "direct RSTACT", i.e. configuring one of the two targets to reset itself. After everything has come up, I expect the targets' default reset action to be "1", i.e. I3C peripheral reset. After successful dynamic address assignment to both targets, I send a direct RSTACT (CCC 0x9A) to one target, configuring the reset action to be "0" (no reset), followed by the reset pattern. I would expect the other target to lose its dynamically assigned address and respond to a subsequent ENTDAA. But no one responds. Note that in my screenshots, the decoder is set to I2C rather than I3C (not supported) but it's still helpful. Tell target with dynamic address 70 to not reset when
Hello,I am currently using the NUCLEO-WB15CC to test STM32CubeMonitor-RF.I imported the BLE_TransparentMode example to be able to use Monitor RF. Everything works perfectly when using the default USART1 interface.I also tested the communication using an FTDI cable instead of the NUCLEO’s embedded ST-Link virtual COM port (by removing the RX and TX jumpers), and the FTDI connection works fine with USART1.For my project, I would like to use LPUART1 instead of USART1 to communicate with Monitor RF. CubeIDE seems to allow switching between UART instances easily. I configured LPUART1 in the same way as USART1, using DMA and the same settings. The configuration compiles and programs correctly, and I have successfully flashed the firmware.I am using the same FTDI cable, connected to the connect LPUART1 pins (RX: PA3, TX: PB5), but I am unable to establish any connection with CubeMonitor-RF.(Of course, I double-checked the RX/TX wiring and tried swapping them just in case.)If I use (RX: PA3, T
I'm trying to build a STM32U5 (THREADX_ARCH = cortex_m33) project that use FileX (https://github.com/STMicroelectronics/stm32-mw-filex) with CMake.I encounter an error that say "FileX/ports/cortex_m33/gnu" is not an existing directory.Why Cortex m33 is not supported by FileX ?
Hello,I have a STM32H75x design and suffer from read errors in DDR timing, no matter if run at 50MHz or slower.It seems that the data hold time of 1ns the H7 is violated. The data output hold time of the SPI NOR MX25L12845 flash is 1ns, which seems to be too short for H7. Due to the fact, that the clock edge takes also ca. 0.5-1ns, the timing should be safe in my opinion. Nevertheless, a read failure arises if the drive strength of the flash is lower than 45Ohm and GPIO pin speed is higher than MEDIUM.The H7 evaluation boards are equipped with Micron flash with 1.5ns and it seems that this value is fine for H7.Therefore I doubt the data input hold time of 1ns@3.3V in table 181:In my opion, this value should be longer than 1ns. Any user experience?Thank you,Jochen
when running the QSPI_Executeinplace example code on the stm32f769i_eval board,the program enters HardFault_handler() after executing GpioToggle().i just remove the QSPI_DummyCyclesCfg(),in GpioToggle() the GPIO Not Taking effect,so How can I solve this problem? thanks
Hi,I am currently using the following microcontroller (STM32F100C8T6B) in my design. I am using the STM32CubeIDE and I trying to build the project, but I am getting the following compiler errors from the "core_cm3.c" fileError: registers may not be the same -- strexb r3,r2,[r3]' Error: registers may not be the same -- strexh r3,r2,[r3]'Any help would be greatly appreciatedThanks,WJ This is the version for core_cm2.c/**************************************************************************//*** @file core_cm3.c* @brief CMSIS Cortex-M3 Core Peripheral Access Layer Source File* @version V1.30* @date 30. October 2009** @note* Copyright (C) 2009 ARM Limited. All rights reserved. Below is where the error in the file/*** @brief STR Exclusive (8 bit)** @param value value to store* @param *addr address pointer* @return successful / failed** Exclusive STR command for 8 bit values*/uint32_t __STREXB(uint8_t value, uint8_t *addr){uint32_t result=0;// register uint32_t result asm ("r2");
I’m trying to interface the onboard ISM43362 Wi-Fi module of the STM32BL475 using STM32CubeIDE, but I couldn't find any proper resources or example code online.
Hello, I have been modifying the OEMUROT_Boot application and associated build scripts in ROT provisioning to complement our custom firmware project. (See my previous post on this topic for details). This is for the STM32N6, using the DK discovery kit.I have gotten to the point where the builds all seem to work, I program the external memory on the DK board with the bootloader and my custom firmware, and attempt to launch.The OEMUROT_Boot traces do show up in Tera Term:[INF] TAMPER Activated [INF] Starting bootloader OEMuROT 00000001 [INF] Primary image: magic=bad, swap_type=0x3, copy_done=0x2, image_ok=0x2 [INF] Scratch: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3 [INF] Boot source: none [INF] Swap type: perm [INF] 1, 7e, cf, 18, ef, 4e , 89 ,a7, [INF] f7, ac, f6, 5a, 4f, 91 , ac ,d5, [INF] Image version 0 : 01000000 [INF] Counter 0 get 0x0 [INF] verify counter 0 0 0 [INF] counter 0 : ok [INF] verify sig key id 0 [INF] checking public key 46 5b [INF] verifying signatu
Hi all, I'm using ThreadX with NetX Duo and running a Modbus TCP server on an STM32 platform. The system works fine under normal conditions, but I encounter a hang when the following sequence occurs: A Modbus TCP client is actively communicating with the board. The client is closed or a Telnet session is opened. The client reconnects — at this point, the system hangs. From the ThreadX-aware debugger: Main Ip instance and Packet Monitor Thread are suspended, waiting on a mutex. The mutex is owned by my App Modbus TCP Thread, even though I don’t explicitly use any mutexes. It seems like the NetX internal mutex is being held too long. Can I trace or monitor the internal NetX mutex usage to better understand where the contention is happening?
I expect to re4ceive my 67W61M1 expansion board very soon. However, in looking at the CubeMX pack for the device I do not see a driver for STM32F4xx devices. Is this planned or are we on our own porting using the Pack examples?
Hello All, Need your support regarding flushing of RX FIFO buffer in STM32H747.I am using a barcode reader which is connected to USB HS port . And i want to clear the received data from the buffer at particular instance. And after that instance want to read the buffer again. Can anyone please suggest how can i do it. I have tried multiple method ,and i have mentioned all of them below:- 1. Using Inbuild function in STM32 USB Library file. USB_FlushRxFifo(hhcd_USB_OTG_HS.Instance); 2.Masking the RXFLVLM bit from GINTMSK Register. hhcd_USB_OTG_HS.Instance->GINTMSK &=~ ((0x1UL << (4U))); 3.Disabling the GINTMSK bit in GAHBCFG Register hhcd_USB_OTG_HS.Instance->GAHBCFG &=~ ((0x1UL << (0U))); 4. Setting Core soft reset bit in GRSTCTL hhcd_USB_OTG_HS.Instance->GRSTCTL |= USB_OTG_GRSTCTL_CSRST; 5. Deiniting & initing the USB device using inbuild functions from STM32. USBH_DeInit(&hUSBHostHS); USBH_Init(&h
Hello,I am using the TouchGFX designer to create project and source files , afterward import the project to CubeIDE.I am using TouchGFX 4.23.2 and CubeIDE 14.1 .I've seen many question regards this topic , but surprisingly none of the advices solves this very basic problem for me.After creating the sources in TouchGFX, I am opening the CubeIDE workspace in the project root (not inside CubeIDE folder.From that location I've tried the following:1. File -> Open Project From File SYstem -> Directory: Show two projects. One of the called as the TouchGFX project and the othe called CubeIDE. None of them is exports nothing to the CubeIDE.2. Import Project -> Existing Project Into Workspace: Import a project that *always* called CubeIDE, although in .project file there is another name. In addition the .ioc file has another name. Renaming the files currently did not succeed, therefor I failed to create 'operational'
Dear Sirs, I have been developing an Application that runs in the STM32WB5 for a while, the BLE works fine, and it is integrated with a mobile app fine, but I need to communicate it with a coprocessor (STM32H750). For this mean, I would like to use UART (Asyncronous, 115200, 8 bit, no parity...) with DMA. My implementation looks like:- One task registered in the Sequencer that runs this piece of code:if (HAL_UART_Transmit_DMA(&huart1, &temp.data[0], temp.data_length) != HAL_OK) { restoreElement(((app_context_t*)context)->sm_queue); } else { uart1_tx_busy = 1; }The data and the data_length are correct, and stored in the global structure temp (so those are not flushed after the function finishes).In addition to that, the HAL_UART_Transmit_DMA() returns HAL_OK and so the uart1_tx_busy flag is setted.- The callback is called:void HAL_UART_TxCpltCallback(UART_HandleTypeDef *UartHandle) { if (UartHandle->Instance == USART1) { uart1_tx_busy = 0; } }and the
Hello,On CubeMX v6.14.1 and X-CUBE-AZRTOS-WB v6.2.0, I am not able to add a USB record/playback device. This means that I cannot generate USB Device descriptors using CubeMX. Why is this not possible yet? What are the alternatives?Best regards,Navin
Hello Experts,I'm using the STM32L476 in one of my projects, with the main system powered at 3.3V (VDD), and a 1.55V coin cell (Murata SR621SW) connected to VBAT for RTC backup.The tamper pin (PC13) is connected to a normally closed (NC) anti-tamper switch, which means the circuit is only open when the enclosure is physically closed. I've configured the tamper detection in level detection mode with the following settings: Sampling frequency: 1 Hz Precharge duration: 8 cycles External capacitor: 1.8 nF Trigger on: Low levelMy concern is about the behavior of the RTC and tamper detection circuitry during a power-down event — for instance, due to a brownout or complete power loss. I’ve set the Brown-Out Reset (BOR) level to Level 4.In such a scenario, when VDD drops and the RTC switches over to VBAT (1.55V), is there any risk of a false tamper detection being triggered because of the voltage transition? I want to make sure the switch from VDD to VBAT doesn't inadv
I've been getting some weird hard faults on an STM32U073RCT, which I've tracked down to the following conditions- In stop mode, waiting on an interrupt.- Debugging, with debug in stop mode enabled.- Interrupts are disabled.- An RTC interrupt occurs.When this happens, I get a hard fault a few instructions after the WFI - the exact distance seems to vary based on the instruction's offset. Single stepping though them does not cause a fault.I've attached a minimal cube ide demo project to replicate the issue. It requires a board with a crystal to run the RTC.Set two breakpoints, one at stm32u0xx_it.c:85 (for hard faults), one at main.c:126 (on success). Only the hard fault gets hit. Examining the stack shows the previous program counter was 0x8000248, which points to one of the NOPs.A few things I've found which avoid the issue, and hit the other breakpoint:- Uncomment the "DBGMCU->CR = 0" line - assuming your debugger doesn't time out- Commenting out setting sleep deep- Commenting out
Hi,I am testing an application between multiple MCUs, I have an H573, an F756 and an F439.I am testing multiple things at a time, so the code generation is helping me.In the H573 I have the flag for using the webserver without FileX, and it will define "NX_WEB_HTTP_NO_FILEX"On the F756 I don't have that. I can define it manually in the file "nx_web_http_server.h", but at code regeneration it will disappear.I don't know where to define it manually, everywhere I define it is deleted at code generation or is not defined in time.Thanks for any helpcoso2
Do I understand the datasheet correctly when I believe the internal 2.1v reference is something internal, and the AD is still operating within VCC/3.3v as upper limit? Copilot suggested this: // Enable ADC1 and configure itRCC->APB2ENR |= RCC_APB2ENR_ADC1EN; // Enable ADC1 clockADC1->CR2 |= ADC_CR2_ADON; // Turn on ADC1// Configure ADC1 to use the internal reference voltage (1.2V)ADC1->CR2 |= ADC_CR2_TSVREFE; // Enable internal reference voltageADC1->SMPR2 |= ADC_SMPR2_SMP0; // Set sample time for channel 0 (PA0)// Calibrate ADC1ADC1->CR2 |= ADC_CR2_CAL; // Start calibrationwhile (ADC1->CR2 & ADC_CR2_CAL); // Wait for calibration to complete Calibrate/wait for calibration ? - do I actually use the internal VREF, and the max input is corrected for up to 3.3v ?
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.