1. Main fixed issues for 6.12.1
ID | Summary |
---|---|
186541 | ADC init code error.
When ADC is configured in multimode, an issue with the initialization code structure occurred in the LL Mode due to choosing a value for the "Delay between 2 sampling phases" parameter not matching the constants defined in the LL library file "stm32h7xx_ll_adc.h". The STM32CubeMX V6.12.1 addresses the issue by defining the right values to the delay between 2 sampling phases to align with the constants defined in LL library. |
189231 | The IOC file provided with the STM32MP257F-EV1 board on STM32CubeMX 6.12.0 does not allow the generation of the correct device tree.
The STM32CubeMX V6.12.1 solves the issue by modifying the device tree files related to the STM32MP257F-EV1 board. |
189232 | FLEXGEN data must be generated for each assigned IP on Cortex®-M33 context.
When configuring a peripheral in the Cortex®-M33 context, the FLEXCLKGEN settings for the RCC node in the device tree (DT) are not generated. The STM32CubeMX V6.12.1 fixes this issue by configuring the FLEXCLKGEN for the specified IPs in the Cortex®-M33 context. |
189335 | The pin A19 isn't assignable for both DDR3 and DDR4.
The STM32CubeMX V6.12.1 is allowing pin A19 to be assignable for both DDR3 and DDR4 |
186268 | Code Generation error in MX_FLASH_Init() function when setting BOR level
When activating the FLASH and setting a BOR(Brown-Out Reset)level, the code generation produces an error. Specifically, an if statement appears inside the MX_FLASH_Init() function without any condition after the line HAL_FLASHEx_OBGetConfig(&pOBInit);This if statement extends to the end of the function, causing incorrect behavior. The STM32CubeMX V6.12.1 is addressing this issue. |
189316 | Wrong stack size value for STM32G473RET3Z series.
STM32CubeMX 6.12.1 fixes the stack size by setting it to 0x600. |
189525 | The STM32H725VGH3 microcontroller did not appear in the list of available MCUs.
In the STM32CubeMX V6.12.1, the STM32H725VGH3 MCU is added. |
189688 | An exception occurred after setting a valid "memclk" value in the DDR_CTRL_PHY register.
The values for the parameter "memclk" are outside the permissible range. The STM32CubeMX V6.12.1 is fixing the issue by setting the right range for "memclk" parameter. |
2. Main fixed issues for 6.12.0
ID | Summary |
---|---|
164664 | An issue with GUI display in STM32CubeMX
An issue in GUI STM32CubeMX display. The STM32CubeMX V6.12.0 resolve this issue with disactivate the 3D acceleration. |
166529 | TRACESWO is linked to only to Arm® Cortex®-M7 for the dual-core microcontrollers in the STM32H7 series excluding the STM32H7Rx/7Sx microcontrollers.
In the DEBUG configuration generated by STM32CubeMX, the TRACESWO can only be linked to the Arm® Cortex®-M7. This defect impacts all the dual-core microcontrollers in the STM32H7 series excluding the STM32H7Rx/7Sx microcontrollers. With the STM32CubeMX V6.12.0, user can choose between Arm® Cortex®-M7 and Arm® Cortex-®M4. |
177884 | Unable to uncheck the option "save power of non-active UCPD - deactive Dead Battery pull-up" for the STM32G0 series.
The user can not uncheck the option "save power of non-active UCPD - deactive Dead Battery pull-up". This defect impacts all STM32G0 MCUs. The STM32CubeMX V6.12.0 fixes this issue. |
178050 | MMC interface mode is greyed out when SDMMC1 is set to"MMC 4 bit wide bus" for the STM32H5 series.
The user can not check MMC interface when SDMMC1 is set to "MMC 4 bit wide bus" mode. This defect impacts all STM32H5 MCUs. The STM32CubeMX V6.12.0 resolves this issue. |
178907179287 | Incomplete generated code related to the MX_ADC3_Init() function for the STM32H7 series
When activating ADC3 and choosing Prescaler::Asynchronous clock mode divided by 12 parameter, and then generating the code, in the MX_ADC3_Init() function,this line of code is missing "hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV12. This defect impacts all STM32H7 MCUs. The STM32CubeMX V6.12.0 resolves this error. |
179275 | Missing init generated code related to the MX_ADC4_Init() function for the STM32U5 series
When activating ADC4 and enabling channel 9 "IN9", and then generating the code, in the MX_ADC4_Init() function, an init code is missing. This defect impacts all STM32U5 MCUs. The STM32CubeMX V6.12.0 resolves this issue. |
179295 | Wrong generated code related to the MX_ADC1_Init() function for the STM32L4 series
When activating VREFINT and TEMP channels under ADC1, and then generating the code using LL drivers, the MX_ADC1_Init() function is not generated as it should. This defect impacts all STM32L4 MCUs. The STM32CubeMX V6.12.0 resolves this generation error. |
180281 | Issue with Missing 'handle_GPDMA1' in Standard Request Mode for GPDMA Configuration for the STM32U5 series
Code generation issue arises for users when enabling DCMI with "Slave 8 bits Embedded Synchro" parameter, then activating GPDMA1 with "Channel 12 with Standard request mode". This defect impacts all STM32U5 MCUs. The STM32CubeMX V6.12.0 resolves this compilation error. |
180548181495 | Oversampling ratio error for ADC3 in STM32CubeMX generated code for the SSTM32H7 series but the STM32H7Rx/7Sx microcontrollers
When activating ADC3 and enable Regular Oversampling to "ADC3_OVERSAMPLING_RATIO_2" parameter, user encounters compilation error due to "ADC3_OVERSAMPLING_RATIO_2" is undefined. This defect impacts all the STM32H7 series but the STM32H7Rx/7Sx microcontrollers. STM32CubeMX V6.12.0 Update Resolves Compilation Issue. |
180967 | Build errors in ThreadX project with exclusive selection of LL drivers for the STM32 MCUs
When selecting only LL drivers, the ThreadX project encounters build errors. This defect impacts all STM32 MCUs The STM32CubeMX V6.12.0 resolves this generation error. |
181386 | Issue with DAC to ADC internal connection in STM32CubeMX for all the STM32H7 series but the STM32H7Rx/7Sx microcontrollers.
When selecting STM32H7 series, the ADC2 IN16 mode is no longer present for the user to select. Also STM32CubeMX freeze when Linking DAC1_OUT2 to "only on chip analog peripherals" and ADC2_IN17 to '"VDAC1_OUT2 channel". This defect impacts all the STM32H7 series but the STM32H7Rx/7Sx microcontrollers. The STM32CubeMX V6.12.0 resolves this issue. |
181812 | Compilation error related to the custom_stm.c file for the STM32WB series
When generating code with a custom BLE service template, a compilation error occurs stating that undefined reference to `COPY_UUID_128'. This defect impacts all STM32WB MCUs. The STM32CubeMX V6.12.0 resolves this compilation error. |
3. Known limitations
- On Linux®, when using STM32CubeMX V6.12.0, unable to compile the multicontext project, which includes configurations for STM32WL, STM32WBA, STM32U5, STM32L5, STM32H5, STM32H7Rx/7Sx, and STM32H7 dual-core microcontrollers. To resolve this issue, the user must:
- Rename the "startup" folder to "Startup" in all subprojects within the project folder.
- Regenerate the project with STM32CubeMX.
- Build the project.
- When launching STM32CubeMX on Ubuntu version 24.04, the STM32CubeMX icon is not displayed in the toolbar.
- From Ubuntu version 23.10 and subsequent, when using CAD > tools then selecting 'MCU commercial part number' to configure CAD > MCU selector, the CAD viewer is not functional.
- In the case of file access issue during a compilation with some examples on partner IDEs (for instance with the “cannot open-source input file” error message), consider to move either the full package manually, or just the example. For the example, use the Example Selector from STM32CubeMX, closer to the root of the disk (long path issue).
- If “CAD resources” feature is not fully functional when using “Use System Proxy parameters”, try to use the “Manual Configuration of Proxy Server” or “No proxy” instead. (Menu : [Updater Settings…]>[Connection Parameters])
- When unzipping a package on a macOS® system, use an official macOS® application such as the default graphical archive application, or the ditto tool in the command line:
$ditto -x -k setupArchive.zip
If a Linux®-like application is used (such as unzip), the expanded files lose the signature and are not recognized as signed.
- Note: a. Arm and TrustZone are registered trademarks of Arm Limited (or its subsidiaries) in the US and/or elsewhere.
3.1. Issue with Linker Script in STM32CubeMX 6.12.1
Some issues have been encountered in the linker script generated by CMake and Makefile-based projects in STM32CubeMX 6.12.1: For single-core MCUs without TrustZone activated, compilation errors appear in the linker file when generating projects using STM32CubeMX 6.12.1 with the CMake or Makefile projects.
Issue Details :
There is a syntax error in the linker script file (STM32XXXXXXXx_FLASH.ld) that prevents the linker from correctly interpreting the script. The root cause is a missing configuration of the RAM memory layout. Specifically, the “RAM” parameter is missing in four locations in the linker script:
- When calculating the end of the stack.
- At the end of the data section.
- At the end of the BSS section.
- At the end of the _user_heap_stack section.
Workaround :
To avoid this issue, users should manually add the missing keyword "RAM" in the linker script at the following locations:
- When calculating the end of the stack:
- At the end of the data section:
- At the end of the BSS section:
- At the end of the _user_heap_stack section:
By following these steps, you can resolve the linker script issues in STM32CubeMX 6.12.1 for CMake and Makefile-based projects.
3.2. When selecting microcontrollers in the STM32G0 series
- Regarding the cohabitation between USB and USB Power Delivery, the VID and PID of USB Power Delivery and USB are not automatically aligned. VID/PID values must be aligned manually.
- When both the USB Power Delivery and FreeRTOS™ CMSIS_V1 middleware are enabled at the same time, the FreeRTOS™
eTaskGetState
parameter must be enabled in the include parameters tab.
3.3. When selecting microcontrollers in the STM32H5 series
- When migrating projects with OEM-iROT boot path from STM32CubeMX V6.8.x to STM32CubeMX V6.10.x or later releases, the user might need to reconfigure ROT_Provisioning.
- If the Secure Manager configuration is updated through the TPC used in standalone mode, the user must relaunch the provisioning.bat.
- The makefile generation no longer works as soon as the project structure is changed from "Secure Project only" or "Non Secure Project only" to "Secure Project and Non Secure Project enabled (dual project)".
- In Microsoft® Azure® NetX Duo, some configuration flags, which are not used in the STM32Cube firmware package examples, might be nonfunctional when combined.
- For the STM32H57x microcontrollers in the STM32H5 series, and following the creation of a project with a secure manager boot path configuration, it is essential to implement two specific alterations to the IAR project to facilitate the processes of flashing and debugging.
3.4. When selecting microcontrollers in the STM32H7 series
- For the STM32H7Sx microcontrollers in the STM32H7 series, when using the NUCLEO-H7S3L8 board, the boot path is not supported. It is only supported for STM32H7S78-DK board or custom boards with the same flash and same pin mapping.
- For the STM32H7Rx microcontrollers in the STM32H7 series, the boot path is not supported and Debug authentication is disabled.
- For the STM32H7Rx/7Sx microcontrollers in the STM32H7 series and when compiling ExtMemLoader project with CMake, the output files have the extension *.c.obj instead of *.o
Thus, the linker file of the ExtMemLoader project for GCC (stm32h7rsxx_extmemloader_stm32cube.ld) need to be updated as following:
KEEP(*stm32_device_info.o ( .rodata* ))
should be replaced by
KEEP(*stm32_device_info.* ( .rodata* ))
- For the STM32H7Rx/7Sx microcontrollers in the STM32H7 series, to enable debugging for ExtMemLoader projects with MDK-ARM, user must do the following:
- MDMA and HSEM are not supported in LL. Only HAL is supported.
- When activating any mode under SPDIFRX:
- The alternate function configuration code is not generated in the
HAL_SPDIFRX_MspInit
function in the stm32h7xx_hal_msp.c file. - Add the workaround code in the user section after
“GPIO_InitStruct.Speed =GPIO_SPEED_FREQ_LOW;”
as described in Table 2 depending on the channel and selected pin.
- The alternate function configuration code is not generated in the
Channel | Selected pin | Workaround code |
---|---|---|
IN0 | PD7 | /* USER CODE BEGIN alternate function configuration */ GPIO_InitStruct.Alternate = GPIO_AF9_SPDIF; /* USER CODE END alternate function configuration */ |
PG11 | /* USER CODE BEGIN alternate function configuration */ GPIO_InitStruct.Alternate = GPIO_AF8_SPDIF; /* USER CODE END alternate function configuration */ | |
IN1 | PD8 | /* USER CODE BEGIN alternate function configuration */ GPIO_InitStruct.Alternate = GPIO_AF9_SPDIF; /* USER CODE END alternate function configuration */ |
PG12 | /* USER CODE BEGIN alternate function configuration */ GPIO_InitStruct.Alternate = GPIO_AF8_SPDIF; /* USER CODE END alternate function configuration */ | |
IN2 | PC4 | /* USER CODE BEGIN alternate function configuration */ GPIO_InitStruct.Alternate = GPIO_AF9_SPDIF; /* USER CODE END alternate function configuration */ |
PG8 | /* USER CODE BEGIN alternate function configuration */ GPIO_InitStruct.Alternate = GPIO_AF8_SPDIF; /* USER CODE END alternate function configuration */ | |
IN3 | PC5 | /* USER CODE BEGIN alternate function configuration */ GPIO_InitStruct.Alternate = GPIO_AF9_SPDIF; /* USER CODE END alternate function configuration */ |
PG9 | /* USER CODE BEGIN alternate function configuration */ GPIO_InitStruct.Alternate = GPIO_AF8_SPDIF; /* USER CODE END alternate function configuration */ |
3.5. When selecting dual-core microcontrollers in the STM32H7 series
- Only Boot0 is supported: both cores boot at once.
- Import from and to dual-core STM32H7 is not supported.
- For memory-to-memory DMA or BDMA or MDMA configuration, the initialization code is generated for both cores.
- OpenAMP issue when compiling under EWARM and MDK-ARM when OpenAMP is activated under STM32CubeMX:
- To avoid link errors in OpenAMP when compiling in EWARM IDE, add the next four lines of code in the linker files (.icf):
/* Create region for OPENAMP */
define symbol __OPENAMP_region_start__ = 0x38000400;
define symbol __OPENAMP_region_size__ = 0xFC00;
export symbol __OPENAMP_region_start__;
export symbol __OPENAMP_region_size__;
- To avoid link errors in OpenAMP when compiling in MDK-ARM IDE, add the next four lines of code in the linker files (.sct):
; ***** Create region for OPENAMP *****
.resource_table +0 ALIGN 4 { ; resource table
*(.resource_table)
}
; Shared Memory area used by OpenAMP
__OpenAMP_SHMEM__ 0x38000400 EMPTY 0xFC00 {}
- OpenAMP under STM32CubeIDE needs linker file update:
- The following lines must be added under the .ld file:
/* Specify the memory areas */
MEMORY
{
...
m_ipc_shm (RW) : ORIGIN = 0x38000400, LENGTH = 63K
}
/* Symbols needed for OpenAMP to enable rpmsg */
__OPENAMP_region_start__=ORIGIN(m_ipc_shm);
__OPENAMP_region_end__=ORIGIN(m_ipc_shm)+LENGTH(m_ipc_shm);
3.6. When selecting microcontrollers in the STM32L5 series
- Arm® TrustZone® support:
- Fixed default SAU is configured in the application partition_stm32l552xx.h and partition_stm32l562xx.h files.
- Import does not work for TrustZone® projects (
TZEN=1
).
- To facilitate the peripheral privilege configuration, from STM32CubeMX V6.2.0, the GTZC peripheral is split into two domains: secure and nonsecure. The side effect is that, in the case of project migration from a release version before V6.2.0, if GTZC is configured in both the secure and nonsecure domains with previously configured privilege peripherals on a nonsecure peripheral, this configuration is lost during the migration. The GTZC_NS privileges must be configured again.
- Regarding the cohabitation between USB and USB Power Delivery, the VID and PID of USB Power Delivery and USB are not automatically aligned. VID/PID values must be aligned manually.
3.7. When selecting microcontrollers in the STM32U5 series
- To prevent compilation issues when activating the BOR level option under the Flash peripheral, which can result in a conditional loop without any condition, follow these steps:
- Activate the BOR level option.
- Enable the user configuration and select an option based on the desired behavior.
- Generate the project.
- Regarding the cohabitation between Azure® RTOS USBX and USB Power Delivery, the VID and PID of USB Power Delivery and USBX are not automatically aligned. VID/PID values must be aligned manually.
- To avoid linking issues with Keil® MDK-ARM when a USBX Core System is enabled, "Device CoreStack FS" or "Host CoreStack FS" must be enabled according to the USB_OTG_FS selected mode.
- To avoid compilation issues when one DMA channel request is activated for one TIMx peripheral, replace htim_xx by htim_base. For example, replace:
__HAL_LINKDMA(htim_oc, hdma[TIM_DMA_ID_CC1], handle_GPDMA1_Channel11);
by__HAL_LINKDMA(htim_base, hdma[TIM_DMA_ID_CC1], handle_GPDMA1_Channel11);
- In Microsoft® Azure® NetX Duo, some configuration flags, which are not used in the STM32Cube firmware package examples, might be nonfunctional when combined.
3.8. When selecting microcontrollers in the STM32WB series
- The value of the CFG_BLE_MAX_CONN_EVENT_LENGTH parameter in the file app_conf.h is wrongly formatted: uint16_t is used instead of uint32_t. This impacts the Data Throughput of the application since the max value is 0xFFFF, while it should be 0xFFFF FFFF. The defined value must be changed manually in the generated code.
3.9. When selecting microcontrollers in the STM32WBA series
- When the selected middleware is STM32WPAN for Bluetooth® Low Energy with the parameter CFG_BLE_NUM_LINK set above 8, use the Bluetooth® Low Energy link layer library LinkLayer_BLE_Basic_20_links_lib.a with the header file from the path \link_layer\ll_cmd_lib\config\ble_basic_20_links.
3.10. When selecting microcontrollers in the STM32WL series
- If LoRaWAN®, SubGHZ_Phy or SigfoxTM middleware is used with the option Generate peripheral initialization as a pair of '.c/.h' files per peripheral disabled, it is advised to untick the visibility of the SUBGHZ and IPCC peripherals in [Project Manager]>[Advanced Settings] Generated Function Calls panel to avoid an issue when compiling.
- Import from and to dual-core is not working for the STM32WL series.
- For dual-core products, IPCC LL + RF middleware (LoRaWAN®, SigfoxTM, and SubGHZ_Phy) are not supported.
- If a Sigfox project is generated with MDK-ARM, the following option must be set in the project Options C/C++(AC6) panel: Misc Controls:
-fshort-enums
- The SUBGHZ peripheral is forced on the Cortex®-M0+.
- In the case of a project migration from a release version before V6.2.0, to facilitate the GTZC configuration, some previously default configuration ("enabled"/"disabled") has been moved to "default" configuration. This new state provides the default configuration of the MCU without any code generation. Users specifically needing this code generation must modify this state.
- When compiling under IAR Embedded Workbench®, in case of dual-core products, the user must activate the share mode in both CM4 and CM0PLUS ST-LINK project options.
- The "Time base: System tick timer" value selected in the NVIC configuration panel is not used for the code generation. This value must be updated by the end user in the generated code.
- KMS and STM32Cube Azure® RTOS ThreadX cannot be enabled in the same core.
3.11. When selecting microprocessors in the STM32MP1 series
- DMA nodes are generated in the device tree, but the DMA properties in the IP clients nodes are not generated.
- Import from and to MPU projects does not work properly.
- Dual-core project structure compatibility break : the action to import (migrate or continue) projects created with versions earlier than STM32CubeMX V5.3.0 is supported but requires the manual copy of
USER SECTIONS
for the device tree and Cortex®-M4 firmware from the former folder structure (DeviceTree/Inc/Src) to the new one (CA7/DeviceTree - CM4/Src - CM4/Inc). - Additional software is not supported.
- RCC generation in Production mode is not supported on the coprocessor side. Only the Engineering mode is supported.
By default, the STM32CubeMX-generated code is compliant with the Engineering mode. Therefore, the call of the following clock functions must be removed in the Production mode since these clocks are then managed by Linux®:SystemClock_Config()
,PeriphCommonClock_Config()
, andHAL_RCCEx_PeriphCLKConfig()
:- The system parts (
SystemClock_Config()
andPeriphCommonClock_Config()
) can be removed in STM32CubeMX by selecting [Not Generate function call] for RCC in the Project Manager, then Advanced Settings tabs. HAL_RCCEx_PeriphCLKConfig()
must be removed manually from file stm32mp1xx_hal_msp.c (STM32CubeMX-generated code).- To make the user code compatible with both the engineering and production modes, the above RCC functions can be put under dynamic condition
if(IS_ENGINEERING_BOOT_MODE())
.
- The system parts (
- On macOS®, installation issues may result from the fact that the install is not signed. Use the following procedure:
- Download STM32CubeMX on a Window® OS personal computer.
- Copy the downloaded install into the macOS® personal computer.
- Launch the install.
- OpenAMP warning when compiling under MDK-ARM if OpenAMP is not activated under STM32CubeMX:
- Remove the next four lines of code from the linker files (.sct) to avoid warning “No section matches pattern *(.resource_table)”:
; ***** Comment these 4 lines if OPENAMP is not used *****
.resource_table +0 ALIGN 4 { ; resource table
*(.resource_table)
}
; Shared Memory area used by OpenAMP
__OpenAMP_SHMEM__ 0x10040000 EMPTY 0x8000 {}
- Device tree generation: the "pwr" user section name is changed to "pwr_regulators".
- Existing code in the "pwr" user section must be backed up and reported manually into the new "pwr_regulators" user section after code generation.
- About the HRTIM peripheral: for the "Set Source Selection" & "Reset Source Selection" parameters, the "No source is selected" must be manually set for any unused source before decreasing the number of sources.
- When using the STM32CubeMP13 bare-metal firmware, the secure mode of the peripheral RTC is not available for the STM32MP13xx microprocessors. It is only available when the STM32CubeMP1 MCU package is used.
- When using the STM32CubeMP13 bare-metal firmware and activating Azure® RTOS ThreadX, the STM32CubeIDE linker file must contain the following section to avoid compilation issues:
.stack:
:{
: _stack_bottom = ABSOLUTE(.) ;
: /* Allocate room for stack. This must be large enough for the
: IRQ, FIQ, and SYS stack if nested interrupts are
: enabled.*/
: . = ALIGN(8) ;
: . += 32768 ;
: _sp = . - 16 ;
: _stack_top = ABSOLUTE(.) ;
: } >RAM
: _end = .;
3.12. When using the memory management tool
- When using Memory Management Tool, the toolchains CMake and makefile are not supported.
- When using Extmem Manager with LRUN boot mode, the memory management tool cannot generate a linker file including the region named "LOAD_REGION". This region is displayed in the UI as reserved. This limitation is valid for all toolchain/IDE.
- The options “ISR”, “BootInfo”, and “ThreadX” are not available in the linker file for the MDK-ARM toolchain.
- When "ThreadHep section" is selected, the linker file is not updated accordingly.
- When "isrvercor" is selected, the linker file is not updated accordingly.
- When "Boot Info" is selected (available only in the STM32WB series), the linker file is not updated to reflect the change.
3.13. When using the Example Selector
- When starting an example from the Example Selector and regenerating the code, some files can be duplicated. It can lead to potential compilation issues. In this case, remove the duplicated files.
3.14. When using additional software packs
- If a software component refers to a specific peripheral, this peripheral must be initialized with HAL APIs (not with LL APIs).
- When using dual-core devices, if a software component refers to a specific peripheral, this peripheral must be assigned only to the same core as the software component.
- When a pack is disabled, the generated files are not removed from the project.
- Workaround: remove these files manually.
- Possible issues with component dependencies in the Additional Software components selection window.
- Workaround: click on the Refresh button from the Embedded Software Packages Manager.
- When using the GNSS pack, users must not migrate their project from 3.x to 4.0.0.
- Functionalities that are not supported:
maxInstances, isDefaultVariant, generator
attributes of thecomponent
elementDtz, Ddsp, Dsecure
attributes of the condition elementrepository
elementtag
andurl
attributes of arelease
elementdominate
elementpublic
attributes for thefile
elementpreIncludeLocal
andpreIncludeGlobal file category
attributesPre_Include_Local_h
elementPre_Include_Global_h
element- Pack components where attribute values come with a "." character
- Compilation issues when using both X-CUBE-AZRTOS-H7 v1.1.0 and OpenAMP middleware in the same project with minimum version MDK-ARM v5.32:
X-CUBE-AZRTOS-H7 v1.1.0 requires Arm C compiler version 6 while OpenAMP is not compatible with this version (only Arm C compiler version 5 is supported). The workaround consists in using X-CUBE-AZRTOS-H7 v1.0.0 instead. This one is compatible with Arm C compiler version 5. - In the case of an error message when downloading SEGGER I-CUBE-embOS:
- Download SEGGER.I-CUBE-embOS manually from the SEGGER download site at https://www.segger.com/downloads/embos.
- Open the STM32CubeMX Embedded Software Packages Manager.
- Use the option Load from Local and select the pack.
3.15. STM32CubeIDE toolchain
- It is functional only with a Java 8 64-bit virtual machine with versions earlier than STM32CubeMX V5.6.1.
3.16. DDR test suite
- STM32CubeProgrammer (STM32CubeProg) is not supported from v2.10.0 onwards.
3.17. User manual
- Some chapters in the user manual STM32CubeMX for STM32 configuration and initialization C code generation (UM1718) are not fully up to date.
3.18. Symbolic links on Ubuntu
- When using Ubuntu 20.04 if you use a symbolic link to refer to the "Firmware Relative Path" in the STM32CubMX Project Manager tab, it will be translated to the absolute path before saving down.
4. Recommendations
4.1. Command line authentication required
Since introduction of authentication at the command level, we recommend our costumers to review their scripts. They should make sur they are authenticating before trying to download a package or before trying to generate code on the command line. Failure to do so will result on errors displayed on the command line.
4.2. DDR binaries for the STM32MP1 boards
The DDR binaries needed to connect to the STM32MP1 boards are available from the GitHub website at https://github.com/ with the keyword STMicroelectronics/STM32DDRFWUTIL.
4.3. List pinout-compatible microcontrollers
The loading of microcontrollers can take a long time if all series and all packages are selected. If the loading takes too long, stop it, refine the microcontroller filters on a dedicated series or package, and restart the loading.
4.4. How to improve the wake-up from Stop sequences without relying on the global SystemClock_Config()
The SystemClock_Config
provided in the HAL examples is intended to be used to configure the system clock at startup. It is not recommended to use it to restore the clock settings after a Stop mode.
To keep the wake-up as quick as possible, it is highly recommended to restore only what has been changed by the hardware to enter the Low-power mode. This is typically the case for the oscillators and system clock sources. The RCC configuration registers are unchanged, and there is no need to restore them.
Typically, after a Stop mode, it is recommended to call a separate SystemClockConfig_STOP
after the wake-up that enables the LSE and PLL, and selects PLL as system clock source (LSE and PLL are disabled in Stop mode). Find below an example of SystemClockConfig_STOP
(provided in the HID_Standalone_LPM application):
static void SystemClockConfig_STOP(void)
{
#if defined (USB_USE_LSE_MSI_CLOCK)
:/* Configures system clock after wake-up from STOP: enable LSE,
:PLL and select PLL as system clock source (LSE and PLL are disabled in Stop mode) */
:__HAL_RCC_LSE_CONFIG(RCC_LSE_ON);
:/* Wait till HSE is ready */
:while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
:{}
:/* Enable the main PLL. */
:__HAL_RCC_PLL_ENABLE();
:/* Wait till PLL is ready */
:while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
:{}
:/* Select PLL as SYSCLK */
:MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_SYSCLKSOURCE_PLLCLK);
:/* Wait till system clock switch to PLL */
:while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL)
:{}
#elif defined (USB_USE_HSE_CLOCK)
:/* Configures system clock after wake-up from STOP: enable HSE,
:PLL and select PLL as system clock source (HSE and PLL are disabled in Stop mode) */
:__HAL_RCC_HSE_CONFIG(RCC_HSE_ON);
:/* Wait till HSE is ready */
:while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
:{}
:/* Enable the main PLL. */
:__HAL_RCC_PLL_ENABLE();
:/* Wait till PLL is ready */
:while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
:{}
:/* Select PLL as SYSCLK */
:MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, RCC_SYSCLKSOURCE_PLLCLK);
:/* Wait till system clock switch to PLL */
:while (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_CFGR_SWS_PLL)
:{}
#endif /* USB_USE_LSE_MSI_CLOCK */
}