Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I realise one cannot disable the watchdog, short of a full reset.One method would be to leave a "magic number" somewhere, say in one of the RTC locations, do a reboot, and if that is found at power-up, you don't enable the watchdog and you perform a shutdown, using the WFI etc method.But that's not really the point, and it is not safe.I wonder what would be the most effective thing possible. The watchdog will still be tripping so probably the best way would be to select slowest clock (I have a 25MHz external xtal and a 32768Hz external RTC xtal) and stay in a loop pulsing the watchdog. What is the best way to do this? Perhaps switching to the 16MHz internal oscillator and setting the PLL for the slowest clock?Any tips much appreciated.
Heyho,playing with the L073, partitioned the flash for bootloader "BL" (bank 1) and application (bank 2).No writing of app yet, just testing jumping back and forth.I just added a no-init variable for communication between BL and app, mainly to tell the BL to not jump back to app if the app requested so.at power up / reset, the uninitialized variable "u32AppRqstBootloader" is 0, so the BL jumps to the app, and just for checking: before the jump the BL sets u32AppRqstBootloader = 0xB0072ABBin the app u32AppRqstBootloader is printed via UART, and it shows the expected 0xB0072ABB, the printf is done immediately and takes ~ 2 ticks (1 tick = 1 ms)now I let the app jump to BL, before the jump the app sets u32AppRqstBootloader = 0xABB1B007 so the BL does not jumpSo far so good...But when the BL now jumps back to the app, all of a sudden in the app there's a ~ 1 second delay before u32AppRqstBootloader is printed - everything else is working fine - or so I think... (the next pri
Hello. We are developing a p2p application using two Wio-E5 mini modules based on stm32 WLE5JC.The problem I'm facing is HAL_DELAY not working. I created the project, chose HSE, LSE, then SysTick, and then after I selected SysTick, HAL_IncTick() was well declared in SysTick_Handler, and I also checked NVIC. But when I do HAL_GetTick() at any moment, I get zero. Isn't there a problem with this??The Ping Pong example also uses HAL_Delay, but I cannot understand why this happened. This is very critical for my project becaude when i set modem state in RX, it call timeout in next loop. please help me
If I don't enable RX line inversion, everything works fine. But when I enable inversion, I constantly get frame errors. The DMA operates in cyclic mode, without interruption. It's just like a ring buffer. In normal mode, everything works without problems. The signal source itself was tested on another device with a purely hardware signal inverter, and everything was fine. It's unclear why enabling inversion causes the problem. Perhaps someone can give me a hint as to what might be causing this? Thank you.
I am currently working on the STM32N6570-DK board for a camera-based project.Development SetupIDE: STM32CubeIDE (Version 2.1.1)Tool: STM32CubeMX (with STM32N6 package installed)Issue 1: Flashing & Boot BehaviorI tested the example GPIO_IOToggle programThe program is flashing and running properlyHowever, after pressing reset, the code is not running againTo make it run:I set BOOT1 = LOW and BOOT2 = LOWAfter reset, the AI demo code runs insteadMy requirement:How to properly flash the user application into internal flash memoryAfter reset, the same user code should run automaticallyIssue 2: Required Examples / GuidanceI need guidance or reference examples for the following:1. ST-LINK V3EC configurationSerial communication setup for debugging (UART / Virtual COM)Camera InterfaceCamera bring-up2. How to read camera dataEthernet & StreamingEthernet initialization (bring-up)UDP socket configurationStreaming camera data to display over EthernetProject GoalCapture camera data and stream
Hi,I´ve problems getting UCPD running on a STM32H563. With STM32G0 I´ve alraedy realized a lot of such projects with UCPD. Hence I suggest, that it maybe is a problem of the DMA which is much more complicated to configure on the H5. Is there any information about how to configure UCPD on H5?Best,Achim
I am using STM32H743VIT6 with USB3300 to develop a HS USB Device.But the program is always trapped in USB_CoreReset() at do { count++; if (count > HAL_USB_TIMEOUT) { return HAL_TIMEOUT; } } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST); I am using a VCP example generated by CubeMX for testing without any other code. environment
AN2606 indicates that I should be able to activate the built in boot loader by jumping to the correct address in ROM, but I can't work out what that address is for the STM32U535CB.
Hello everyone, I am working on a design based on the STM32H7 MCU and I am evaluating storage options.I came across the Micron MTFC128GBCAYAL-AIT device, which is described as a USF NAND / eMMC memory. I would like to know: 1, Can MTFC128GBCAYAL-AIT be directly interfaced with an STM32H7 MCU? 2, Does STM32H7 support this device via SDMMC, FMC, or any other peripheral? 3, If direct interfacing is not possible, what is the recommended alternative (raw NAND, SD card, QSPI/OctoSPI flash, etc.)? My goal is to use soldered non-volatile storage (similar to eMMC) for data storage or filesystem purposes. Any clarification, reference manuals, or practical experience would be appreciated. Thank you.
I want to disable the AGC and use supply manual attenuation values.Disabling the AGC is pretty straight forward, I just set the AGC_EN bit in AGC0CTRL to zero.This works fine, but the gain/attenuation is fixed at the reset value and I'd like to use a custom value.To set manual attenuation values, I suppose I need to write them to the AGC_ANA_ENG register.However, i noticed something weird: This AGC_ANA_ENG register is not present in the driver files. Its not mentioned anywhere and in the MRSUBG register definitions it is listed as "Reserved". The "Description of STM32WL3 HAL and LL drivers" pdf (UM3438) even lists a couple of LL-functions to modify it, such as LL_MRSubG_SetAgcForceGains, but they exist nowhere in the driver files.Why is this register not mentioned in the official driver files and why dont the LL-methods exist?
Hi together, I have been developping a simple BLE application (that I can attach eventually) on the STM32WB55RG P-Nucleo This application combines BLE + USB Device (FS) But after I upgraded the BLE stack firmware from: FUSVER:1.2.0.0STKVER:1.13.2.2STK@:80CF000FUSOP:3.1.0 To: FUSVER:2.2.0.0STKVER:1.24.0.2STK@:80D0000FUSOP:3.1.0 Then I can no longer get any BLE connection nor bonding to my board, using a smartphone. I'm very suprised of that.
Hi,I'm using TouchGFX to make a simple screen with just one slider. This to prove my graphics work and i can use touch to move the slider.I started with a CubeMX project this time but i got stuck somewhere.I enabled DMA2D and touchGFX.I see the DMA2D IRQ's passing by and My frame buffers are swapping when i touch the screen.I see that I get calls to HAL_LTDC_LineEventCallback so I think hltdc is working as well.But i see that my images that should be drawn on my screen are not there. I see the global layout of the slider but it is not the correct image.Steps to reproduce:1) start a new TouchGFX 4.26.0 project2) disable all frameworks in config page3) Set a Box with a specific color (not black)4) Add a simple slider to the canvas5) run the simulator In the simulator i now see the same issue I see on My device. When I re-enable the Config->FrameworkFeatures. I get a working simulator but on my embedded device the images stay wrong.I have tried everything and check
Hi,I am writing firmware to read and write to a MicroSD card in SPI mode using an STM32G051F8P6.Card initialization, performed in the order of CMD0, CMD8, CMD55 and ACMD41, CMD58, works correctly. However, when I then try to read the first sector with CMD17, incorrect data is read. The table below extracts the values from bytes 446-461, which contain information about the first partition, from the sector read values with the first byte set to 0.The top row shows the data written to the MicroSD card as read by FTK, and the bottom row shows the values actually read by CMD17. In both cases, bytes 510-511 are 0x55 and 0xAA, satisfying the data requirements for the first sector.Bytes446447448449450451452453454455456457458459460461Correct Data0x000x820x030x000x0C0xFE0xFF0xFF0x000x200x000x000x000xDC0xD10x01CMD17 Result0x000x020x040x000x060x180xD80xC80x810x000x000x000x7F0x930x3B0x00The analysis results from the logic analyzer are shown in the following image, and a response to CMD17
So I have a container with a single image in it. The container is used in a view and has the Mixins Draggable and MoveAnimator ON Now, I want to animate it from the current position (400,38) to 800,38 so, basically a slide animation. I have a function that should trigger the animationwarningModal.startMoveAnimation(WARNING_MODAL_HIDDEN_X, WARNING_MODAL_Y, WARNING_MODAL_ANIMATION_DURATION, touchgfx::EasingEquations::cubicEaseOut, touchgfx::EasingEquations::linearEaseNone); }wherestatic const int16_t WARNING_MODAL_HIDDEN_X = 800; static const int16_t WARNING_MODAL_Y = 38; static const uint16_t WARNING_MODAL_ANIMATION_DURATION = 12;But I don't see anything moving; why is that?
According to the manual, I cannot determine under what conditions the INFIFO will assert the interrupt. The interrupt-related registers only provide two status flags: empty and not full. The IN FIFO has a depth of 8 words (8×32 bits). However, the later description states that the interrupt will be asserted when there are fewer than 4 words in the IN FIFO. How is this interrupt actually generated?
Hello everyone,I develop a project with STM32U575 and I want to use LPUART with LPDMA, normally I use LPUART with normal DMA in my other stm32L4 projects but here I couldnt work with this peripherals. Low power is not a critical issue of this part of project. So I just want to use LPUART with LPDMA in a normal way. First picture is my old settings in L4 series and second picture ise for current U5 mcu. Do I miss something ? Where can I find and example for LPDMA and LPUART for Standart Request Mode. Thanks
I've adapted the NUCLEO DRP1M1 reference design to build and compile for our Custom STM32U5A9 board, and when I run it, iit gets through these relevant pieces:MX_GPDMA1_Init();MX_UCPD1_Init();MX_TCPP_Init();But then inMX_USBPD_Init() is seems to hang in the Call to:USBPD_CAD_Init() which is part of the compiled STM_USBPD_Library. Running a debugger and working my way backup the call stack, it appears that the library calls CAD_Init()which ultimately callsUSBPDM1_AssertRd(PortNum)where the debugger falls apart. AssertRd has at the beginning the 2 below callsLL_UCPD_TypeCDetectionCC2Disable(Ports[PortNum].husbpd);LL_UCPD_TypeCDetectionCC1Disable(Ports[PortNum].husbpd);LL_UCPD_TypeCDetectionCC2Disable(Ports[PortNum].husbpd); <- appears to work fine.LL_UCPD_TypeCDetectionCC1Disable(Ports[PortNum].husbpd); <- stops functioning.husbpd points the appropriate address for the UCPD controller.I've set a breakpoint here, and manually set CC2TDIS and is is fine, and then when I manually
The STM32WB55 it will jump to the SysTick_Handler interrupt handler routine after we have configured the clocks and the RTC and then enable the interrupts. I don't understand why this is happening. I have checked the following registers:SysTick->CTRL->CLKSOURCE is set to processor clockSysTick->CTRL->TICKINT is disabledSysTick->CTRL->ENABLE is activeShouldn't the interrupt have been disabled by setting SysTick->CTRL->TICKINT to '0'?
hello ST Community, I'm developing the bootloader for the STM32H755 microcontroller from a specific flash memory address of 0x08010000. I also modified the USER_VECT_TAB_ADDRESS definition in the file 'system_stm32h7xx_dualcore_boot_cm4_cm7.c', as follows: /************************* Miscellaneous Configuration ************************/ /* Note: Following vector table addresses must be defined in line with linker configuration. */ /*!< Uncomment the following line if you need to relocate the vector table anywhere in FLASH BANK1 or AXI SRAM, else the vector table is kept at the automatic remap of boot address selected */ #define USER_VECT_TAB_ADDRESS #define FLASH_BANK1_BASE 0x08010000U #if defined(USER_VECT_TAB_ADDRESS) #if defined(CORE_CM4) /*!< Uncomment the following line if you need to relocate your vector Table in D2 AXI SRAM else user remap will be done in FLASH BANK2. */ /* #define VECT_TAB_SRAM */ #if defined(VECT_TAB_SRAM) #define VECT_TAB_BASE_ADDRESS D2_AXISRAM_BA
Dear STMicroelectronics Team,I am looking for an STM32 microcontroller for a new project. My main requirements are:At least 4 SPI interfacesAt least 2 USB interfacesCould you please suggest suitable STM32 part numbers that meet or come close to these requirements?Thank you for your support.Best regards,DZ
Hi all,We have a product using a STM32L451CEU6. We have gone through low rate initial production and it has met requirements but the customer has requested a change. We are experimenting with increasing the system clock speed the device is running at by changing the internal PLL settings. The device is running from the HSE, a 25 MHz crystal oscillator. It works without issue in the baseline clock configure shown below. When we try and change the N multiplication values in the PLLs to any other value, something appears to go wrong during the setup phase of our application code, and it appears to lock up. We have a custom serial bootloader but we cannot access it at this point, so we have to reflash completely using STM32 ST-LINK Utility and a STLINK-V3 programmer. This occurs whether we increase or decrease the N values e.g. N values of 15 or 17 do not work. This occurs whether we edit the N values in the code directly, or change them via CubeMX and regenerate the code. If we chang
Hi All,I'm currently developing a project using an STM32N655. I'm using a 1024x600 px screen. The image format is ARGB8888. Naturally, my frame buffer takes up approximately 2.5 MB. I needed to reduce the size of the CMD list.My application doesn't have vector graphics or fonts. Can I reduce the size of the CMD list as much as I want? Will this affect performance?Also, it's not possible to double flash with internal RAM while running a screen of this size. However, would creating frames of different sizes affect the FPS? Currently, the frame rate is 32ms. Best Regards,Onur
Hello, I am using different ST MCUs from few years and already have a wide set of development boards, tools and JTAG emulators and so far did not experienced any troubles to attach new board (even custom made) to CuveIDE and to flash and debug my solutions... until this week.I've deceded to get some more experience in low power SubGHz solutions from ST and ordered two NUCLEO-WL33CC1 development boards (Mouser store) and also some Chinese modules based on STM32WL33 (AliExpress).Now I have few different STM32WL33 based boards and 3 different available debug interfaces - J-LINK (stand-alone), ST_LINK V2 (stand-alone) and ST_LINK V3 (embedded in NUCLEO-WL33CC1).The problem is that there is no any combination of boards and JTAGs that can connect to STM32CubeIDE.So far there is only one partial success - Using STM32CubeProgrammer + ST_LINK V2 and Chinese modile - I can connect, flash and verify some ELF file: 08:47:13 : UR connection mode is defined with the HWrst reset mode08:47:1
Hello all, I explain you my problem the best I can. I have a project with the MCU STM32U575RGT6 The project has TouchGFX and FreeRTOS. After the initializations of the peripherals, I have the next calls, so the while(1) in main.c is not executed. As you can see in the next image. So for the moment the only main loop I have detected in the application is the timer interruption. In CubeMX I have 3 timers defined: TIM17, which is been assigned to the system as the timebase source: And timers 2 and 4 with the same exact parameters in CubeMX: (timer3 is related to an encoder....) I initialize the corresponding interruptions. The problem is that in the interruption HAL_TIM_PeriodElapsedCallback I never get the call of the timer 4 instance. Any help will be welcome.
Hi. I'm looking for an STM32 with a lot of GPIO triggered DMA channels. I need 8 channels that trigger when a pin changes state, and which can read/write to GPIO registers and DMA registers. It's for implementing a bus interface where I need to read address pins and write them into the lower 16 bits of DMA address registers, and use pin transitions to trigger GPIO state changes (GPIO data values, GPIO direction bits). Are there any parts that can do that? The M0+ series doesn't have enough DMA channels that can be triggered by GPIOs. The M3 and M4 doesn't seem to allow triggering from GPIOs.
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.