Join discussions in the Product Forums. Ask questions, learn from your peers, and share insights on ST solutions to accelerate your design journey.
Most recent activity
I'm working on my first development projects on the STM32H755, which has two M7 and M4 cores. I need to display the printout on the ITM console while debugging. For example:The main.c file of M7 has the following code:..... while(1) { printf("Welcome Cortex-M7\n"); HAL_Delay(2000); } .....The same is true in the main.c file of M4 with the following code:..... while(1) { printf("Welcome Cortex-M4\n"); HAL_Delay(1000);} .....Before debugging, I configured the ITM console with SWV on the STM32CubeIDE environment, following the YouTube video:https://www.youtube.com/watch?v=Zwylu6ma9gU https://www.youtube.com/watch?v=k3mXhPZSasw Then I enabled SWD to both the M7 and M4 cores in the Debugger option with the same clock frequency (64.0 MHz), port 0 for the M7 and port 3 for the M4.Based on this configuration, during debugging, I see the "Welcome Cortex-M7" character printed, so debugging for the M7 is working correctly. However, I don't see the "Welcome Cortex-M4" character printed o
Hello,When I try to change the supply source in power parameters STM32CubeMX 6.17.0 does not seems to generate anything when LL is selected. With HAL the configuration is changed in the generated code. Am I missing something ?Thank you for your help !
Using DMA to read 3 ADC channels. IN0, VSENSE & VREFINT all enabled in CUBEMX. First 2 channels read as expected but for VREFINT it seems to always read zero. Am I missing a setting in the CUBEMX?
I'm trying to use LCD16DebugPrinter to display debug text on a 480x480 RGB565 display running on STM32U5A9J-DK (circular display). I've set it up in TouchGFXHAL::initialize():static touchgfx::LCD16DebugPrinter debugPrinter; debugPrinter.setPosition(0, HAL::DISPLAY_HEIGHT - 20, HAL::DISPLAY_WIDTH, 20); debugPrinter.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0)); debugPrinter.setScale(1); touchgfx::Application::setDebugPrinter(&debugPrinter);And in my view's handleTickEvent():static char debugStr[128]; snprintf(debugStr, sizeof(debugStr), "TICK TEST"); touchgfx::Application::setDebugString(debugStr);Nothing appears on screen. Things I've already ruled out:String buffer lifetime - using static char[] So the pointer remains validColor contrast - white background, black textWidget conflict - disabled all custom widgets, issue persistsHow it is supposed to work?
Hi ,I am creating an LCD test project for the STM32N6570-DK using STM32CubeMX and STM32CubeIDE.I have started the cube mx project by selecting 'Access to board selector' menu from the cube mx. After enabling the LCD (LTDC) peripheral and generating the project, the build fails because required BSP files are missing in workspaces.The error observed is:fatal error: stm32n6570_discovery_conf.h: No such file or directory#include "stm32n6570_discovery_conf.h"The error is caused by:#include "stm32n6570_discovery_conf.h"#include "stm32n6570_discovery_lcd.h"#include "stm32_lcd.h"However, CubeMX does not generate or populate the required BSP LCD files and dependencies automatically. Fixing one missing file leads to additional LCD-related build errors, indicating incomplete code generation.Please let me know solution for this other than copy in all the required files manually. I looking for solution related to stm cube mx.
Hello,I am using the EVALSTDRIVE601 evaluation board (featuring the STDRIVE601) to try to generate a controllable three-phase signal. I wired the evaluation board exactly as described in the datasheet:HV and PGND (J1 connectors): Connected to the DC voltage source.SGND and VCC (J3 connectors): Connected to the ground and output of a buck converter that steps down 24V to 12V.VDD: Connected to the 3.3V of the MCU.Pin 1 (Fault): Connected to the MCU to read this value and detect fault conditions.Pins 3, 5, 7, 9, 11, and 13: Connected to the SPWM signals. I am generating these using a Compute Module 4 with a switching frequency of 10kHz and a modulating frequency of 50Hz.Pin 23 (Enable): Connected to the MCU, providing 3.3V to activate the driver.Pin 2: Connected to the GND of the MCU.Pin 28: Connected to the 3.3V of the MCU.Test 1: 24V DC with LC Filters I initially tested the board using an external 24V DC power supply. At the output (J2 connectors), I wired an LC filter (L = 680mH, C =
Dear Sirs, we had a project with the F2 using HAL_I2C_Master_Sequential_Transmit_IT() with Option I2C_FIRST_FRAME and a second HAL_I2C_Master_Sequential_Transmit_IT() with Option I2C_LAST_FRAME.All worked perfect.Using this Software with a F7 did not work. After the first HAL_I2C_Master_Sequential_Transmit_IT() with Option I2C_FIRST_FRAME a STOP-Condition occured and transfer stopped. After hours of debugging through the HAL it turned out that I2C_FIRST_FRAME does notz set the RELOAD bit but I2C_FIRST_AND_NEXT_FRAME does and all workes fine.So my question is: What is the usage of I2C_FIRST_FRAME in a F7 context, becuase it sets AUTOEND and nothing else. So how can be I2C_FIRST_FRAME the correct option for a sequence of frames?best regardsAndy
HiI'm trying to configure a camera chip NVP6324 (Nextchip) in the device tree. How to setup 4 virtual channels ? The chip is using MIPI with 2 lanes.Best RegardsRaimo
Couldn't see a definitive answer in the datasheet - What is the source \ sink capability of a USART TX \ RTS pin? The nearest answer I could find was page 128 of DS13313 Rev 5 - "GPIOs (general purpose input/outputs) can sink or source up to ±8 mA, and sink or source up to ±20 mA" but there isn't anything specifically that mentions alternate function pin capability. Can TX and RTS pins directly source or sink an LED via a 220 Ohm resistor (that would be ~15mA each) ? I'm thinking I may have to add external drives like high side MOSFETs otherwise. Thanks.
Hello, I would like to enable overdrive mode on my N657X0. This chip supports 800MHz operation but is usually limited to 600MHz. The manuals specifies to enable overdrive mode before configuring the CPU clock to reach the maximum frequency. I was wondering if there are any - for beginners like me not obvious - ways for the chip or its peripherals to get damaged when enabling overdrive mode. Kind regards, Len
Hi,STM32CubeIDE 2.0fresh projectwithGNU Tool for STM32: 14.3.rel1 :GNU Tool for STM32: 13.3.rel1regards
Hi, I am working with a custom board using the STM32H757BIT and a Riverdi RVT70HSMNWC00 connected through MIPI DSI.I followed the “lv_port_riverdi_70-stm32h7” example for the CubeMX setup and for the DSI display initialization.The system runs from a 25 MHz external HSE, and I have tested the DSI clock using both the HSE and PLL2Q.HAL version: V1.12.1.The UI framework is LVGL. My issue is that the display stays completely black. When LVGL triggers the flush callback, nothing appears on the screen. The backlight PWM is working correctly: it runs at 48 kHz and currently uses a duty cycle above 90%, so the panel should be fully illuminated. The screen content I want to show is extremely simple, just for testing: /*Change the active screen's background color*/ lv_obj_set_style_bg_color(lv_screen_active(), lv_color_hex(0x003a57), LV_PART_MAIN); /*Create a white label, set its text and align it to the center*/ lv_obj_t * label = lv_label_create(lv_screen_active()); lv_label_set_t
Hello, Is it possible to configure STEVAL-CTM015V1 to drive a 3-phase SRM (switched reluctance motor) in sensorless mode? The motor has no Hall sensors, and I cannot use the quadrature encoder signals because they are connected to a LabVIEW measurement system for speed/torque. Thanks!
Starting to prototype a 169Mhz design and looking at the BOM, the IC SKY66121-11 is out of production. Is there a replacement or can you give me a link to still purchase these ICs?
Hello,I have found an inconsistency in the documentation for the STM32U031K8 MCU on ST.com:The Reference Manual (RM0503), Revision 4 is listed on the documentation page, and Table 22 in RM0503 Rev 4 indicates that LPUART2 does not have wake-up capability.The Data Sheet (DS14581), Revision 2 is also listed, and Table 3 in DS14581 Rev 2 states that LPUART2 does have wake-up capability.This leads to a contradiction between the reference manual and the data sheet regarding the wake-up capability of LPUART2. Based on this, it appears that the data sheet documentation might not have been updated properly for this MCU.Could you please review and update the documentation links so that they are consistent and correct for the STM32U031K8?Thank you.
Hello,I am working on SRM motor development for some application and plan to use the STEVAL-CTM015V1 (1 kW, 400 VDC, 3-phase SRM) evaluation board for in-house testing.I have reviewed UM3174 and DB4559, but I could not find any SRM control firmware or example project for this board.Could someone please clarify:Where can I obtain the SRM firmware / example source code for STM32F303CBT6 used on STEVAL-CTM015V1?Is there a ready-made SRM control algorithm (current chopping, turn-on/off angles, speed loop) provided by ST?How is this board intended to be programmed? (recommended IDE / reference project)Any guidance or pointers to official ST resources would be appreciated.
Hi Team,We are currently working with a custom board that uses the STM32H745BIT6 MCU, and we are attempting to connect it to the STLINK-V3SET debugger. However, we are experiencing intermittent debugging issues described below:The debugger successfully enters debug mode only 2–3 times when done the first time.In most cases, the debugger connects and enters debug mode, but after approximately 6–8 seconds, it displays a “Target lost” error (please refer to the attached photo).Often, it shows “Target not responding.” When this happens, we need to power cycle the board. After turning the power supply off and on again, it behaves as described in point 2.This issue has become a major roadblock in our development process.Could you please advise if we might be missing something or configuring anything incorrectly? If you require any additional information from our side (errors, logs, etc.), please let us know and we will provide it.Best regards,Prathiksha
There is a bug in the above mentioned function in stm32f1xx_hal_flash_ex.c file. The function has a uint32_t type parameter WriteProtectPage which determines the flash page chunks to disable the write protection of. On my F103 MCU it means every bit corresponds to 4 pages (each page is 1 Kbyte, total of 128 Kbyte flash memory). This line then combines the currently write protected pages with WriteProtectPage (0 means protected, 1 means unprotected):WriteProtectPage = (FLASH_OB_GetWRP() | WriteProtectPage); The function then slices WriteProtectPage up into 4 pieces (4 WRP option bytes):WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO31MASK); WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO63MASK) >> 8U); WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES64TO95MASK) >> 16U); WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES96TO127MASK) >> 24U); It then erases the option byte area (r
Hi,peripheral handles, either the dedicated ones or the labeled ones are usable only during runtime, they're filled with data at the initialization. However, it would be practical to also get a compile-time usable definition as well.So, for example if I label timer 3 as 'MyTimer', we'll get#define MyTimer htim3It would be practical to also get something like this:#define _MyTimer_ TIM3This would give access to e.g. register addresses at compile time. For example, if I want to create a pointer table to the timer CCRs, I can write:volatile const uint32_t *TabCcrPtr[] = { &_MyTimer_->CCR1, &_MyTimer_->CCR2, &_MyTimer_->CCR3, &_MyTimer_->CCR4 };The idea is to have shorter code using tables because it's not needed to use switch statements, etc.Regards
I am currently using the NUCLEO-H563ZI board to test SPI functionality. I configured SPI1 as a master and was able to successfully transmit and receive data using HAL_SPI_TransmitReceive(). However, when I switched to SPI2, I found that the clock signal does not toggle at all, no matter what I try. Is there anything specific that needs to be configured additionally for SPI2? Below is my code; the rest was automatically generated by MX. uint8_t spi_TransmitReceive(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, const uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout) { HAL_StatusTypeDef status; HAL_GPIO_WritePin(GPIOx, GPIO_Pin, GPIO_PIN_RESET); status = HAL_SPI_TransmitReceive(&hspi2, pTxData, pRxData, Size, Timeout); HAL_GPIO_WritePin(GPIOx, GPIO_Pin, GPIO_PIN_SET); return status; } void example_spi_transmitreceive() { printf("\r\nExample SPI Transmit and Receive.\r\n"); uint8_t txbuf[1024]; uint8_t rxbuf[1024] = {0}; for(int i = 0; i < 1024; i++
I'm running a build with meta-webkit on the scarthgap branch for the STM32MP257-EV1. I'm trying to get a web browser working for a custom web page and the performance is pretty poor and I'm not quite sure why. It seems like there's a lot of people doing a similar project but not a lot of hard benchmarking so I'm partially hoping we can make this thread to provide help for people in the future and also maybe I can figure out why my build is running so slow.Here's a more minimal example that anyone should be able to test.If I run cog https://webglsamples.org/aquarium/aquarium.htmlset it to 500 fish, and then look at top. I get about 79% cpu usage for wpewebkit and the output of /sys/kernel/debug/gc/load is:The previous 100ms HW load device : 0 core : 0 load : 62.26%The screen connected via LVDS has a noticeable lag.If I set the fish count to 100 then there's no lag. I know using a web browser on the MPU is pushing it's capabilities but it would be awesome if someone could confirm
Hello, when STM32CubeIDE generate code for STM32H523VCT6, VTOR_TABLE_NS_START_ADDR constant contain wrong value:#define VTOR_TABLE_NS_START_ADDR 0x04020000UCorrect value should be #define VTOR_TABLE_NS_START_ADDR 0x08020000U How to reproduce:STM32CubeIDE Version: 1.18.1STM32Cube FW_H5: 1.5.0Start new project -> for commercial part number select STM32H523VCT6 -> enable trust zone -> generate code.Check file main.c under secure directory. Regards,Slavomir Tomascik
Hello, I'm using CubeMX version 6.17.0 on MacOS, with an STM32H503CBT6 mcu.I'm trying to use an external audio crystal with a frequency of 24.576mhz, after setting the new frequency in the clock configuration tab, I get the right value in the .ioc file. However, "EXTERNAL_CLOCK_VALUE" doesn't seem to be defined in the stm32h5xx_hal_conf.h file, and the default 12288000UL value will be used instead. This makes audio all choppy and distorted, unless I manually define "EXTERNAL_CLOCK_VALUE" in this file to 24576000UL.I tried with other MCU families like the G0B1 and it will correctly generate the clock in the hal files.Is this a bug for the h5 series?
The conclusion is that setting filters and interrupts on FIFO0 leads to exception handlingFDCAN1_IT1_IRQHandler.The reason for this behavior is an error in the file. startup_stm32g431cbtx.s ERROR ...word ADC1_2_IRQHandler.word USB_HP_IRQHandler.word USB_LP_IRQHandler.wordh FDCAN1_IT0_IRQHandler.word FDCAN1_IT1_IRQHandler.word EXTI9_5_IRQHandler.word TIM1_BRK_TIM15_IRQHandler .. This is how it should be ... .word ADC1_2_IRQHandler.word USB_HP_IRQHandler.word USB_LP_IRQHandler.word FDCAN1_IT1_IRQHandler.word FDCAN1_IT0_IRQHandler.word EXTI9_5_IRQHandler.word TIM1_BRK_TIM15_IRQHandler ... As an example, the code that I use is for testing so that there are no questions). void CAN_Config(void) { FDCAN_GlobalTypeDef *CAN = FDCAN1; uint32_t *filterRAM = (uint32_t *)RAMBaseFDCAN1; // Включение тактирования для CAN RCC->APB1ENR1 |= RCC_APB1ENR1_FDCANEN; RCC->CCIPR &= ~RCC_CCIPR_FDCANSEL; // PLL "Q" for FDCAN RCC->CCIPR |= (0x1 <<
Hello!I just bought the stlink-v3minie for myself but I am unable to flash my board using it. I can program my board with a borrowed stlink-v3pwr but not with the minie.I have upgraded the firmware on it and it still doesnt work. It fails with this output:ST-LINK SN : 003300313235510537333439 ST-LINK FW : V3J17M10 Board : STLINK-V3MINIE Voltage : 3.28V SWD freq : 8000 KHz Connect mode: Under Reset Reset mode : Hardware reset Device ID : 0x451 Revision ID : Rev Z Device name : STM32F76x/STM32F77x Flash size : 2 MBytes Device type : MCU Device CPU : Cortex-M7 BL Version : 0x93 Opening and parsing file: ST-LINK_GDB_server_a28496.srec Memory Programming ... File : ST-LINK_GDB_server_a28496.srec Size : 668.68 KB Address : 0x08000000 Erasing memory corresponding to sector 0: Erasing internal memory sectors [0 6] Error: failed to erase memory Error: failed to erase memory Encountered Error when opening C:\ST\STM32CubeIDE_1.18.0\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.e
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.