Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Hi, I forgot to add the pins in my STM cube project and flashed my MCU. Now I am not able to connect to my MCU. I am working with the STMF103RCT6 MCU. I tried giving 3.3V to the boot pin and connect a UART to serial converter to my board. But it still didn't connect with cube programmer. I am attaching the screenshot of the error for your reference. Please advise what to do.
Hi, I'd like to have some feedback about the use of XCUBE-EEPROM library on STM32H563.Is it functionnal and reliable ? After digging into the code, i have few questions: MPU_init() In the MPU_init() function there's a configuration with no explanation ? /********************************************************************************/ ** Initializes and configures the Region and the memory to be protected */ MPU_InitStruct.Number = MPU_REGION_NUMBER1; MPU_InitStruct.BaseAddress = 0x08FFF800; MPU_InitStruct.LimitAddress = 0x08FFF80F; MPU_InitStruct.AccessPermission = MPU_REGION_ALL_RO; HAL_MPU_ConfigRegion(&MPU_InitStruct); /********************************************************************************/ num_of_edata_page With the default settings, in the OB_init() function according to me there's a problem with the computation of num_of_edata_page. Indeed in the code below, after each reset the HAL_FLASHEx_OBProgram() is always called. /*
There's a serious bug in G4's hal(version 1.6.1) library in spi dma function.The problem is:1, user calls HAL_SPI_TransmitReceive_DMA2, after spi transmission finished, HAL will call HAL_SPI_TxRxCpltCallback3, user calls HAL_SPI_Receive_DMA inside HAL_SPI_TxRxCpltCallback, and will fail in a chance.The reason is:1, HAL_SPI_TransmitReceive_DMA will start both Rx and Tx dma, and after transmission complete, HAL_DMA_IRQHandler will be triggered to set dma handler's state to ready and unlock dma handler;2, If Rx dma complete first and trigger HAL_SPI_TxRxCpltCallback, user calls HAL_SPI_Receive_DMA in the callback, don't know why HAL will still start Tx dma which is still locked, that cause function to fail.3, if Tx dma complete first, the scenario above will be fine. Unfortunately, these 2 simultaneously started dma(Rx & Tx) seem to complete in a random sequence (most of time Tx dma complete first) in my observation, in a rare case Rx dma will complete fi
Hi, Dear STM motor control experts: I am conducting experiments on the BLDC HSO project, and during project testing, the code in the SPD_init() function runs to IMPEDCORR_setParams(pHandle->pImpedCorr, &ImpedCorr_params_M1); No problem, but run the function IMPEDCORR_setRs_si(pHandle->pImpedCorr, flashParams->motor.rs); A hardware failure occurred, and the code jumps to HardFault.Handler(). Because the function is in a lib file, it cannot be analyzed. Please help analyze the cause.Thanks!Best regards.
The way the ref manual states this makes it sound like, if, before you start a counter, you "manually" set the counter to a value higher than the period value, it will NOT start counting / reset back to zero once the timer is actually enabled. However, when I try to do this, as soon as I enable the timer it doesn't function this way.The Timer has no reset bits set in the RST register; It's in continuous mode, and the period value is set to 1000. The counter value is manually set to 19999 before it's enabled. Once enabled, the timer begins counting right away, without an external reset event to trigger it. It's like setting the counter above the period value did nothing. Am I misunderstanding what I'm reading, or is there something else I'm missing here? Is this "feature" only applicable to single shot modes or something? (unsure what the purpose would be there) Thank you.
Good morning all!I'm using the stm32h573RI chip with the packaging of LQFP64. I'm trying to setup pin PB5 and PB6 for UART5 using the CubeMX, however it's not working. I was reviewing the datasheet and the Alternate function it states is different than what CubeMX has. CubeMX has both PB5/6 with an alternative function of 14, but in the Datasheet in table 15 page 103 it states it at AF12. (when counting from 0). However, in Table 16 page 119 it does have both listed with AF14. Which is right? and what's the difference between table 15 and 16, when would I use the other and vice-verse?sources: datasheet: Datasheet - STM32H573xx - Arm<Sup>®</Sup> Cortex<Sup>®</Sup>-M33 32-bit MCU + TrustZone<Sup>®</Sup> + FPU, 375 DMIPS, 250 MHz, 2-Mbyte flash memory, 640-Kbyte RAM, cryptography
Hello,I am planning to build a cellular application using EC200 as my modem. I prefer to use in modem stack using AT commands due to memory constraint of my MCU. I have come across X Cube Cellular where it is mentioned this setting can be changed using compilation flag as per the release notes. Kindly guide me to achieve this. Thank you. Regards.
Hi everyone, I'm having an issue with a brand new ST-Link V3 and would appreciate a quick sanity check before I return it.Here's the situation:* The device is not detected by my PC at all (it does not appear in Device Manager).* I have already confirmed my USB-C data cable is working correctly.* The red power LED on the ST-Link is extremely faint and dim.* I also tested it on a second computer, and the result was exactly the same.Since the LED is so dim and it fails on multiple PCs, I'm confident this is a hardware fault (DOA). Has anyone seen this specific issue before? I've attached a photo of the dim LED. Thanks for any input!
Hi, It works, apparently a different microSd card works. however, it is strange that, DATALOG2 could write into the card. May i know how shall i perform sd card format function or what to fill up in the function? Follow-up of the the topic below: Solved: Re: Standalone FileX SDIO SD Card Initializing err... - STMicroelectronics Community
Hello there, I was working on TouchGFX and when i tried to build my code i got error: no declaration matches 'bool TouchGFXHAL::blockCopy(void*, const void*, uint32_t) and same for endFrame and beginFrame. But i couldn't solve the problem. Here is the part from TouchGFXHAL.cpp file.bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes){return TouchGFXGeneratedHAL::blockCopy(dest, src, numBytes);}/*** Configures the interrupts relevant for TouchGFX. This primarily entails setting* the interrupt priorities for the DMA and LCD interrupts.*/void TouchGFXHAL::configureInterrupts(){// Calling parent implementation of configureInterrupts().//// To overwrite the generated implementation, omit call to parent function// and implemented needed functionality here.TouchGFXGeneratedHAL::configureInterrupts();}/*** Used for enabling interrupts set in configureInterrupts()*/void TouchGFXHAL::enableInterrupts(){// Calling parent implementation
I am using the stm32wb55rev6 boards for the ble.What should be the configuration to commuicate between the 2 stm32wb55rev6 boards?i am using the trasparent mode in 1 stm32wb55rev6 board and what should be the configuration on the other board to scan and connect the other board.if there is any document related to this please share here.
There is no test.txt file in my USB drive after the example is run.The board sends this log**** USB OTG HS Dual_Class Host **** USB Host library started. Starting Application Connect your HID or MSC Device USB Device Enumeration FailureTried to attach the USB drive to both USB connectors.The last message is sent about 1.5s after the previous ones.Where can be an issue?
Hello, I'm currently testing a bootloader-XIP application architecture on a NUCLEO-H7S3L8 board. The MRAM (XSPI2) test works perfectly in the bootloader, but when I move the same code to the XIP application, the system hangs during XSPI2 initialization. I would appreciate any advice on this issue. System Environment MCU: STM32H7S3L8 Board: NUCLEO-H7S3L8 IDE: STM32CubeIDE v1.19.0 Firmware: STM32Cube_FW_H7RS_V1.2.0 Project Goal and Progress I have successfully completed all communication mode tests for the MRAM (XSPI2) in the bootloader (exercise_Boot). The bootloader runs from internal flash, and through mram_spi_test.c, it has fully tested the MRAM connected to XSPI2 in all SDR/DDR and SPI/DSPI/QSPI modes, confirming perfect operation. I have migrated the verified test code to the XIP application (exercise_Appli). The bootloader loads the application to the external NOR flash (connected to XSPI1) and jumps to it in XIP mode. I have successfully confirmed that the
My Feedback on STM32WB Series Flash ArchitectureDear STMicroelectronics Team,As an experienced developer working with the STM32WB series, I must voice a critical concern about its current flash memory architecture.By placing both the Cortex‑M4 application and the Cortex‑M0+ wireless stack into a single shared internal flash, divided only by secure boundaries, you have created avoidable complexity and limitations for developers and end‑users alike. This design forces us to contend with:Hard‑coded secure boundaries (SFSA/SBRV) and OB flags (DDS, C2OPT) that can only be altered via FUS or System Memory, making recovery unnecessarily difficult.Loss of usable program space for the M4 when the wireless stack is present, even if the reserved region is unused.Risk of total application downtime when the secure portion becomes corrupted or blocked, as both cores depend on the same physical array.Debug and update processes that are far more fragile than they should be, especially in product
Hi all,I'm working with an rak3171 build with an STM32WLE5CC, I've write a python script for flashing my firmware over uart using usart ST bootloder, everything works well, but when flash is done, I'd like to reset my bord for running the new firmware.I've use this ST AN NOTE and if you look at page 18, ST explain GO command, I'm trying to use but without success, my board never reset, so my question is, am I understand well, if I use GO command should I'm able to reset my board? Is there a ST example somewhere any helps will be good :) EDIT: I'ma able to send GO command and FW addr, bootloader ACK me (gor 0x21 and addr, but after that nothing happen, my firmware doesn't run..thanks
Hi,Can someone help me how to use MbedTLS to my TCP Client Example. I haven't worked before . please tell me step by step. How can I proceed.I'm attaching the source code for the reference. Thanks,Harshitha R
We have a design on an ST32G431 based on the B-G431B-ESC eval board that we are trying to migrate to an STSPIN32G4. However the tools appear to not let us set up the same 3-shunt, internal op-amp, internal PGA, differential configuration on STSPIN. There seems to be a problem with the 3rd op-amp and supporting differential mode.All works fine with the B-G431B-ESC based design but if I create a board based on STSPIN the workbench generates errors.RCSConnect: ThreeShunt_RawCurrents_Differential_InternalGain Global NO OPAMP for Phase VWe see the same errors if we load the EVLSPIN32G4-ACT board in the workbench and hit "go to summary". The difference with the EVL board is that it has a number of different variants so will still load but doesn't offer the "3-shunt + differential" option even though it is in the board config file.The pins appear to be available and as far as we understand it the STSPIN is based on the same ST32G431 die so if it works on a ST32G431 it should work on an STSPIN
Hi everyone,I am trying to generate sinewave using PWM mode of microcontroller.I am using Discovery Board having STM32F407 microcontroller. System clock and Timer clock are of 8MhzI am using two timers Timer1 for High Frequency switching (500Hz) and Timer2 for Low Frequency switching (50Hz).waveforms I am getting are OK but there is one issue, after every 7 cycles I am getting an extra PWM sample in my output.I don't know why it is so. I am attaching image of the output and code. may be there is a minor mistake which I am doing but not sure. can you guys let me know if there is an issue uint16_t sineTable[SINE_TABLE_SIZE] = {400,635,780,780,635,400,165,20,20,165}; // Initializing Timer1 void MX_TIM1_Init(void) { TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_OC_InitTypeDef sConfigOC = {0}; TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0}; htim1.Instance = TIM1; htim1.Init.Prescaler = PRESCALER_REQUIRED; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; htim
Hello and good day. I am doing a project of running a motor using 6-Step with Hall Sensor.I am facing an Overcurrent issue while using Motor Pilot V6.4 in 6-Step + Hall Sensor mode. In MC Workbench, the current limit is set to 15A but the Nominal Current is shown as 2.16A in the Motor Pilot GUI. No matter what I do in MC Workbench, the Nominal Current doesn't change and always shows as 2.16A. Consequently, I can't start the motor as it there is always Over Current fault as the motor needs more than 2.16 to start.I know that it's not a limitation of my Power Board as it is rated at 20A. In MC Workbench, it's clearly stated 15 Apk is set and is within specification of Power Board.The strange this is, when I try FOC + Hall Sensor mode, this doesn't happen and the Motor Pilot GUI is showing the correct Nominal Current limit (15A) below. Somehow, this issue only happens in 6-Step + Hall Sensor mode.May I know why this Nominal Current setting is different between FOC
hello , T。T I’m developing a GUI using TouchGFX on the STM32F469I-DISCO board.In the handleTickEvent() function, I add 5 points to a dynamic data graph each time it is called. However, when doing this, the frequency of handleTickEvent() drops significantly, and the display performance becomes very poor.In comparison, an older project based on the demo uses MIPI DSI in command mode and configures LTDC as 480×200×4, and it performs noticeably better than my current setup where LTDC is configured as 480×800 and DSI is set to video mode.The scan is 480 * 800 .static void MX_LTDC_Init(void) { /* USER CODE BEGIN LTDC_Init 0 */ /* USER CODE END LTDC_Init 0 */ LTDC_LayerCfgTypeDef pLayerCfg = {0}; /* USER CODE BEGIN LTDC_Init 1 */ /* USER CODE END LTDC_Init 1 */ hltdc.Instance = LTDC; hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AH; hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AH; hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; hltdc.Init.PCPolarity = LTDC_PCPO
i am usng stm32wb55rev6 microcontroller for my project. I updated the firmware upgrade service to the latest version of the v2.1.0.0 and updated the stack version to the latest version of v1.23.0.3.Still i am not able to connect to the stm32cube monitor rf. Is there any thing i have to update to connect to the rf?i am not able to see the device in the st ble toolbox also.i have watched the youtube series regarding the stm32wb55.still no use.
Hi, I am working in STM32G491, currently working on MCU firmware upgrade part. I have a doubt regarding the output pins. Currently we have SET 2 GPIOs to high. That is power enable for another device say A. From another external device B, it is controlling bootpin and nrst pin. My doubt is if I make mcu to bootmode does that GPIO output value changes? The situatuion is during device running, I make 2 gpio high. From another device mcu got entered to bootmode. Does the output pin change the high value?
The Cube-AZRTOS bundles cmsis_os2.c implementation has potential NULL pointer dereferences. There are many lines of the form:if (( attr->cm_mem == NULL) || (attr == NULL))in code that attempts to recover and de-allocate memory from a "create" call that failed. The order of comparisons should be reversed:if ((attr == NULL) || (attr->cb_mem == NULL))This happens for different structure members, not just the cb_mem.I've checked the F4 version 1.1 ZIP file and github repo, as well as the github H7 repo and they both have this issue. I suspect all versions do.
Hi there,On a STM32WB55RG, I would like to write a routine in my firmware to upgrade the wireless firmware through the FUS mailbox.I'm able to exchange request/response through the mailbox, for instance, at startup FUS_GET_STATE returns FUS_STATE_IDLE, no error. Cool.I load a wireless firmware at the address indicated in the Release Notes (for instance stm32wb5x_BLE_HCILayer_fw.bin at 0x080E1000), however when I run FUS_FW_UPGRADE, the chip reset as expected and right after this reset, theFUS state value is 0x10; FUS_STATE_FW_UPGRD_ONGOING (according to AN5185)FUS state error value is 0x06; FUS_IMAGE_ERSERROR (still according to AN5185)Having no clue about the routine inside FUS firmware, could you help me to identify what's the root cause behind that. Btw, I have the same issue if I want to upgrade the FUS firmware itself.While this description might lack some details, it's mainly because I don't know what to look for in registers or options to solve
Hi, I using STM32H745I-Disco board and trying to do intercomunication using OpenAMP. But my generated code is compile sucessfully but it not working in coreM4 it stucking in the below function /* create a endpoint for rmpsg communication */ int32_t status = OPENAMP_create_endpoint(&rp_endpoint, RPMSG_CORE_M4_NAME, RPMSG_ADDR_ANY, rpmsg_recv_callback, NULL); if (status < 0) { Error_Handler(); } I have tried the example code Openamp_ping_pong example for STM32745I-Disco board, which is Working fine. But my generated code is not working. I have go through the already mention same issues in ST forum which link given belowhttps://community.st.com/t5/stm32cubemx-mcus/openamp-issue-on-stm32h745/m-p/794133?search-action-id=67994286745&search-result-uid=794133 and I have go through the OpenAMP document also which link mention below https://www.st.com/resource/en/application_note/an5617-stm32h745755-and-stm32h747757-lines-interprocessor-communications-stmicroelect
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.