Ask questions and find answers on STM32Cube packages, including HAL, LL and middleware, and expansion software.
Most recent activity
Hi,I've a project that has quite a lot of peripheral configurations, plus code, based around Nucleo H755.Now I need to port this into a new project based on the same chip (STM32H755ZIT6) but targeting my own board design. I will be using the same peripherals.Is there a convenient way to migrate the project in CubeIDE without having to painstakingly re-enter all of the .ioc's configuration parameters in a clean project?Copying the code over is easy enough, it's just stuff relating to the BSP that I see as problematic.Having previously played with editing the ioc file manually I concluded that this is not a good way forward (and I'm aware that it's not recommended).Thanks
CAN bootloader for STM32F103C6T6A with an application 1st Stage: Bootloader (loaded via ST-Link/V2) 2nd Stage: Application code (uploaded via CAN) & How to Let the Application Know Firmware Was Uploaded via CAN
I am using the DMA in a few places. I am wondering should these variables be volatile. As it is, the compiler has no idea when the data will be read from or written into these variables. When that is the case, shouldn't you make the variable volatile? I don't think I have seen them as volatile in the example code however. Am I missing something here?
DCMIPP_ContinuousMode_FSBL - DCMIPP_ContinuousMode_FSBLReading project nodes...DCMIPP_ContinuousMode_FSBL.outError[Lt006]: Incompatible object(s): evision-awb.o(libn6-evision-awb_iar.a) and 2 other objects in libn6-evision-awb_iar.a and 2 other libraries use VFP instructions incompatible with No vfp (provided as FPU option)Warning[Lt049]: Potential floating point parameter passing conflict. The first module below references the second and they have been built with different settings.AAPCS, base variant: isp_algo.oAAPCS, VFP variant: evision-st-ae.o(libn6-evision-st-ae_iar.a)Warning[Lt049]: Potential floating point parameter passing conflict. The first module below references the second and they have been built with different settings.AAPCS, base variant: isp_algo.oAAPCS, VFP variant: evision-awb.o(libn6-evision-awb_iar.a)Total number of errors: 1Total number of warnings: 2Resolving dependencies...Build failed
Hi STM32 Community,I'm working with the STM32L072 MCU which has 192KB of Flash. I'm implementing a bootloader + dual app OTA architecture. Here's my current memory layout:Region Start Address End Address DescriptionBootloader0x080000000x08002FFFStatic bootloaderApp10x08003000-0x08002FFFCurrently running appApp2 (OTA)0x080190000x0802EFFFTarget for OTAas per detasheet: Each sector is 4KB, containing 32 pages of 128 bytes each.From App1, I'm trying to erase App2’s flash region using HAL_FLASHEx_Erase().so oviusly in system file of app 1 the vector offset is set at 0x3000.flashbase is defines as default 0x08000000inkiel option for setting conf: ROM1 start -> 0x3000 and size as 0x18FFF bcz i need 88kb atleast for app1.Here’s my erase logic:but my while checking in debug mode the code end at error and stuck at while(1)#define FLASH_PAGE_SIZE 128U #define FLASH_USER_START_ADDR 0x08019000U #define FLASH_USER_END_ADDR 0x0802EFFFU void Flash_Erase_CodeB(void) { uint32_t PageError
Hello Everyone,This is my first time using the H755's adc with an external trigger pin.However, my settings and code don't make the H755's adc work.Below is the configuration file on CUBEMX and the main.c . fileThanks,HAILV/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************** * @attention * * Copyright (c) 2023 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "usb_device.h" /* P
I evaluated the jpeg codec on stm32757i-eval board with the test image provided in the example design.How to do the JPEG encoding with the custom input bmp or jpg image.
Dear friendsI am trying to develop a bootloader with STM32F469BIT mcu. First of all, I divided the 2048K flash area allocated to me into zones according to certain sector addresses. These areas;Bootloader -> FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 32K App1 -> FLASH (rx) : ORIGIN = 0x08008000, LENGTH = 1008K App2 -> FLASH (rx) : ORIGIN = 0x08104000, LENGTH = 1008KAfter separating these areas;App1 -> #define VECT_TAB_OFFSET 0x00008000U App2 -> #define VECT_TAB_OFFSET 0x00104000UI have a task in the bootloader and I control a button with an EXTI in this task. I specify that the jump operation will be performed when the button is pressed. typedef StaticTask_t osStaticThreadDef_t; typedef void (*pFunction)(void); #define APP1_ADDRESS ((uint32_t)0x08008000) #define NVIC_IRQ_COUNT 240 #define BASEPRI_MASK ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << \ (8 - configPRIO_BITS) ) extern TIM_HandleTypeDef htim6; extern TIM_HandleTypeDef htim2; static void prvSa
Hi all I am trying to understand how can I send data and recieve ,,Can you share any example code or something. I am sharing my project can you so confirm me is configuration is correct. B.R Ashish
Hi,I'm starting to try things with the new N6 MCU serie using the NUCLEO-N657X0-Q devboard on STM32 CubeIDE 1.18.0.I'm pretty confused with the new .ioc project configuration and the possibility to configure my board on "FSBL" or "App".I generated a first project and I'm surprised to see that 2 subproject have been generated in my folder:- myProject_Appli-myProject_FSBLBecause I don't want to use FSBL my first idea is to code in Appli but the first thing I see is that there is no SystemClock_Config(); in my main().I can directly see the effect of this because for exemple my Timer Clock is limited to 64MHz while it is configured to 400Mhz in the Clock config menu of the .ioc.Is the solution just to copy/paste the SystemClock_Config(); that i can find in my "FSBL" app or am I missing something? Thanks in advance for your help!jmF
hi all, I am using STM32F733xx and i want to read the Vout i will be monitoring is between 1-5v, to read that i have used analogue pins PG13, PH3 ,PH2,PG14, PE2,PE3, PE6, PE4,PE5,PF1,PF0,PF2I already have the PCB so i cant change the design can anyone suggest any solution to this?Looking for some firmware based solution to this problem. Thanks in advance,Regards,Sal
Split from EEPROM Emulation: meaning of the VirtAddVarTab as this is a new question.The eeprom emulation in my simple trial sofware is working fine. The code is quite small.I tried to use this software inside a more complex program, larger than 64K, and the system hangs.From what I have understood only the first 16K are available for program with the suggested setup.It is possile to have a setup for eeprom that allows to use more flash program memory?
The evaluation board, STM32H743I-EVAL, is used. Where can I find the sample code?I would like the source code.
I'm working on a bare-metal project using an STM32F407VET6 (generic “black board” from China - https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0.html). I'm trying to trigger ADC1 conversions using TIM2_TRGO (timer trigger output), but the ADC only works when using SWSTART. I've done extensive testing and debugging to isolate the problem. Here's what I found:What works:ADC1 works with SWSTART: I can read from channel 1 (PA1) manually and see the expected values.LED debug: PD12 lights up if the ADC reads a value above 1000.TIM2 generates update events: Confirmed by enabling the TIM2 UIF interrupt and toggling PD12 on each update.Trigger configuration:EXTSEL = 4 → TIM2_TRGOEXTEN = 1 → rising edgeForced trigger via TIM2->EGR |= TIM_EGR_UG does not trigger the ADC.VREF+ is connected to 3.3V, and VREF- to GND, with a 100nF decoupling cap.TIM2_TRGO is confirmed to work via IRQ debug (PD12 blinks).DMA is configured (when enabled), but never triggers → PD12 never toggles. Debu
Not a bug as such, but a nuisance none the less, and likely to catch out those less familiar with the quirks of H7 Ethernet MAC DMA...If you set up Ethernet and LwIP the way that is recommended (and partially done by STM32CubeMX), with the Ethernet transmit and receive descriptors, receive buffer and LwIP memory pools within Ethernet DMA reachable RAM (RAM D2, 0x30000000 ...), then for the most everything sort of works.If you use the LwIP sockets API, then it also works as the sockets API copies data to be sent on a socket into LwIP buffers, ensuring that data is in Ethernet DMA reachable memory.BUT, if you use the netconn API, which is much faster and lighter weight than the sockets API, functions like netconn_write do not copy socket send data. It makes it all the way to the Ethernet driver as zero copy, which is nice. Unfortunately, it is likely that the sent data is on the stack of the calling process, or the general heap. Which makes it non DMA reachable for the
I have a raw dataset in header file; I have to do some post processing with it ; So How can I get it done with USART by plotting the waveform .even After Configuring USART2 and UCPD with CDC also I dont find USART is detected; If I Am wrong Correct me and How to approach this?
I want to add the STM32 sequencer utility (https://wiki.st.com/stm32mcu/wiki/Utility:Sequencer) into my STM32L072 project.I have downloaded the STM32Cube_FW_L0_V1.12.3 package for STM32L0 but there is no "sequencer" folder for the utility. Besides, there is no option in STM32CubeMX to add the sequencer utility.Where can I find the STM32 sequencer utility for STM32L0?Thanks!
Hi, I am trying to send an integer from the PC (using Putty serial program) to the Nucleo board via USART interrupt but the board doesn't acquire the number correctly. In the code written here this happens: if I send any kind of number to the board like: 100, 200, 500, 700, 900, a different number arrive to the board and I can't see any changing in the funtcion:__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, num);Seems that the value that I am passing by using a char message and then converted in uint8_t format to the function is converted in a bad number. In fact on the channel TM1_CH1 where I connect one channel of my digital scope, any kind of three digit number I enter in the serial always has the same effect. Any help? Attached some picture:/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.c * @brief : Main program body ****************************************************************************
Is there any update on this issue? I have similar problem with being not able to initialize SD Card using SDMMC1 + FileX + ThreadX. Getting SDMMC_FLAG_CTIMEOUT while initialization (SD_PowerON() function). Does someone have maybe a working example of using SD Card with FileX on U545 uC?
Hello everyone.I configured stm32H733VGT6 to support the usb2514 hub device. To do this I used Azure RTOS and the USBX library with STM32CubeIDE Version: 1.17.0. Everything works fine, the USB2514 device is always recognized at power-on with the correct VID and PID (see the image). The problem is that when I connect a device to one of the 4 usb ports (downstream), insertion is recognized (UX_DEVICE_CONNECTION event), as well as removal (UX_DEVICE_DISCONNECTION event), but the peripheral is not recognized.The USB2514 is configured with SEL0, SEL1, NON_REM0 and NON_REM1 all with pulldown resistors (100KOhm) to GND.The strange thing is that at startup, even if there are no devices connected to the USB downstream ports, the event UX_DEVICE_CONNECTION occurs.When I connected a device, the condition:if (current_class -> ux_host_class_entry_function == ux_host_class_cdc_acm_entry)current_class returns a wrong ux_host_class_name and exit from if statement, always. Is there anyone who h
Hello.I am using USBX pima_mtp device class.The project uses the example from @example with some changes:Storage type was changed to ierarchical.Added support for image type associations.MTP functions were implemented in ux_device_pima_mtp.c Each object is assigned a corresponding parent object, and when a request is received for get_object_references. An array of the corresponding structure is sent, which is described in the MTP specification v1.1 document.Writing to the storage root occurs correctly. I can upload and download files without problems. But I encountered 2 problems: Can't copy files to folders that are in the storage root. Copying to the root itself occurs successfully. the Windows host shows a pop-up window with the error "Cannot write to this location", although the rights to write to the folder object are not limited, as well as the rights of the storage. On the Linux host, it is not possible to copy even to the root. When writing to new folders that are in the s
Good dayI am using a NUCLEO-STMG0B1RE board and i am trying to handle a 4x3 matrix keypad inputs using interrupts to switch menus on an OLED screen. The keypad inputs worked when I used continuous polling for keypad inputs. The OLED needs to continuously update (at least once per second) with data from ADC. This also worked when I used continuous polling, but the keypad inputs was a bit sluggish and I am scared it will slow my processor down for future use.With the current code I am trying to do the following:when key pressed, corresponding column goes highinterrupt triggeredRising callback sets KeypadtriggerDetected = 1 and stores the columnKeypadtriggerDetected activates if statement in while(1) which pulls all the rows low, then sets them high one at a time.When the key pressed is identified from keymap, that key gets processed with updates the state the OLED menu should be inthat state then gets passed to displayMenuOLED to display the corresponding menuWith the current code I
i need to develop a custom HID device, where I can be able to control the LEDS using HID. the user can control using PYTHON OR GUI please provide me the code i am using NUCLEO-H723ZG
I want to connect my STM32H573I-DK to Azure IoT Hub via MQTT over websocket to avoid firewall complications.For that I am using STM32CubeExpansion_Cloud_AZURE_H5_V1.1.0 project (https://www.st.com/en/embedded-software/x-cube-azure-h5.html). I added NXD_MQTT_OVER_WEBSOCKET to the preprocessor and added ../../../../../../../Middlewares/ST/netxduo/addons/websocket path to include paths to activate MQTT over websocket. I still got connection issues: [ERROR] IoTHub client connect fail: MQTT CONNECT FAIL status: 65541Disconnected from IoTHub!: error code = 0x00010005Reconnecting iothub, after backoffI debugged it to see that the nx_tcp_socket_receive throws an error 56. Is there any explanation on how to use MQTT over websockets in that specific scenario or does somebody has experience with that? Or somebody who can help me in different way?
Hi, I am curious one thing when using the HAL libraries. Just as an basic exapmle i assign LED1 to PB12 pin of STM32F070CBT6 as an GPIO_output. And i want to use HAL_GPIO_WritePin(GPIOB, LED1, LED1_SET); instead of HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET); . Do you think it is weird that i want to use my variables like that with HAL libraries? Second thing is (if it is not weir or inappropriate), should i define my definitions as "definitions.c" or "definitions.h"? When i make some search, .c file is not recommended. I am not sure if i do all these steps with my ST microcontroller and it works well.
ST Community highlights – April to June 2026
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.