Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I am working on a project using STM32N6570-DK. I now have a big problem with (1) how to run my code in a Flash and (2) how to connect the ST-LINK to stm32cube ide.I created a project “AYA” in cube IDE . Cube IDE asked if it is FSBL project or application project. I chose application, and all my work after are done within AYA_appliI finished the coding and testing from debug version to release version. Both with ST-LINK connected (with is integrated in the DK), and boot1/boot2 keys are set =00. My code runs correctly.TROUBLES came after the FLASH: I used STM32CubeProgrammer to write my .bin file to the -dk board. boot0/boot1=11,I chose this external bootloader (MX66UW1G45G_STM32N6570-DK ) Erasing the full chipWrite my code (start address =0x07000000) to the flash and “verify successfully”Now, I switch boot0/boot1=00, and press the RESET button. However, NOTHING happens‼To make things WORSE: I switched back to the IDE environment, it says “Target unknown error 32 &nb
Hi, @krastThe readme for the VENC_SDCard_ThreadX examplehttps://github.com/STMicroelectronics/STM32CubeN6/blob/main/Projects/STM32N6570-DK/Applications/VENC/VENC_SDCard_ThreadX/README.mdstates:"The output is raw since no file system is used for now"but the first slide of the STM32N6 demo workshop - 11 Video encoder (VENC) in practice workshophttps://www.youtube.com/watch?v=25lEF4GgN8Msays that this example uses a FAT32 file system.I was wondering if there might be an error in the readme where it states "The output is raw since no file system is used for now"?Thank you very much for these examples - they're very valuable.Will
Hello,I'm trying to test FW update over I2C using RPI as host and STM32L432 nucleo board as slave on port I2C1 which according AN2606 (table 152) should be available. I've connected 4.7k pullups on PA6 + PA7 pins and perform NRST to 0 and BOOT0 to 1 and remove NRST pin. In this setup I perform i2cdetect on RPI and I'm getting i2c transfer timeouts for all addresses. When reset STM32 32 board i2cdetect command on RPI return empty table. Is that setup feasible or am I doing something wrong? Thanks.
Hello,I am currently working on connecting an MT9M001 camera module to the STM32F429I-Discovery board and displaying the captured image on a PC.During this process, I am testing PWM output on the board, but I am experiencing an issue where the output voltage does not swing between 0 V and 3.3 V as expected.EnvironmentBoard: STM32F429I-DiscoveryIDE / Firmware: STM32CubeIDE + HAL (STM32CubeF4 package)Pin used: PB0 / TIM3_CH3 (Alternate Function, Push-Pull, no pull-up/down)PWM: Generated with TIM3 (frequency and duty cycle shown in attached code/images)Measurement: Oscilloscope (×10 probe, GND connected to board GND)IssueThe PWM waveform output from PB0 shows the following problems:The low level does not go down to 0 VThe high level does not reach 3.3 VBefore switching to PB0, I was using PA8 (TIM1_CH1), but I observed the same issue—the voltage could not drop to 0 V.I received advice that PA8 might be loaded by other on-board circuitry,so I moved the PWM output to PB0 (TIM3_CH3).However,
I have an application where I have enabled TX_ENABLE_STACK_CHECKING. The application gets stuck in a do loop in the tx_thread_stack_analyze.c between lines 114 and 135. (H7.3.1.0) It is clear in the debugger that the loop will never complete. The loop is checking for the stack fill pattern 0xefefefef using a binary search after checking the pointer are not NULL. Here is the code: /* We need to binary search the remaining stack for missing 0xEFEFEFEF 32-bit data pattern. This is a best effort algorithm to find the highest stack usage. */ do { /* Calculate the size again. */ size = (ULONG) (TX_ULONG_POINTER_DIF(stack_highest, stack_lowest))/((ULONG) 2); stack_ptr = TX_ULONG_POINTER_ADD(stack_lowest, size); /* Determine if the pattern is still there. */ if (*stack_ptr != TX_STACK_FILL) { /* Update the stack highest, since we need to look in the upper half now. */ stack_highest = stack_ptr; } else { /* Update the stack lowest,
I'm working with a NUCLEO-STM32WBA55 board and trying to build the BLE_p2pClient example project, but it fails with the error shown below:I../../System/Modules -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"Drivers/STM32WBAxx_HAL_Driver/stm32wbaxx_hal_gpio.d" -MT"Drivers/STM32WBAxx_HAL_Driver/stm32wbaxx_hal_gpio.o" --specs=nano.specs -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mthumb -o "Drivers/STM32WBAxx_HAL_Driver/stm32wbaxx_hal_gpio.o" make: *** No rule to make target 'D:/STM32Cube/BLE_p2pClient/Drivers/STM32WBAxx_HAL_Driver/Src/stm32wbaxx_hal_gtzc.c', needed by 'Drivers/STM32WBAxx_HAL_Driver/stm32wbaxx_hal_gtzc.o'. Stop. make: *** Waiting for unfinished jobs.... "make -j8 all" terminated with exit code 2. Build might be incomplete. 10:35:54 Build Failed. 2 errors, 0 warnings. (took 6s.752ms) Environment:CubeIDE 2.0.0, CubeMX 6.16.0, WBA FW 1.8.0, X-CUBE-MEMS1 12.0.0
Hi,I am running the latest version of the VENC_SERVER application and am interested in the mode that uses no external memory. There is a define for 720p 30fps using internal memory only, but trying to compile it in debug mode results in a compile error with .bss data not fitting in memory.Could anyone advise on how to change the example or linker script to get the internal memory only version working?Thanks
I have the need to access items of a scroll wheel that are not visible on the screen (but that are already initialized)For instance, I have a scroll wheel with each items a toggle button.With the ScrollUpdateItem I'm able to set the correct index to the item withScrollUpdateItem(alarmsItem& item, int16_t itemIndex) { item.setIndex(itemIndex)where setIndex is a function that set the index in the itemNow, this works but, I've got the issue when it comes to the callback of each toggle.For instance, once a callback is called, I need to process items different from the one selected so, I need to access the SelectorScrollListItemsFor some reason, despite setting SelectorScroll.setNumberOfItems(6); I'm seeing TouchGFX generating touchgfx::DrawableListItems<alarmsItem, 5> SelectorScrollListItems; so, when I try to access SelectorScrollListItems[5] I'm seeing the call to the assert TYPE& operator[](int index) { assert(index >= 0 && index
I have been modifying the VENC_SDCard_ThreadX example to read in raw data through pipe0 with success. However, my bottleneck appears to be the SD card write speed; I understand that this example was designed to write compressed h.264 files - and it looks like it only writes at around 320 kB/s.Since I am capturing much more data, I would like to use exFAT instead of FAT32, and write to a UHS I card at max speed (SDR104). I defined FX_ENABLE_EXFAT within fx_user.h, but it I am still unable to write to an exFAT formatted card. fx_media_open() passes just fine, but upon inspection it appears that the available clusters always is 0. Am I missing any steps? Any insight would be appreciated.
Hi, I'm new to STM32 and FMC. I'm connecting STM32H755 to PCL6045, a motor controller which has data/address pins that can be access through FMC. This is what I've done so far:1) Configure the FMC inside CubeMX with clock set to 20MHz (max 20MHz reference clock according to PCL6045BL datasheet)I don't know why there's no unmuxed option in the CubeMX since I need to use the FMC_D instead of FMC_DA pins and the address pins start from FMC_A16 until FMC_A20. As for now I just connect FMC_DA to the data lines from PCL6045BL.2) Then, I try to write something to the selected register of axis XPclAxisWriteReg(ID_X, WRFL, 10);The base address that I use is 0x60000000. Every time I run the code related to PCL6045BL, it always gives a HardFault error. I have also edited the main.c to use FMC_DATA_ADDRESS_MUX_DISABLE manually but it does not seem change anything. I don't know if I miss something important or my steps are wrong somewhere.
Hi there,I'm starting to use the NUCLEO-H533RE board to evaluate the H5 device family.RM0481 has some errors on the PLL configuration:Fig.55 on page 461 shows a VCO range 0 between 128 and 560 MHz, but the description of bit 5 of register PLL1CFGR (page 492) says 192 to 836 MHz, which is quite different. Which one is the correct one, please ?Section 11.8.12 name is incorrect page 497 (PLL1 written instead of PLL2).Regarding the best PLL setup:For the PLL1RGE possibilities, it select the input frequency range: between 1 and 2, between 2 and 4, between 4 and 8 and between 8 and 16 MHz. What would be the best choice for a input frequency of 8 MHz: between 4 and 8 or between 8 and 16 ? And if possible, explain why that is.Thank you,Kraal
Hi! I am having a lot of trouble configuring the ST-Link on my NucleoF466RE board to JLink with STLinkFlash.exe even after consulting different community posts and websites.I was able to connect to my board using STM32CubeProgrammer on my Ubuntu 24.04.2 LTS laptop and upgrade it with the STLinkUpgrade program below.Then I connected my nucleo board to my Windows VM from Virtual Box since STLinkFlash.exe can only be run in Windows. I have installed the right STLink and JLink drivers from SEGGER website and confirmed in my Device Manager that the STLink was detected.However, when I launched STLinkFlash.exe to upgrade my STLink to JLink, I got the error "ERROR: Timeout: ST-LINK/V2-1 did not enter DFU mode". I tried putting the nucleo board in DFU mode by shorting the BOOT0 pin to VDD or removing/connecting different jumpers available on the board, but none worked...Has anyone been able to configure their STLink on their nucleo board to JLink recently? Would really appreciate any point
HelloI was developing an application that uses BLE and low power mode. I was testing that on a custom board and when I measured the current consumption at STOP2_MODE, it was 1.7 mA.I expected that I had made a mistake. So I tried the low power examples found there STM32CubeWB/Projects/P-NUCLEO-WB55.Nucleo/Examples/PWR at master · STMicroelectronics/STM32CubeWB on my board and then using the P-Nucleo-WB55 and I found the current consumption is above 4 mA.Shouldn't be measured in micro-ampere? I am confused now, as I am using an ST example and a dev board, so it should work well.Thanks in advance. Best regards,Mahmoud A.
Hi, I am using STM32WBA55G-DK1, is it possible to use Audio In jack to send the input audio and at Out to receive the audio in a full duplex method. Thank you
I wrote the following code in TouchGFXHAL.cpp__attribute__((section(".ram_d2")))uint16_t cache[144*1024]; //288KB cachevoid TouchGFXHAL::initialize(){ // Calling parent implementation of initialize(). // // To overwrite the generated implementation, omit the call to the parent function // and implement the needed functionality here. // Please note, HAL::initialize() must be called to initialize the framework. registerTaskDelayFunction(&OSWrappers::taskDelay); setFrameRefreshStrategy(REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL); TouchGFXGeneratedHAL::initialize(); GFXAdapter::gfx_adapter_lcd_init(); Bitmap::setCache(cache, sizeof(cache)); Bitmap::clearCache(); Bitmap::cache(BITMAP_ELAINA_ID);}bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes){ // If requested data is located within the memory block we have assigned for ExtFlashSection, // provide an implementation for data copying. for(uint32_t i = 0; i < numBytes / 2; i++) *((uint16_t
Hi,I already have a codebase that uses the STM32L4R5ZI microcontroller. The codebase does not include an .ioc file, which we normally use to configure the pins and other related parameters. But the codebase seems to be compiling fine. I am working with a development board for our customer project (Nucleo-L4R5ZI-P).We are trying to establish SPI communication with an external chip via SPI1. The codebase currently configures the SPI1 interface, but the SPI_CLK function is assigned to PA1. I need to change this to PA5. Since I don’t have an .ioc file, how can I make this modification?
I procured an STM32F4VE 2.0 board *Details of board here:*https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0I managed to create a Basic STM32 Cube Project for this controller. (STM32F407VET6)From the Schematic on STM32base website, I see PA12, PA11 connected to the USB Connector...I have enabled USB_OTG_FS which corresponds to PA11, PA12 in hardware and schematic.And further, under "Middleware and Software Packs" I have selected "Communication Device Class (Virtual Port Com)"I am also able to successfully initiate two IO Line connected to LED on board as output and write a basic Blinky program too.However the USB COM Port is giving hell of a lot of trouble, with Windows being unable to get even the Device Descriptor from the board! What am I doing wrong? Any step I have missed or any configuration I have done wrongly? Thanks in advance:Nagendra R Settynagendra.setty@ideas-unlimited.in
I am working with an STM32U575, HAL version 1.5 and found the issue described below(Have checked the HAL code for the H5 and H7 and these contain the same issue)See picture below, when aborting an PSSI transfer, before checking the state on lines 1258 and 1277, the state of the PSSI is already set to HAL_PSSI_STATE_ABORT. As a result the DMA transfer is not correctly aborted since none of the two conditional paths are taken.
Good morning,I have a design based on the schematic of the STM32 Nucleo-64 L073RZ MCU evaluation board.Is the code to support ST-LINK functionality on the STM32F103TBU part of the STM embedded tool chain?Thank you.
Hi Community, I'm trying to build the BLE_TransparentMode example for the NUCLEO-WB05KZ, but I'm getting the following build error: region 'FLASH' overflowed by 93348 bytes Steps to reproduce: Open the BLE_TransparentMode example from the MX Example Selector for NUCLEO_WB05KZ. Change the toolchain to CMake with GCC compiler. Open the project and configure it using the STM32 VS Code extension. Build the project → the error appears. Environment: STM32CubeMX: v6.16 STM32CubeIDE for VS Code: v3.6.4 Has anyone encountered this issue or knows what might be causing the FLASH overflow with the CMake/GCC configuration?Thanks!
I'm writing a UART driver for NUCLEO-F103RB and I followed all steps in the book "Bare-metal embedded C programming" and advices from Gemini but still can't see the receiving output from my PC.How can I fix this?Other parts than UART work without problem in this setting.main.c#include <stdint.h> #include <stdio.h> #include "gpio.h" #include "uart.h" #if !defined(__SOFT_FP__) && defined(__ARM_FP) #warning "FPU is not initialized, but the project is compiling for an FPU. Please initialize the FPU before use." #endif unsigned readBit(unsigned line, unsigned position){ unsigned mask = 1U<<position; return ((mask & line) >> position); } int main(void) { RCC_APB2EN_R |= 1U<<2; RCC_APB2EN_R |= 1U<<4; //led init GPIOA_MODE_R &= ~(1U<<20); GPIOA_MODE_R |= 1U<<21; GPIOA_MODE_R &= ~(1U<<22); GPIOA_MODE_R &= ~(1U<<23); //button init GPIOC_MODE_R &= ~(1U<<20); GPIOC_MODE_R &= ~(1U&l
Hello, I have an expansion board X-NUCLEO-PLC01A1 that I use with a micro controller F767Zi on its F767Zi Nucleo Board.When I plug the PLC01A1 on the board, I cannot flash (meaning that I can neither Run nor Debug) any code on the micro controller, even if I turn off the 24V supply of the PLC01A1.I get this error on STM32CubeIDE: And here is what happens when I try to connect the board on STM32CubeProgrammer with the PLC01A1 plugged on it: My solution for now is to physically unplug the PLC01A1 every time I have to flash some code on the F767Zi, and then plug it again. Which is not so convenient. I think this problem can be due to a lack of power from the board which cannot supply itself and the PLC01A1. Note that even if the 24V power supply of the PLC01A1 is turned off, the PLC01A1 is stilled supplied by the 5V and/or 3.3V pin of the Nucleo Board. Have any of you an idea to solve this ?Thank you
Hi everyone!I figure out that Type III Format Interface Descriptor is generated automatically on STM32L476RG, and this use encoder format to transmit audio (Not PCM). Frame size vary an do mot match PCM packet sizes, meaning that transmitting raw PCM using Format Type III result as no audio output.However, apparently those problems doesn't occur using Format |Type I Interface descriptor.Any idea about how can to solve this problem? Thanks.
Hi,I noticed that for the FLASH PECR register there is a discrepancy between the RM and the CMSIS files provided by ST.The RM includes information about the `NZDISABLE` bit (which is not present in the CMSIS file `stm32l010x6.h`). On the other hand, the macro `FLASH_PECR_HALF_ARRAY` is provided in the CMSIS files but is not described in the RM.Best,msemegen
Hi!In AN5289, on page 37, the sequence for writing to Flash memory is described, taking into account potential CPU2 access (semaphores Sem2, Sem6, and Sem7). What does the diagram for writing/reading option bytes look like? Is it the same?
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.