Join conversations with your peers and ST experts. Explore the full potential of STM32 microcontrollers for your embedded design.
Most recent activity
Title edited by a ST moderator to reflect the content. Hello, STM32CubeMX Version:6.15.0 STM32CubeH7 Firmware Package V1.12.0 / 30-October-2024 This Is My QSPI Configure in STM32CubeMX 1、When I Start QSPI Work in main function,The QSPI Will always work。QSPI work on CM4-Core。 source: The QSPI CS signal wave,which Delta Time is 13us,not big than 1s according code: 2、When I Start QSPI Work in FreeRTOS Thread,The QSPI-CS signal Always High,and clock is always out 。QSPI work on CM4-Core。 source: The CS Signal is always High, And clock signal is always output.The next is qspi-clock signal: My Question is: 1、When I Start QSPI transmit-receive in main() function, It will always work, no stop. It's CS-signal always output low and high. Why? 2、When I Start QSPI transmit-receive in FreeRTOS thread, It does not work, CS-signal is always High, and clock is always output. I Have No Idea to solve it after many trial, Could You Have Some Idea?
hi 1. Your STM32WBA55G-DK1 with BLE_Audio_TMAP_PeripheralThe TMAP (Telephony and Media Audio Profile) example in the STM32 WBA SDK has different roles.In your case, the BLE_Audio_TMAP_Peripheral project is designed as a TMAP Sink/Peripheral device (meaning it receives Auracast™ / BIS streams).So your STM32WBA55G-DK1 is the Receiver (Sink).2. Your nRF5340 Audio DKYou are running the nRF5340 Audio DK in “Broadcast Source / Transmitter” role.That means it is sending audio over BIS (Broadcast Isochronous Streams).In your logs:LE_AUDIO_EVT_STREAM_0 LE_AUDIO_EVT_STREAM_1 ...These indicate stream events per BIS index being transmitted.3. BIS and SubgroupsYou mentioned Number of BIS = 4, with 2 subgroups.Example breakdown:Subgroup 1 → BIS 0 & BIS 1Subgroup 2 → BIS 2 & BIS 3The transmitter (nRF5340) is advertising 4 streams grouped into 2 subgroups.The receiver (STM32WBA) must parse the BASE (Broadcast Audio Stream Endpoint) info and decide:Which subgroup(s) it will sync to.Which B
MCU:STM32G070CBTx LQFP48My question is as follows: Why is it necessary to execute HAL_ADCEx_Calibration_Start() to calibrate EO and EG before using the ADC?Why isn’t this calibration performed at the factory before shipment?
Hello,I am trying to set up an external flash memory (MX25V1635F) on a Nucleo-U575ZI-Q.I have successfully used the low-level drivers (LLD) from the manufacturer Macronix and integrated them into the Levelx functions:UINT lx_stm32_nor_custom_driver_initialize(LX_NOR_FLASH *nor_flash) { UINT ret = LX_SUCCESS; ULONG total_blocks = 0; ULONG words_per_block = 0; /* USER CODE BEGIN Init_Section_0 */ total_blocks = 32; words_per_block = 16384; nor_flash->lx_nor_flash_base_address = 0; /* USER CODE END Init_Section_0 */ nor_flash->lx_nor_flash_total_blocks = total_blocks; nor_flash->lx_nor_flash_words_per_block = words_per_block; /* USER CODE BEGIN Init_Section_1 */ /* USER CODE END Init_Section_1 */ nor_flash->lx_nor_flash_driver_read = lx_nor_driver_read; nor_flash->lx_nor_flash_driver_write = lx_nor_driver_write; nor_flash->lx_nor_flash_driver_block_erase = lx_nor_driver_block_erase; nor_flash->lx_nor_flash_driver_block_erased_verify = lx_nor_
Hi everyone,I’m planning to connect a 3-digit 7-segment common cathode display to my STM32 MCU. The display will be multiplexed, and I intend to use 2N2222 NPN transistors to switch each digit (common cathode). Each segment will have its own current-limiting resistor.For safety, I’m designing for If = 10 mA per segment instead of 20 mA. I’ve attached my resistor and transistor current calculations (see attachment). I used 3.3 V as Vcc, because GPIO Output HIGH is 3.3 V. Ignore resistor value on shematic.Could you please check if my calculations and connection approach are correct, and confirm whether using 2N2222 transistors is suitable in this case? I’m also a bit concerned whether 3.3 V will be enough to properly drive the display.
We're building a Wi-Fi gateway where the STM32U585 microcontroller communicates with a modem via both UART and SPI serial.As for the serial port, we've configured it as follows:void MX_USART1_UART_Init(void) { /* USER CODE BEGIN USART1_Init 0 */ /* USER CODE END USART1_Init 0 */ /* USER CODE BEGIN USART1_Init 1 */ /* USER CODE END USART1_Init 1 */ huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_RTS_CTS; huart1.Init.OverSampling = UART_OVERSAMPLING_16; huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1; huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HA
Dear Community,I have the B-WBA5M-WPAN module and trying to get a basic OpenThread Project working with Demo Code provided.The Demo Code provided for the module is not sufficient - I am trying to change LED Color when button B2 is pressed.I am trying to copy code examples for the NUCLEO-WBA55CG, but it is not working as there any many dependencies in the BSP file unique to the NUCLEO Board.I also can't find a proper Application Note for the module.Any assistance will be greatly appreciated.
Line 2185 of stm32wbxx_hal_usart.c uses incorrect macros for clearing the receiver timeout flag:__HAL_UART_CLEAR_FLAG(husart, UART_CLEAR_RTOF);I believe this should be:__HAL_USART_CLEAR_FLAG(husart, USART_CLEAR_RTOF);The original line warns of implicit function declaration for __HAL_UART_CLEAR_FLAG and an undeclared identifier for UART_CLEAR_RTOF in projects that use the USART but not he LPUART.The bug can be found in the latest release on GitHub.Updating the file is fine, the functionality is identical. But every change to the USART configuration with CubeMX overwrites the updated file.
Hi,I am facing issue with bootup in stm32h745xih6 controller. I am able to initiate debug for CM7 but when I initiate the same for CM4, in that case CM 4 does not go in debug and it fails and following error in there:<terminated>MOSv1.2_CM4 Debug [STM32 C/C++ Application]<terminated, exit value: 0>arm-none-eabi-gdb (14.2.90.20240526) <terminated, exit value: 18>ST-LINK (ST-LINK GDB server) Whereas same application runs perfectly fine on STM32h745i discovery board.So what could the issue be, could it be SW related or HW is at fault only?
Post edited by ST moderator to be inline with the community rules especially with the code sharing. In next time please use </> button to paste your code. Please read this post: How to insert source code Hi everyone, I’m trying to communicate with a Maxim DS2431 (1-Wire EEPROM) using an STM32F446RE MCU.I can successfully generate the reset and sometimes detect a presence pulse, but when I send the Read ROM (0x33) command, the data I receive is always 0x00 for all 8 bytes. I’m implementing the 1-Wire protocol manually (bit-banging) using a GPIO pin.Below are the hardware details and what I’ve tried so far. 🧱 Hardware setup MCU: STM32F446RE @ 180 MHz DS2431 powered at 3.3V (not parasitic) 1-Wire line connected to: GPIOA_PIN_0 Pull-up resistor: tried 2.2kΩ and 1.8 Is there anyone who has worked with DS2431 on STM32 before and can share experience, timing details, or working example code? Thanks in advance :folded_hands: Here is my 1-Wire read implementation: ``
I need to do long (100k+ samples) PSSI reception with GPDMA using linked list on STM32H7R3L8H6H. CubeMX version is v6.15.0 and CubeIDE is v1.19.0. Since single DMA request can't be that long, I am thinking of doing it with two circular linked-list nodes. There are no good examples (at least I didn't find) so I am trying to do with my own logic.The idea is to transfer data from PSSI peripheral to XSPI1 PSRAM with 8192 byte blocks. When one block finishes and second one starts, I increase the finished block destination address by 8192. Requests execute in circle.I setup GPDMA channel 12 for the linked list:And here is the linked list with two nodes N1 and N2 configured exactly the same (except name): Generated setup function in linked_list.cHAL_StatusTypeDef MX_PSSI_DMA_LL_Config(void) { HAL_StatusTypeDef ret = HAL_OK; /* DMA node configuration declaration */ DMA_NodeConfTypeDef pNodeConfig; /* Set node configuration ################################################*/ pNod
Hello everyone,I am trying to communicate via LoRaWAN on the live object network of the French operator Orange. I'm using the nucleo STM32WL55 for the end device. Here are the version of the application on the end device side : APPLICATION_VERSION: V1.3.1MW_LORAWAN_VERSION: V2.6.1MW_RADIO_VERSION: V1.3.1L2_SPEC_VERSION: V1.0.3RP_SPEC_VERSION: V1-1.0.3I tried with these two lora mac version :* - 0x01000300: Link Layer(L2) v1.0.3 + Regional Parameters(RP) v1.0.3* - 0x01000400: Link Layer TS001-1.0.4 + Regional Parameters RP002-1.0.1 The Live Object coverage is good, I used a field tester from ADEUNIS to find out if it's network side or end device side. I think the problem come from a configuration.Do you guys have any idea of what the issue ?
Hello,We made a custom pcb with STM32WLE5CC MCU, and with the IPD BALFHB-WL-05D3. You'll find in attachement the schematic.We use the STM32CubeWL software. We tries the same version on the nucleo and everityhing was going well, we could join with the nucleo (Nucleo WL55JC2) We would like some support to find out why we could not join the network, and why there is CRC error.Our Gateway is a Multitech MTCDT-H5-210L Firmware 5.3.8s-s1Thank you for your helpAnthonyEDIT : The problem came from the 32 MHz quartz, which had a slightly low frequency. We solved the problem with the internal capacity of the microcontroller
I bought the STM32H750B Discovery and wanted to program a first example "LTDC Paint" on the demo to start. I am using the STM32Cube IDE version 1.9 (default installation, no changes made).Procedure:- File -> New -> STM32 Project -> Examples -> select the Discovery Board -> select the LTDC Paint example -> Run LTDC Paint Then I get the following error message, see attachment:"Failed to execute MI command.... Load failed ... LTDC_Paint.elf" Which configuration did I miss?
Hello ST Team, I am Ramya Ranganathan from Karaka eDrives. I am working on the STM32WB5MM-DK discovery kit and used STM32CubeMonitor-RF BLE Transmit and Receive data with two different boards. The packets are missing even less than 1 meter distance. The above Test is done at distance of 23 Centimeters only. Is there need for any modification in settings to achieve long distance and reduce the Packet Data Rate(PER).Thanks in Advance.
My understanding is that when setting BFB2, Bank 2 is remapped to 0x0800 0000.Why should we need to set VTOR on reset if thanks to remapping it should interact the same?Meaning I expect the start of my vector table for app2 to be at the same address as app1 since I have not modified it.I had to uncomment #define USER_VECT_TAB_ADDRESS so that SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET;would run during the SystemInit function at reset.For context I am compiling two programs with little difference in code and with the same linker script. /*!< Uncomment the following line if you need to relocate the vector table anywhere in Flash or Sram, else the vector table is kept at the automatic remap of boot address selected */ #define USER_VECT_TAB_ADDRESS #if defined(USER_VECT_TAB_ADDRESS) /*!< Uncomment the following line if you need to relocate your vector Table in Sram else user remap will be done in Flash. */ /* #define VECT_TAB_SRAM */ #if defined(VE
Hi, After configured the GPIO pins via STM32CudeMX and generated the code, when I run the firmware, the "WWDG_IRQHhandler()" problem keep appearing from no way and hinder me from the rest of the development. Please see the attached screen shoot picture. Even after I commented out the customize codes the problem didn't go away. Same problem seen on the P-NUCLEO-DONGLE too. I configured the MCU to support "USB HID + Zigbee". Any help?
Hi, Please help me sort this out.I am trying to port a custom bootloader originally written for the SAMD21 Arm chip to the STM32U385VGT6. We are upgrading our current product with an STM32 Chip. I am having problems with switching from the bootloader to the application binary. My bootloader is loaded at address 0x08000000. The application binary is compiled to run from 0x08010000. I edited the linker script files to locate the binaries properly and tested opening the binary file with a hex editor. All seems situated correctly. Here is my function to jump to the application. APP_CODE_START is set to 0x08010000. I get "jumping to application" in my debug terminal. But the application code is not running. void jumpToApplication(){ DEV_DEBUG_LOG("jumping to application"); // Disable interrupts before changing MSP and VTOR __disable_irq(); // Jump to the sketch __set_MSP(*((uint32_t *)APP_CODE_START
I cannot get smooth calibration to work in STM32l431. This is the code: void HW_RTC_Init(void) { LL_RTC_TimeTypeDef time; LL_RTC_DateTypeDef date; LL_RCC_LSI_Enable(); while(LL_RCC_LSI_IsReady() == 0) { } LL_RCC_SetRTCClockSource(LL_RCC_RTC_CLKSOURCE_LSI); __HAL_RCC_RTC_ENABLE(); LL_RTC_WaitForSynchro(RTC); //Set the default date to 2000-01-01 00:00:00:000 date.Year = 0; date.Day = 1; date.Month = 1; date.WeekDay = 6; time.Hours = 0; time.Minutes = 0; time.Seconds = 0; /* Configure RTC */ RTCHandle.Instance = RTC; /* Set the RTC time base to 1s */ /* Configure RTC prescaler and RTC data registers as follow: - Hour Format = Format 24 - Asynch Prediv = Value according to source clock - Synch Prediv = Value according to source clock - OutPut = Output Disable - OutPutPolarity = High Polarity - OutPutType = Open Drain */ RTCHandle.Init.HourFormat = RTC_HOURFORMAT_24; RTCHandle.Init.AsynchPrediv = 127; RTCHandle.Init.SynchPrediv = 255; RTCHandle.Init
After configuring SPI1 in CubeMX and calling HAL_SPI_Transmit, I get a signal on the SPI1_MOSI line, but no signal on the SPI1_CK. I have confirmed that the pin is working correctly with other code and tried different clock speeds to see if that was the problem. Any ideas on why a clock signal is not being sent over SPI1_CK?
Hi,Currently my STM32F767 is coming up in dual bank mode (I'm not sure why, since this does not seem to be the default) but I want to turn this off so I get the full 2Mbytes.However, I can see from AN4826 that if I turn off dual bank mode while the software is running, it's likely to crash because the flash width changes from 128 bit to 256 bit.I thought there would be a way to set the bank mode in CubeIDE, but I cannot find it anywhere. If I use CubeIDE to program an image into flash, then that seems to effectively limit me to dual bank mode and only 1Mbyte of flash.Can you advise me how I can turn off dual bank mode so that the image is programmed in by CubeIDE as a single-bank image?RegardsRobin Terry
I am using the LoRaWAN end-node dual-core demo on an STM32WL5M. I noticed the RAM_SHARED section in the .LD files of each core project points to different addresses, one to 0x20008000 and one to 0x20009000. Is this a potential issue?
Hallo everyone.I'm facing some difficulties while trying to build LWM2M application on the board STM32L471 (FreeRTOS; I use I-CUBE-Anjay SDK pack).I cannot run my code on the board because of lack of RAM and FLASH.To choose another board is not an option.Has anyone had the same issue?Is there any other way to implement LWM2M objects on IoT device without using Anjay?
STM32F407VET6 + STM32CubeIDE + CMSIS_OS2Latest IDE, w/ FreeRTOS 10.2.1, CMSIS-RTOS 2.00Touch LCD IRQ on PC_5.EXTI line[9:5] enabled, code gen enabled, and Call HAL Handler checked.Event defined. Fails with both dynamic and static Allocation.Include Param: xEventGroupSetBitFromISR enabled (doesn't work disabled either)I want to set a flag when the touch interrupt is triggered, then resume a handler thread waiting with osEventFlagsWait().Anyway, IRQ call succeeds.but (see comments) void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == Touch_INT_Pin) { uint32_t flags = 0x00; extern osEventFlagsId_t touchEventHandle; flags = osEventFlagsSet(touchEventHandle, 0x01); // ^ returns 0x01, as expected. flags = osEventFlagsGet(touchEventHandle); // ^ returns 0x00, but should be 0x01 } . . . }debug tracing shows touchEventHandle points to the same heap location as FreeRTOS set up.Those Set/Get routines work fine within a thre
When we were working on a small batch, we encountered a situation where one of about 100 pcbs would frequently trigger a hardfault. We found that the problem would recur when the cache was enabled. When the mpu was enabled and configured correctly, it would run normally. Only this one MCU had this problem. We determined that this was an individual, low-probability problem. Through experiments, we felt that the default memory attribute of its peripherals was normal, not device, which caused the error when accessing a reserved address during cache.
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.