Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
I have Segger Portable Flasher Plus and U-Flash application used to program STM32F777BI and it runs softly but when trying to download code to external flash I can not find where to point to external flash or where to add the flashing algorithm of external flash as it is custom with different pinout connections to microcontroller than standard ones. I already have .FLM and .stldr files of my custom external flash and tested them well.DQ2 connected to PF7DQ0 connected to PF8DQ1 connected to PF9DQ3 connected to PA1Clk connected to PB2CS connected to PB10RST connected to PH6Please advice
Hello everyone,In one of your recent newsletters, you advertised a standalone rotary knob display module with an STM32C09 microcontroller.https://www.st.com/content/st_com/en/campaigns/stm32-gui-cost-effective-microcontrollers-z11.html?ecmp=tt46702_gl_enews_oct2025Unfortunately, while searching for sources, I discovered that there doesn't seem to be a supplier for private individuals like myself. TSD only communicates with registered businesses.Does anyone have any idea where I, as a private individual, can purchase such a rotary knob display module?I would be very grateful for your help.I'm looking for the TSS13002 model (1.3 inches).Any suggestions would be greatly appreciated. Best regards Christian
Hello,I am working On Customized Board using STM32H755ZIT6 microcontroller. I have written code using .IOC functionality in stm32 CubeIDE but that code is not working in Our customized board. 2)That same code is working In Nucleo H755ZI-Q board and functionality is working.3)Than I tried to write code without using IOC for gpio toggling that code is working fine.4)Here is the code that is working /* * main.c * * Created on: Nov 4, 2025 * Author: PK01 */ #include "stm32h7xx_hal.h" #include "main.h" GPIO_InitTypeDef GPIOD_Init = {}; void gpio_config(void); void gpio_config1(void); void delay(uint32_t delayVal); int main(void){ //HAL_Init(); gpio_config(); //USART3_Config(); gpio_config1(); /*gpio_config2(); gpio_config3();*/ // if(HAL_UART_Transmit(&usart3,(uint8_t*)msg,msgSize,timeDelay)!=HAL_OK){ // ErrorHandler(); // } while(1){ HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_0); HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_12); // HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_8); // H
HIWe have purchased few STM32H757 Eval board for initial evaluation. We received the boardsWe have generated code using STM32CubeMX and added just GPIO configs.(PK3,PK4,PK5 as outputs) and flashed code. it was working. we disconnected powersupply and connected back from then led's not toggling and also any code not flashing.and the output is No device found on the target. what may be the reason, how to overcome this. even tried in STM32CubeIDE still no luck.STMicroelectronics ST-LINK GDB server. Version 7.11.0 Copyright (c) 2025, STMicroelectronics. All rights reserved. Starting server with the following options: Persistent Mode : Disabled Logging Level : 1 Listen Port Number : 61234 Status Refresh Delay : 15s Verbose Mode : Disabled SWD Debug : Enabled InitWhile : Enabled Target no device found Error in initializing ST-LINK device. Reason: No device found on target. GNU gdb (GNU Tools for S
STM32F411RE - NUCLEOI'm working through a course on power optimization on STM32s & I'm genuinely confused about some results I'm getting off the board. I've set up TIM5 to count execution time in us like so, void Timer_Init_For_Timing(void) { RCC->APB1ENR |= RCC_APB1ENR_TIM5EN; /* Calculate TIM5 prescaler for 1MHx clock (1us tick) * TIMxCLK = PCKL1 if APB1 prescaler = 1 * TIMxCLK = 2 * PCLK1 if APB1 prescaler > 1 */ uint32_t pclk1_freq = SystemCoreClock; // start with HSI uint32_t ppre1_rcc_bits = (RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos; if(ppre1_rcc_bits >= 0x4U) { uint32_t ppre1_divider = 1 << (ppre1_rcc_bits - 3); pclk1_freq = SystemCoreClock / ppre1_divider; } uint32_t tim_clk_input_freq = pclk1_freq; if(ppre1_rcc_bits >= 0x4U) { tim_clk_input_freq *= 2; // timer clock 2x PCLK1 } TIM5->PSC = (tim_clk_input_freq / 1000000U) - 1; TIM5->ARR = 0xFFFFFFFFUL; TIM5->CR1 |= TIM_CR1_CEN; } uint32_t
Hello,I'm working on a custom STM32H7S7L8 board with this display https://newhavendisplay.com/fr/2-4-tft-lcd-ips-high-brightness-display/Here the schematic of the connection in 8 bit mode and clock three The backlight and display are working but I get a glitch image when i try to fill the display. with this code i can see the display turning off and on so the command are working Below the whole project zip LCD_Fill(0xFFFF, 0, 0, 10, 10); HAL_Delay(1000); ST7789H2_DisplayOff(); LCD_Fill(0xFFFF, 0, 0, 10, 10); HAL_Delay(1000); ST7789H2_DisplayOn();Does someone have a idea to make this work Thanks
I´m not 100% sure how to interpret and thereby implement ASPEP on an own controller to talk to the performerSo I want to ask if someone can tell if I´m on the right way on the example of the BEACON messageThe documentation says least significant bits are send first and the BEACON message isI recorded the inital traffic when connecting the Motor Pilot and the first message is I currently think to fit this reording in the documented scheme, I have to "mirror the bytes around the vertical axis", so fittet in the scheeme the message would be10100000 11100011 10000000 00101000?If that is correct, what suprises me is that the CRC bit is zero indicating no crc is supported by the performer, but somehow the last 4 CRCH bits are not zero.
Hi @Issamos Hope You doing well . we are started new design using STM32U575VIT6Q this controller, we have some doubts regarding the SPI line, we searched in the STM32cubemx in that we cannot able to find the octa spi pins, Can you pls share me the Standard SPI lines pins and Octa SPI pins ,thanks
Heyho,I have a super-stable TCP-audio-streaming server on a H733 here, using custom ETH driver and lwIP, no OS.But I recently found that in a struct which is used for handling / storing the TCP connection, the variable to store the port number "u16Port" (used in lwIP's tcp_bind() to set the TCP port) changes as soon as data is transmitted.It's really crazy: u16Port has the init value before and after the connection is accepted, but as soon as data is transmitted, it changes all the time (checked via UART and http REST). When data transfer stops, it keeps the latest wrong value, after TCP connection is closed, u16Port has the init value again.All other values in the struct do NOT change and their values make sense.I have tried to set the struct to volatile, use another memory area, align, but still changing.I just checked it with the STM32CubeIDE debugger under Live Expressions, there I see the same change.I admit I have no idea how I can check where this variable is modified.How
Hello All, I am facing a strange situationI have an ISR function1 that is triggered on Falling / Rising Edge of a GPIO pin This function1 according to the state of variable will either start TIMER2 and stop TIMER3 and the way around.TIMER2 & 3 have also ISR. But before starting/stopping TIMER, it needs to update memory variable that will be used by TIMER ISR.The issue is that the variable is effectively updated in memory after the start of TIMER and a few (100 CPU) cycles are needed to get the proper value.This is time critical and I need the value of wrBitPos to be 0 and wrBitCounter to be set a the right value before the first timer iteration. How can I fix this ?I use the volatile declaration for variable.void function1(){ TIM3->DIER &= ~TIM_DIER_CC4IE; // disable CC4 interrupt TIM3->CCER &= ~TIM_CCER_CC4E; // disable CC4 output TIM3->CR1 &= ~TIM_CR1_CEN; // stop the timer wrBitPos=0; bytePtr++; // Reset the BitPos wrBitCounter=by
Hello STM32 Community,I’ve successfully built a Zephyr RTOS blinky application for the NUCLEO-H533RE board. Flashing the zephyr.hex using west flash or STM32CubeProgrammer works perfectly — the LED blinks and the serial terminal prints the expected status messages.To enhance security, I’m now trying to encrypt and sign the firmware using STM32TrustedPackageCreator and provision the board using STiROT. I followed the STM32CubeH5 GitHub examples and used the STiROT_Code_Init_Image.xml file, modifying it to point to my zephyr.bin. Provisioning was successful, and the board state was set to PROVISIONED.However, after flashing the generated zephyr_enc_sign.hex, the board does not blink, and the serial terminal remains silent — indicating the firmware is not executing.Here’s what I’ve done:Used STiROT/Image/STiROT_Code_Init_Image.xml and modified paths to point to zephyr.bin.Generated the encrypted and signed image using STM32TrustedPackageCreator.Successfully provisioned the board and set i
Hello everyone,I’m new to STM32 development and I’m trying to set up a simple test using the STM32H753 with an OV5640 camera module.My goal is to capture frames from the OV5640 and send them over USB to view them on my laptop — just to verify that the camera is working and capturing images correctly.I’ve gone through various online examples and references, but most of them are either for different STM32 families or for other camera sensors. I’ve written some code based on those examples, but it doesn’t seem to work — I suspect I might be missing something in the clock configuration.I’m currently using the official OV5640 driver from ST::backhand_index_pointing_right: https://github.com/STMicroelectronics/stm32-ov5640/blob/main/ov5640.cIf anyone has experience connecting the OV5640 to an STM32H7 series MCU (especially the H753) or has an example project to share, I’d really appreciate your help or guidance on the correct initialization and clock setup.Thank you in advance!
I'm using NemaGFX on the STM32U5G9J-DK2 kit without RTOS and without TouchGFX, which works very well.I've created lightning-fast graphical widgets on that kit.Now I have an STM32H7S78-DK and I'm having trouble getting *all* NemaGFX functions to work properly.Many functions work properly, but the functions that draws filled circles and shapes with rounded corners still have problems. Maybe I'll get it working later.So I thought TouchGFX might be useful for initializing NemaGFX on this kit, and then using its functions to create my own graphical widgets.So I created a project with 4.26.0 that only displays a button on the screen to confirm it's running on the target.Then I looked at the generated code and, to my surprise, no NemaGFX functions were revealed.Does it actually use GPU2D and NemaGFX? Why isn't it showing up? I'm a bit worried that I can't use the NemaGFX library with TouchGFX.If that's the case, TouchGFX is useless to me.How do I use the NemaGFX library within a TouchGFX proj
Hi All, I'm using an STM32F1 with a 240x240 LCD screen that comunicates with the micro by SPI (with DMA). The screen uses the ST7789 driver (I supose it is not important). I'm working with RGB565 color format.The problem that I have is, for example, when I'm using the ST7789_Fill_Color(YELLOW); the SPI uses the DMA and the LCD shoul be yellow but it's not. If yellow is 0b1111 1111 1110 0000 the DMA only sends to SPI the LSB (0b0000 0000 1110 0000) witch is a wrong color.When I do the same without DMA it work's fine!The DMA is configures this way:I tried every configuration possible but nothing works. My question is why the DMA only graps the first byte of a color and what I have to change in order to send the real color.Thanks in advance!!!
Hello everyone,I’m working on an STM32F103 microcontroller using CAN in polling mode (without FreeRTOS).From my testbench, I transmit 16 CAN messages cyclically every 100 ms.Each message has a unique CAN ID.My goal is to:Receive all 16 messages within the 100 ms cycle,Process each message and,Send back an acknowledgment (ACK) frame for each received message.However, when I send all 16 messages cyclically from the testbench,I’m receiving only 3 messages’ acknowledgments — the rest are missing.Can anyone help me out.
Hello, NUCLEO-F411RE JP5 in E5V reset When my F411RE board is powered with 5V, I have to press the reset button to start it. Why doesn't it start? Thank you for your help.
STM32WBA54 SAI work in slave mode with DMA: SAI1_Block_A Slave out, SAI1_Block_B Slave in. test code as: MX_SAI1_Init();//in __HAL_LINKDMA(&hsai_BlockB1, hdmarx, handle_GPDMA1_Channel2); MX_RxQueue_Config(); HAL_DMAEx_List_SetCircularMode(&RxQueue); HAL_DMAEx_List_LinkQ(&handle_GPDMA1_Channel2, &RxQueue); if (HAL_SAI_Receive_DMA(&hsai_BlockB1, (uint8_t *) aSrcBuff, SAI_MAX_BUFF_SIZE*2) != HAL_OK) { } //Out__HAL_LINKDMA(&hsai_BlockA1, hdmatx, handle_GPDMA1_Channel1); MX_TxQueue_Config(); HAL_DMAEx_List_SetCircularMode(&TxQueue);HAL_DMAEx_List_LinkQ(&handle_GPDMA1_Channel1, &TxQueue);if (HAL_SAI_Transmit_DMA(&hsai_BlockA1, (uint8_t *)aSnkBuff, SAI_MAX_BUFF_SIZE*2) != HAL_OK) { } TxDMA = HAL_SAI_DMAStop(&hsai_BlockA1);RxDMA = HAL_SAI_DMAStop(&hsai_BlockB1); TxSai = HAL_SAI_DeInit(&hsai_BlockA1);RxSai = HAL_SAI_DeInit(&hsai_Block
Hi,I have a problem with the ADC2 calibration on STM32H743VIT6(V). I use ADC1 and ADC2 in dual mode(Regular simultaneous mode). On some boards the ADC2 calibartion doesn't work. (The ADCAL-Bit in ADC_CR is not cleard after start).On the boards where I have the problem with the ADC2 calibration, when I change the dual mode to simultaneous mode + Regular simultaneous mode the calibration of ADC2 works.I don't unstertand this bevaior. What is the problem of ADC2 calibration on some controllers in Regular simultaneous mode.
Hello everyone,I’m trying to communicate between an Arduino Nano and the STEVAL-ESC002V1 board via UART, but I’m unable to get any proper response or control signal exchange. I’ve configured both devices at 115200 baud rate, but communication doesn’t seem to work. Any guidance or example code would be really helpful.
Hello,I am trying to take a log using my sdcard on my project.I am using FATFS that included in STM32CubeIDE but I got some issues, without FREERTOS everything works as expected and fine but when I enable the FREERTOS and it want's me to enable USE_NEWLIN_REENTRANT. When I enable it generates problem with FATFS USE_LFN(long file name) selection and normally it is Enable with dynamic working buffer on BSS. But the IDE wants me to change it and I change it for the STACK than I tried the HEAP and also tried for the disable option. But in both way my system got stuck in f_open function and returns FR_NOT_READY I searched online but I couldn't find the exact solution for this problem. When I searched I found examples for DMA option but I don't have the dma option in .ioc file you can see it in attachements. I am trying to initialize my sdcard in main code and my function looks like this FRESULT initialize_sd_card(void) { FRESULT res; /* FatFs function common res
Hi, I want to count the time that an incoming level signal is high for. To achieve this I setup Timer 15 as a Gated Mode Slave, which has it's counter counting while the trigger input is high. The trigger input is the Filtered Timer 15 Channel 1. For some reason when I connect my signal to my input Timer. Nothing Happens. The signal on the IO Pin TIM 15 CH1 is a 2V square Wave.My own software seems correct. I then moved to Hal to see if I can achieve it. I've tried to use HAL to achieve this without any luck here is my HAL software.Uploaded is the main and IOC fileI am working on the STM32G071Thanks
I’d like to use the NUCLEO-N657X0-Q board together with the B-CAMS-IMX camera to output video to a computer as a webcam using CSI → DCMIPP → UVC.However, since all the CSI and UVC examples are provided only for the STM32N6570-DK, I’m having difficulty creating this setup. Although there are some examples for the NUCLEO-N657X0-Q, I’m struggling to understand the code. Is there a simple project or example that uses only CSI – DCMIPP – UVC?
Hello everyone,I'm working on a custom board with an STM32H563 and using CubeMX, HAL, and ThreadX.I am trying to receive variable-length UART data via DMA using HAL_UARTEx_ReceiveToIdle_DMA(). My problem is that the HAL_UARTEx_RxEventCallback never triggers for the HAL_UART_RXEVENT_IDLE event. It only triggers for HAL_UART_RXEVENT_HT (Half Transfer) and HAL_UART_RXEVENT_TC (Transfer Complete).SetupFunction Call: HAL_UARTEx_ReceiveToIdle_DMA()RX Buffer Size: 1000 bytesDMA Mode: CircularData Source: A peripheral sends packets of variable size (approx. 2048 - 4096 bytes) at 1,000,000 bits/s.Idle Time: There is a guaranteed idle time of > 45ms between packets. This should be more than enough to trigger the UART IDLE event.Here is the .iocHere is the RX line on the scope:ProblemExpected Behavior: Given the long idle time, I expect HAL_UARTEx_RxEventCallback to be called with an event type of HAL_UART_RXEVENT_IDLE after each packet.Actual Behavior: The IDLE event never fires. I only get H
I have several an 2 F401RE boards connected to my PCs and getting data by the Virtual Communication Port.Unfortunately when installing a new board on the PC, I ve seen that my 2 boards were declared by Windows with the COM portCOM port 7, 9 and 10 are allocated by Windows to others boards I am under the impression that there is a bug in the Virtual COM driver that do not authorize to declare a virtual COM Port beyond COM10.Is there a fix or a workaround. Otherwise Is it possible to reuse an COM port, for instance the COM 9. Is there a procedure to unsintall the COM9 in order to use for my new boardFinally, I would have connected in parallel, on my system, 3 boards with COM8, COM0 and COM10
I'm working with the STM32WB5MMG module and have been using SPI communication with DMA successfully. Previously, in a bare-metal setup, the following was working perfectly:HAL_SPI_TransmitReceive_DMA() starts the transferHAL_SPI_TxRxCpltCallback() is triggered upon DMA completionSPI and DMA configurations were verified, and the interrupt fired reliablyHowever, after integrating FreeRTOS into the project, I noticed that the DMA transfer still starts successfully (HAL_OK is returned), but the DMA interrupt no longer fires, and HAL_SPI_TxRxCpltCallback() is never called.Additional Notes:DMA and SPI are initialized the same way as before (generated via STM32CubeMX)SPI state and error checks show normal operation (HAL_SPI_GetError() returns 0)NVIC interrupts for DMA channels are enabledFreeRTOS is running with default settings, and I'm not using CMSIS-RTOS wrappers for SPI or DMANo changes were made to SPI or DMA configuration between bare-metal and RTOS versions Are there any specific
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.