STM32CubeMX

Table Of Contents

- STM32CubeMX documentation
- CubeMX User Manual
  - 1 STM32Cube overview
  - 2 Getting started with STM32CubeMX
  - 3 Installing and running STM32CubeMX
  - 4 STM32CubeMX user interface
  - 5 STM32CubeMX tools
  - 6 STM32CubeMX C Code generation overview
  - 7 Code generation for dual-core MCUs (STM32H7 dual-core product lines only)
  - 8 Code generation with TrustZone enabled (STM32L5 series only)
  - 9 Device tree generation (STM32MPUs only)
  - 10 Support of additional software components using CMSIS-Pack standard
  - 11 Tutorial 1: From pinout to project C code generation using an MCU of the STM32F4 series
  - 12 Tutorial 2 - Example of FatFs on an SD card using STM32429I-EVAL evaluation board
  - 13 Tutorial 3 - Using the Power Consumption Calculator to optimize the embedded application consumption and more
  - 14 Tutorial 4 - Example of UART communications with an STM32L053xx Nucleo board
  - 15 Tutorial 5: Exporting current project configuration to a compatible MCU
  - 16 Tutorial 6 - Adding embedded software packs to user projects
  - 17 Tutorial 7 - Using the X-Cube-BLE1 software pack
  - 18 Creating LPBAM projects
  - Appendix A STM32CubeMX pin assignment rules
  - Appendix B STM32CubeMX C code generation design choices and limitations
  - Appendix C STM32 microcontrollers power consumption parameters
  - Appendix D STM32Cube embedded software packages
  - Revision history
- Release Notes
  - Release details
  - Release fixes
  - Known limitations
    - Miscellaneous
    - 2.1. When selecting microcontrollers in the STM32C0 series
    - 2.2. When selecting microcontrollers in the STM32G0 series
    - 2.3. When selecting microcontrollers in the STM32G4 series
    - 2.4. When selecting microcontrollers in the STM32H5 series
    - 2.5. When selecting microcontrollers in the STM32H7 series
    - 2.6. When selecting dual-core microcontrollers in the STM32H7 series
    - 2.7. When selecting microcontrollers in the STM32L5 series
    - 3.4. How to improve the wake-up from Stop sequences without relying on the global SystemClock_Config()
    - 3.3. List pinout-compatible microcontrollers
    - 3.2. DDR binaries for the STM32MP1 boards
    - 3.1. Command line authentication required
    - 2.21. Symbolic links on Ubuntu
    - 2.20. User manual
    - 2.19. DDR test suite
    - 2.18. STM32CubeIDE toolchain
    - 2.13. When selecting microcontrollers in the STM32WL series
    - 2.11. When selecting microcontrollers in the STM32WB series
    - 2.17. When using additional software packs
    - 2.16. When using the Example Selector
    - 2.15. When using the Memory Management Tool
    - 2.14. When selecting microprocessors in the STM32MP1 series
    - 2.11.1. When selecting microcontrollers in the STM32WB0 product lines
    - 2.12. When selecting microcontrollers in the STM32WBA series
    - 2.13.1. When selecting microcontrollers in the STM32WL33 product lines
    - 2.10. When selecting microcontrollers in the STM32U5 series
    - 2.9. When selecting microcontrollers in the STM32U3 series
    - 2.8. When selecting microcontrollers in the STM32N6 series
- Running STM32CubeMX in command-line mode
- FAQ
- Community

# Appendix B STM32CubeMX C code generation design choices and limitations

A.7 Setting and clearing a peripheral mode… … … … … … … … . . 578

> > A.8 Mapping a function individually … … … … … … … … … … . . 578

> > A.9 GPIO signals mapping … … … … … … … … … … … … . . 578

> Appendix B STM32CubeMX C code generation design

> choices and limitations… … … … … … … … … … … . 579

> > B.1 STM32CubeMX generated C code and user sections … … … … . . 579

> > B.2 STM32CubeMX design choices for peripheral initialization … … … . 579

> > B.3 STM32CubeMX design choices and limitations for

> middleware initialization … … … … … … … … … … … … . 580

> > B.3.1 Overview… … … … … … … … … … … … … … … … 580

> > B.3.2 USB host… … … … … … … … … … … … … … … … 581

> > B.3.3 USB device… … … … … … … … … … … … … … … . 581

> > B.3.4 FatFs… … … … … … … … … … … … … … … … … 581

> > B.3.5 FreeRTOS… … … … … … … … … … … … … … … . . 582

> > B.3.6 LwIP … … … … … … … … … … … … … … … … … 583

> > B.3.7 Libjpeg … … … … … … … … … … … … … … … … . 585

> > B.3.8 Mbed TLS … … … … … … … … … … … … … … … . . 586

> > B.3.9 TouchSensing … … … … … … … … … … … … … … . . 589

> > B.3.10 PDM2PCM … … … … … … … … … … … … … … … . 592

> > B.3.11 STM32WPAN BLE/Thread (STM32WB series only)… … … … … 593

> > B.3.12 CMSIS packs selection limitation … … … … … … … … … . . 597

> > B.3.13 OpenAmp and RESMGR_UTILITY

> (STM32MPUs and STM32H7 dual-core products)… … … … … . 598

> Appendix D STM32Cube embedded software packages … … … … … . . 606

> Revision history … … … … … … … … … … … … … … … … … 607

List of tables

List of tables

Table 1. | Command line summary… … … … … … … … … … … … … … … … … 48
Table 2. | Home page shortcuts … … … … … … … … … … … … … … … … … . . 66
Table 3. | Window menu… … … … … … … … … … … … … … … … … … … . . 67
Table 4. | Help menu shortcuts… … … … … … … … … … … … … … … … … … 68
Table 5. | Component list, mode icons and color schemes … … … … … … … … … … . . 88
Table 6. | Pinout menu and shortcuts… … … … … … … … … … … … … … … … . 91
Table 7. | Configuration states … … … … … … … … … … … … … … … … … … 98
Table 8. | Peripheral and Middleware configuration window buttons and tooltips … … … … . . 100
Table 9. | Clock configuration view widgets … … … … … … … … … … … … … … . 183
Table 10. | Clock Configuration security settings … … … … … … … … … … … … … . 184
Table 11. | Voltage scaling versus power overdrive and HCLK frequency… … … … … … … 188
Table 12. | Relations between power over-drive and HCLK frequency … … … … … … … . . 188
Table 13. | Glossary … … … … … … … … … … … … … … … … … … … … . . 188
Table 14. | Pin-to-pin compatibility … … … … … … … … … … … … … … … … … 205
Table 15. | Available IP instances… … … … … … … … … … … … … … … … … . 208
Table 16. | Unavailable pins … … … … … … … … … … … … … … … … … … . . 209
Table 17. | Additional software window - Filter icons … … … … … … … … … … … … . 215
Table 18. | Additional Software window – Packs panel columns … … … … … … … … … . 216
Table 19. | Additional Software window – Packs panel icons… … … … … … … … … … . 216
Table 20. | Component dependencies panel contextual help… … … … … … … … … … . 219
Table 21. | Boot paths without TrustZone (TZEN = 0) … … … … … … … … … … … … 226
Table 22. | Boot paths with TrustZone (TZEN = 1)… … … … … … … … … … … … … 226
Table 23. | Boot paths for STM32H7RS devices … … … … … … … … … … … … … . 226
Table 24. | LL versus HAL code generation: drivers included in STM32CubeMX projects … … . . 443
Table 25. | LL versus HAL code generation: STM32CubeMX generated header files… … … … 443
Table 26. | LL versus HAL: STM32CubeMX generated source files … … … … … … … … . 444
Table 27. | LL versus HAL: STM32CubeMX generated functions and function calls … … … … . 444
Table 28. | Files generated when TrustZone is enabled… … … … … … … … … … … . . 459
Table 29. | Connection with hardware resources … … … … … … … … … … … … … . 543
Table 30. | Document revision history … … … … … … … … … … … … … … … … 607

11

List of figures

Figure 1. | Overview of STM32CubeMX C code generation flow… … … … … … … … … . . 30
Figure 2. | Full disk access for macOS … … … … … … … … … … … … … … … … 35
Figure 3. | Select install mode … … … … … … … … … … … … … … … … … … . 37
Figure 4. | Welcome panel… … … … … … … … … … … … … … … … … … … . 38
Figure 5. | License agreement … … … … … … … … … … … … … … … … … … . 38
Figure 6. | Terms of use… … … … … … … … … … … … … … … … … … … … 39
Figure 7. | Default installation path … … … … … … … … … … … … … … … … … 39
Figure 8. | Setup of shortcuts… … … … … … … … … … … … … … … … … … . . 40
Figure 9. | Package installation … … … … … … … … … … … … … … … … … … 40
Figure 10. | Installation script… … … … … … … … … … … … … … … … … … … 41
Figure 11. | Installation path… … … … … … … … … … … … … … … … … … … . 41
Figure 12. | Current user shortcut creation … … … … … … … … … … … … … … … . 42
Figure 13. | Package installation … … … … … … … … … … … … … … … … … … 42
Figure 14. | Installation completed… … … … … … … … … … … … … … … … … . . 43
Figure 15. | Example of installation in interactive mode… … … … … … … … … … … … . 44
Figure 16. | STM32Cube installation wizard … … … … … … … … … … … … … … … 45
Figure 17. | Displaying Windows default proxy settings… … … … … … … … … … … … . 51
Figure 18. | Updater Settings window … … … … … … … … … … … … … … … … . . 53
Figure 19. | Connection Parameters tab - Manual Configuration of Proxy Server… … … … … . . 54
Figure 20. | Connection failure… … … … … … … … … … … … … … … … … … . . 55
Figure 21. | Embedded Software Packages Manager window … … … … … … … … … … . 55
Figure 22. | Managing embedded software packages - Help menu … … … … … … … … … 57
Figure 23. | Managing embedded software packages - Adding a new url… … … … … … … . . 58
Figure 24. | Checking the validity of vendor pack.pdsc file url… … … … … … … … … … . . 58
Figure 25. | User-defined list of software packs… … … … … … … … … … … … … … . 59
Figure 26. | Selecting an embedded software pack release … … … … … … … … … … … 59
Figure 27. | License agreement acceptance … … … … … … … … … … … … … … … 60
Figure 28. | Embedded software pack release - Successful installation … … … … … … … … 61
Figure 29. | Removing a package … … … … … … … … … … … … … … … … … . . 62
Figure 30. | Confirmation message … … … … … … … … … … … … … … … … … . 62
Figure 31. | Checking for available updates… … … … … … … … … … … … … … … . 63
Figure 32. | Help menu: checking for updates … … … … … … … … … … … … … … . . 64
Figure 33. | STM32CubeMX home page … … … … … … … … … … … … … … … … 65
Figure 34. | Window menu… … … … … … … … … … … … … … … … … … … . . 67
Figure 35. | Output view… … … … … … … … … … … … … … … … … … … … . 68
Figure 36. | Link to social platforms … … … … … … … … … … … … … … … … … . 69
Figure 37. | New Project window shortcuts … … … … … … … … … … … … … … … . 70
Figure 38. | Enabling TrustZone®… … … … … … … … … … … … … … … … … … … … … … . .71
Figure 39. | Adjusting selector results … … … … … … … … … … … … … … … … . . 71
Figure 40. | New Project window - MCU selector… … … … … … … … … … … … … … 72
Figure 41. | Marking an MCU as favorite … … … … … … … … … … … … … … … … 72
Figure 42. | New Project window - Board selector… … … … … … … … … … … … … . . 73
Figure 43. | New project window - Example selector… … … … … … … … … … … … … 74
Figure 44. | Popup window - Starting a project from an example … … … … … … … … … . . 75
Figure 45. | Cross selector - Data refresh prerequisite … … … … … … … … … … … … . 75
Figure 46. | Cross selector - Part number selection per vendor… … … … … … … … … … . 76
Figure 47. | Cross selector - Partial part number selection completion … … … … … … … … . 76
Figure 48. | Cross selector - Compare cart … … … … … … … … … … … … … … … . 77

Figure 49. | Cross selector - Part number selection for a new project… … … … … … … … . . 78
Figure 50. | STM32CubeMX Main window upon MCU selection… … … … … … … … … … 79
Figure 51. | STM32CubeMX Main window upon board selection (peripherals not initialized)… … . . 80
Figure 52. | STM32CubeMX Main window upon board selection (peripherals initialized with default configuration)… … … … … … … … … … . . 81
Figure 53. | Project choice interface … … … … … … … … … … … … … … … … … 82
Figure 54. | Contexts … … … … … … … … … … … … … … … … … … … … … 82
Figure 55. | IPs interface assignment … … … … … … … … … … … … … … … … . . 83
Figure 56. | TrustZone option… … … … … … … … … … … … … … … … … … … 83
Figure 57. | Selected context … … … … … … … … … … … … … … … … … … … 84
Figure 58. | Assign IP context … … … … … … … … … … … … … … … … … … . . 84
Figure 59. | OP-TEE selected … … … … … … … … … … … … … … … … … … . . 85
Figure 60. | U-Boot selection … … … … … … … … … … … … … … … … … … … 85
Figure 61. | FSBL synchronization output … … … … … … … … … … … … … … … . . 86
Figure 62. | Contextual Help window (default)… … … … … … … … … … … … … … . . 87
Figure 63. | Contextual Help detailed information … … … … … … … … … … … … … . . 88
Figure 64. | Pinout view … … … … … … … … … … … … … … … … … … … … . 90
Figure 65. | Modifying pin assignments from the Pinout view … … … … … … … … … … . . 93
Figure 66. | Example of remapping in case of block of pins consistency… … … … … … … … 94
Figure 67. | Pins/Signals Options window … … … … … … … … … … … … … … … . . 96
Figure 68. | Pinout view: MCUs with multi-bonding … … … … … … … … … … … … … . 97
Figure 69. | Pinout view: multi-bonding with extended mode… … … … … … … … … … … 97
Figure 70. | System view … … … … … … … … … … … … … … … … … … … … 98
Figure 71. | Configuration window tabs (GPIO, DMA, and NVIC settings for STM32F4 series) … … 99
Figure 72. | Peripheral mode and Configuration view … … … … … … … … … … … … . 100
Figure 73. | Formula when input parameter is set in No Check mode… … … … … … … … . 101
Figure 74. | User Constants tab… … … … … … … … … … … … … … … … … … 102
Figure 75. | Extract of the generated main.h file … … … … … … … … … … … … … . . 102
Figure 76. | Using constants for peripheral parameter settings … … … … … … … … … … 103
Figure 77. | Specifying user constant value and name … … … … … … … … … … … … 104
Figure 78. | Deleting an user constant is not allowed when it is already used for another constant definition … … … … … … … … … … … 104
Figure 79. | Confirmation request to delete a constant for parameter configuration … … … … . . 104
Figure 80. | Consequence when deleting a user constant for peripheral configuration… … … … 105
Figure 81. | Searching for a name in a user constant list… … … … … … … … … … … . . 105
Figure 82. | Searching for a value in a user constant list… … … … … … … … … … … . . 105
Figure 83. | GPIO configuration window - GPIO selection… … … … … … … … … … … . 106
Figure 84. | GPIO configuration grouped by peripheral … … … … … … … … … … … … 107
Figure 85. | Multiple pins configuration … … … … … … … … … … … … … … … … 107
Figure 86. | Adding a new DMA request … … … … … … … … … … … … … … … . . 108
Figure 87. | DMA configuration … … … … … … … … … … … … … … … … … … 109
Figure 88. | DMA MemToMem configuration… … … … … … … … … … … … … … . . 110
Figure 89. | NVIC configuration tab - FreeRTOS disabled… … … … … … … … … … … . 111
Figure 90. | NVIC configuration tab - FreeRTOS enabled … … … … … … … … … … … . 112
Figure 91. | I2C NVIC configuration window … … … … … … … … … … … … … … . . 112
Figure 92. | NVIC Code generation – All interrupts enabled … … … … … … … … … … . . 113
Figure 93. | NVIC Code generation - IRQ Handler generation … … … … … … … … … … 116
Figure 94. | FreeRTOS configuration view… … … … … … … … … … … … … … … . 117
Figure 95. | FreeRTOS: configuring tasks and queues … … … … … … … … … … … … 118
Figure 96. | FreeRTOS: creating a new task … … … … … … … … … … … … … … . . 119
Figure 97. | FreeRTOS - Configuring timers, mutexes and semaphores… … … … … … … . . 120
Figure 98. | FreeRTOS heap usage… … … … … … … … … … … … … … … … … 121

Figure 99. Selecting a HAL timebase source (STM32F407 example)… … … … … … … … 122 Figure 100. TIM1 selected as HAL timebase source… … … … … … … … … … … … . . 123 Figure 101. NVIC settings when using SysTick as HAL timebase, no FreeRTOS … … … … … 123 Figure 102. NVIC settings when using FreeRTOS and SysTick as HAL timebase … … … … . . 124 Figure 103. NVIC settings when using FreeRTOS and TIM2 as HAL timebase … … … … … . . 125 Figure 104. STM32MPUs boot devices and runtime contexts… … … … … … … … … … . 126 Figure 105. STM32MPUs: assignment options for GPIOs … … … … … … … … … … … 126 Figure 106. Select peripherals as boot devices… … … … … … … … … … … … … … 127 Figure 107. Default configuration… … … … … … … … … … … … … … … … … . . 129 Figure 108. Default configuration for the STM32MP2 series… … … … … … … … … … . . 129 Figure 109. RIF configuration extension in IPs panel for the STM32MP2 series… … … … … . . 130 Figure 110. RIF configuration extension in IPs panel for the STM32N6 series … … … … … … 130 Figure 111. RISUP configuration panel … … … … … … … … … … … … … … … … 132 Figure 112. Software context configuration vs. RISUP configuration … … … … … … … … . 132 Figure 113. Example of IP assignment to one context and result in RISUP … … … … … … . . 133 Figure 114. Example of IP assignment to two contexts and result in RISUP… … … … … … . . 133 Figure 115. Lock and privilege in RISUP table … … … … … … … … … … … … … … 134 Figure 116. Pseudo RIF-aware IP assignment … … … … … … … … … … … … … … 134 Figure 117. Peripherals (RISUP) panel for the STM32N6 series… … … … … … … … … . . 135 Figure 118. Creation of a new project for the STM32N6 series - Secure projects… … … … … . 135 Figure 119. Peripherals (RISUP) panel for the STM32N6 series - Secure projects … … … … . . 136

Figure 120. FMC configuration … … … … … … … … … … … … … … … … … … 137 Figure 121. RIF FMC panel … … … … … … … … … … … … … … … … … … … 137 Figure 122. RTC features … … … … … … … … … … … … … … … … … … … . 138

Figure 123. RTC mode … … … … … … … … … … … … … … … … … … … … 138 Figure 124. RTC parameters setting … … … … … … … … … … … … … … … … . . 139 Figure 125. Color coding system and instructions… … … … … … … … … … … … … . 140

Figure 126. RIMU user interface … … … … … … … … … … … … … … … … … . . 141 Figure 127. Assigning a CID to an IP in RIMU… … … … … … … … … … … … … … . 142 Figure 128. Modification of the security and privilege values … … … … … … … … … … . 142 Figure 129. IP assignment to a context … … … … … … … … … … … … … … … … 143 Figure 130. Result in RISUP of an IP assignment to a context … … … … … … … … … … 143 Figure 131. Inheritance of CID, state of security, and privilege from RISUP… … … … … … . . 144 Figure 132. Default values for IPs and user modification restrictions … … … … … … … … . 144 Figure 133. Domains (RIMU) panel for STM32N6 series … … … … … … … … … … … . 145 Figure 134. RIF HSEM panel… … … … … … … … … … … … … … … … … … . . 146 Figure 135. RIF TAMP panel (STM32MP2 devices) … … … … … … … … … … … … . . 147 Figure 136. RIF TAMP panel (STM32N6 devices) … … … … … … … … … … … … … 147 Figure 137. RIF-aware peripherals for STM32N6 MCUs… … … … … … … … … … … . . 148 Figure 138. IO protection inheritance for a non-RIF-aware IP (I2C) … … … … … … … … . . 149 Figure 139. GPIO IP panel… … … … … … … … … … … … … … … … … … … . 149 Figure 140. Inheritance in RIF GPIO panel … … … … … … … … … … … … … … … 150 Figure 141. PIN reservation… … … … … … … … … … … … … … … … … … … 150

Figure 142. HPDMA1 features with RIF implementation (STM32N6 MCUs)… … … … … … . . 151

Figure 143. I2C IP panel … … … … … … … … … … … … … … … … … … … . . 151 Figure 144. I2C mode panel … … … … … … … … … … … … … … … … … … . . 152

Figure 145. I2C features panel … … … … … … … … … … … … … … … … … … 152 Figure 146. DMA RIF-aware IP inheritance… … … … … … … … … … … … … … … 153 Figure 147. RIF RCC panel (STM32MP2 MPUs) … … … … … … … … … … … … … . 154 Figure 148. RCC features with RIF implementation (STM32N6 MCUs) … … … … … … … . . 154 Figure 149. RIF panel for EXTI1 (STM32N6 MCUs) … … … … … … … … … … … … . . 155 Figure 150. RISAF configuration … … … … … … … … … … … … … … … … … . . 156 Figure 151. Configuration of a new subregion… … … … … … … … … … … … … … . 157 Figure 152. Non editable columns … … … … … … … … … … … … … … … … … . 157 Figure 153. Warning … … … … … … … … … … … … … … … … … … … … . . 158 Figure 154. OCTOSPI1&2 configuration … … … … … … … … … … … … … … … . . 158 Figure 155. OCTOSPI1&2 memory mapping … … … … … … … … … … … … … … . 159 Figure 156. OCTOSPI1&2 region size configuration … … … … … … … … … … … … . . 159 Figure 157. OCTOSPI1&2 inheritances from RISUP… … … … … … … … … … … … . . 159 Figure 158. OCTOSPI1&2 Master CID activation example … … … … … … … … … … … 160 Figure 159. DDR memory configuration … … … … … … … … … … … … … … … . . 160 Figure 160. DDR_CTRL_PHY activation… … … … … … … … … … … … … … … . . 160 Figure 161. Configuration of RISAF4 (DDR) … … … … … … … … … … … … … … . . 161

Figure 162. PCIE memory configuration … … … … … … … … … … … … … … … . . 161 Figure 163. RISAF table for STM32MP21 products … … … … … … … … … … … … . . 162 Figure 164. RISAF table for STM32MP2x devices in the Cortex M33 master… … … … … … . 162 Figure 165. RISAB table for STM32MP21 products … … … … … … … … … … … … . . 163 Figure 166. Global lock in RISAF panel for STM32N6 MCUs … … … … … … … … … … . 164 Figure 167. RISAF configuration for STM32N6 series… … … … … … … … … … … … . 166 Figure 168. Sub-regions activation in RISAF (showing activated subregions) … … … … … … 167 Figure 169. Sub-regions activation in RISAF (check the filtering parameter) … … … … … … . 167 Figure 170. Example: RISUP configuration and generated code … … … … … … … … … . 168 Figure 171. Example: RISAF configuration and generated code… … … … … … … … … . . 168

Figure 172. IAC feature … … … … … … … … … … … … … … … … … … … … 169

Figure 173. STM32H7 dual-core: peripheral and middleware context assignment … … … … … 170 Figure 174. STM32H7 dual-core: GPIOs context assignment… … … … … … … … … … . 170 Figure 175. Pinout & Configuration view for TrustZone-enabled projects … … … … … … … . 171 Figure 176. Setting privileges for peripherals … … … … … … … … … … … … … … . 172 Figure 177. Setting privileges for GPIO EXTIs … … … … … … … … … … … … … … 173 Figure 178. Configuring security and privilege of DMA requests… … … … … … … … … . . 174 Figure 179. RCC privilege mode … … … … … … … … … … … … … … … … … . . 174 Figure 180. Configuring security and privilege of DMA requests… … … … … … … … … . . 176 Figure 181. Securing peripherals from GTZC panel … … … … … … … … … … … … . . 178 Figure 182. OTFDEC secured when TrustZone is active … … … … … … … … … … … . 178 Figure 183. STM32F469NIHx clock tree configuration view … … … … … … … … … … . . 179 Figure 184. Clock tree configuration view with errors … … … … … … … … … … … … . 180

Figure 185. Clock tree configuration: enabling RTC, RCC clock source

and outputs from Pinout view … … … … … … … … … … … … … … … . 186 Figure 186. Clock tree configuration: RCC peripheral advanced parameters … … … … … … . 187 Figure 187. Project Settings window … … … … … … … … … … … … … … … … . . 189 Figure 188. Compiler option for CMake toolchain … … … … … … … … … … … … … . 190 Figure 189. Project folder… … … … … … … … … … … … … … … … … … … . . 190 Figure 190. Selecting a basic application structure … … … … … … … … … … … … … 192 Figure 191. Selecting an advanced application structure … … … … … … … … … … … . 193 Figure 192. OpenSTLinux settings (STM32MPUs only) … … … … … … … … … … … . . 193 Figure 193. Selecting a different firmware location … … … … … … … … … … … … … 194 Figure 194. Firmware location selection error message … … … … … … … … … … … . . 194 Figure 195. Recommended new firmware repository structure … … … … … … … … … … 194 Figure 196. Project Settings code generator … … … … … … … … … … … … … … . . 195 Figure 197. Template Settings window … … … … … … … … … … … … … … … … 197

Figure 198. Generated project template … … … … … … … … … … … … … … … . . 197 Figure 199. Advanced Settings window… … … … … … … … … … … … … … … … 199 Figure 200. Generated init functions without C language “static” keyword … … … … … … … 199 Figure 201. Automatic project import… … … … … … … … … … … … … … … … . . 201 Figure 202. Manual project import … … … … … … … … … … … … … … … … … . 202 Figure 203. Import Project menu - Try Import with errors … … … … … … … … … … … . 203 Figure 204. Import Project menu - Successful import after adjustments … … … … … … … . . 204 Figure 205. Creating an STM32MP211AAL3 project… … … … … … … … … … … … . . 205 Figure 206. STM32MP251 MPU (compatible with STM32MP211) … … … … … … … … … 206 Figure 207. Import Project window … … … … … … … … … … … … … … … … … 206 Figure 208. Importing the STM32MP211 project… … … … … … … … … … … … … . . 207 Figure 209. Confirm the project import … … … … … … … … … … … … … … … … 207 Figure 210. Pinout view after the project import … … … … … … … … … … … … … . . 208 Figure 211. Modes matching: OCTOSPI1, STM32MP211 to STM32MP251 … … … … … … . 210 Figure 212. Modes matching: USB_OTG_HS, STM32MP211 to STM32MP251 … … … … … . 210

Figure 213. Modes matching: USB_OTG_HS, STM32MP211 to STM32MP251, mode TXRTUNE) … … … … … … … … … … … … … … … … … … . 210

Figure 214. Modes matching: USB_OTG_HS, STM32MP251 to STM32MP211,

modes OVRCUR and VBUSEN) … … … … … … … … … … … … … … . 211

Figure 215. Set unused pins window… … … … … … … … … … … … … … … … . . 211

Figure 216. Reset used pins window… … … … … … … … … … … … … … … … . . 212 Figure 217. Set unused GPIO pins with Keep Current Signals Placement checked… … … … . . 212 Figure 218. Set unused GPIO pins with Keep Current Signals Placement unchecked… … … … 213

Figure 219. Additional software window … … … … … … … … … … … … … … … . . 214 Figure 220. Component dependency resolution … … … … … … … … … … … … … . . 218 Figure 221. Details and Warnings panel … … … … … … … … … … … … … … … . . 220 Figure 222. Selection of additional software components … … … … … … … … … … … . 221 Figure 223. Additional software components - Updated tree view… … … … … … … … … . 221 Figure 224. LPBAM window… … … … … … … … … … … … … … … … … … … 222 Figure 225. CAD Resources view … … … … … … … … … … … … … … … … … . 223 Figure 226. CAD Resources not available… … … … … … … … … … … … … … … . 223 Figure 227. CAD Resources selection for download … … … … … … … … … … … … . . 224 Figure 228. CAD Resources in Tools panel… … … … … … … … … … … … … … … 224 Figure 229. CAD Resources for STM32CubeMX project… … … … … … … … … … … . . 225 Figure 230. Boot path configuration ecosystem… … … … … … … … … … … … … … 225 Figure 231. Boot paths for STM32H57x devices … … … … … … … … … … … … … . . 226 Figure 232. Bootpath scheme for STM32H5_4M devices … … … … … … … … … … … . 227 Figure 233. Boot paths for STM32H56x devices … … … … … … … … … … … … … . . 227 Figure 234. Application boot paths (legacy and ST-iRoT projects) … … … … … … … … … 227 Figure 235. Application boot path (OEM-iRoT) … … … … … … … … … … … … … … 228 Figure 236. Application boot path (OEM-uRoT assembled) … … … … … … … … … … . . 228 Figure 237. Application boot path: ST-iRoT and uRoT secure/nonsecure project… … … … … . 229 Figure 238. Application boot path:

ST-iRoT and secure/nonsecure user application assembled … … … … … … … . 229 Figure 239. Application boot path: ST-iRoT dual figure… … … … … … … … … … … … 229 Figure 240. Application boot path:

(OEM-iRoT and secure/nonsecure user application assembled) … … … … … … . 230 Figure 241. Select the device or board … … … … … … … … … … … … … … … … 231 Figure 242. Select the STM32H5 device … … … … … … … … … … … … … … … . . 231 Figure 243. Peripheral initialization … … … … … … … … … … … … … … … … … 232 Figure 244. Boot paths for STM32H56x devices … … … … … … … … … … … … … . . 232 Figure 245. Activate TrustZone … … … … … … … … … … … … … … … … … … 232 Figure 246. Device and peripherals configuration … … … … … … … … … … … … … . 233 Figure 247. Configuring the project … … … … … … … … … … … … … … … … … 234 Figure 248. Saving the project… … … … … … … … … … … … … … … … … … . 234 Figure 249. Boot path selection … … … … … … … … … … … … … … … … … … 235 Figure 250. Select OEM-iRoT … … … … … … … … … … … … … … … … … … . 235 Figure 251. First boot path stage… … … … … … … … … … … … … … … … … . . 236 Figure 252. Select Secure Application… … … … … … … … … … … … … … … … . 236 Figure 253. Last boot path stage … … … … … … … … … … … … … … … … … . . 237 Figure 254. Project provisioning … … … … … … … … … … … … … … … … … . . 237 Figure 255. Flash size not aligned… … … … … … … … … … … … … … … … … . 238 Figure 256. Boot path and debug authentication panel … … … … … … … … … … … … 238 Figure 257. Authentication and encryption keys regeneration… … … … … … … … … … . 239 Figure 258. Secure image configuration … … … … … … … … … … … … … … … . . 239 Figure 259. Nonsecure image configuration … … … … … … … … … … … … … … . . 240 Figure 260. Generate the code … … … … … … … … … … … … … … … … … … 240

Figure 261. Code is generated … … … … … … … … … … … … … … … … … … 241 Figure 262. Secure and nonsecure IDE directories… … … … … … … … … … … … … 241 Figure 263. IDE post build commands… … … … … … … … … … … … … … … … . 242 Figure 264. Trusted Package Creator output directory … … … … … … … … … … … … 242 Figure 265. Board provisioning … … … … … … … … … … … … … … … … … … 243 Figure 266. On-screen instructions … … … … … … … … … … … … … … … … … 243 Figure 267. Error message … … … … … … … … … … … … … … … … … … … 244

Figure 268. Select ST-iRoT … … … … … … … … … … … … … … … … … … … 245 Figure 269. Final boot path stage … … … … … … … … … … … … … … … … … . 245 Figure 270. Boot path and Debug Authentication tab … … … … … … … … … … … … . 246 Figure 271. Select the project structure… … … … … … … … … … … … … … … … 246 Figure 272. Code is generated … … … … … … … … … … … … … … … … … … 247 Figure 273. Secure project completed… … … … … … … … … … … … … … … … . 247 Figure 274. IDE post build commands… … … … … … … … … … … … … … … … . 248 Figure 275. Board provisioning … … … … … … … … … … … … … … … … … … 249 Figure 276. On-screen instructions … … … … … … … … … … … … … … … … … 249 Figure 277. Environment configuration file … … … … … … … … … … … … … … … 250 Figure 278. The flash_layout.h file… … … … … … … … … … … … … … … … … . 251 Figure 279. The map.properties file… … … … … … … … … … … … … … … … … 252 Figure 280. Secure generated project … … … … … … … … … … … … … … … … . 252 Figure 281. Nonsecure generated project … … … … … … … … … … … … … … … . 253 Figure 282. Compilation project… … … … … … … … … … … … … … … … … … 253 Figure 283. Project folder… … … … … … … … … … … … … … … … … … … . . 254 Figure 284. Project creation… … … … … … … … … … … … … … … … … … … 255 Figure 285. Save the project … … … … … … … … … … … … … … … … … … . . 255 Figure 286. Boot path and debug authentication panel … … … … … … … … … … … … 256 Figure 287. First (left) and second (right) boot path stage… … … … … … … … … … … . 256 Figure 288. Final boot path stage … … … … … … … … … … … … … … … … … . 257 Figure 289. Boot path and debug authentication tab… … … … … … … … … … … … . . 257

Figure 290. map.properties file … … … … … … … … … … … … … … … … … … 258 Figure 291. Code generation with EWARM… … … … … … … … … … … … … … … 258 Figure 292. Nonsecure generated project … … … … … … … … … … … … … … … . 259 Figure 293. Secure generated project … … … … … … … … … … … … … … … … . 259 Figure 294. Boot path project… … … … … … … … … … … … … … … … … … . . 260 Figure 295. Use default configuration … … … … … … … … … … … … … … … … . 260 Figure 296. Configure the project … … … … … … … … … … … … … … … … … . 261 Figure 297. Select the project … … … … … … … … … … … … … … … … … … . 261 Figure 298. First boot path stage… … … … … … … … … … … … … … … … … . . 262 Figure 299. Final boot path stage … … … … … … … … … … … … … … … … … . 262 Figure 300. Boot path and debug authentication panel … … … … … … … … … … … … 263 Figure 301. Generate the code … … … … … … … … … … … … … … … … … … 263 Figure 302. Application IDE directories … … … … … … … … … … … … … … … … 263 Figure 303. The supported Boot Path in STM32H5 with 4-Mbyte devices … … … … … … … 264 Figure 304. HSP1 Modes and configuration in STM32CubeMX … … … … … … … … … . . 265 Figure 305. Activating the debug mode for the HSP1 peripheral… … … … … … … … … . . 266 Figure 306. NVIC interrupt table for the HSP1 peripheral … … … … … … … … … … … . 266 Figure 307. Activating the HSP in Accelerator mode… … … … … … … … … … … … . . 267 Figure 308. Parameters to be configured for HSP feature in the Accelerator mode … … … … . . 268 Figure 309. STM32CubeMX after activating the Accelerator mode… … … … … … … … … 268 Figure 310. Parameters to be configured for HSP feature in the Accelerator mode … … … … . . 269 Figure 311. Clock configuration for HSP in Accelerator mode… … … … … … … … … … . 269 Figure 312. Clock configuration view for HSP in Accelerator mode… … … … … … … … … 270 Figure 313. Code generation for HSP in Accelerator mode… … … … … … … … … … … 270 Figure 314. Files copied from firmware while generating the code … … … … … … … … … 271 Figure 315. Generated project tree for HSP in Accelerator mode … … … … … … … … … . 271 Figure 316. General tab… … … … … … … … … … … … … … … … … … … … 272 Figure 317. The processing list tab … … … … … … … … … … … … … … … … … 273 Figure 318. A processing list associated with an event … … … … … … … … … … … … 274 Figure 319. Snippet code action … … … … … … … … … … … … … … … … … . . 275 Figure 320. Function category … … … … … … … … … … … … … … … … … … . 276 Figure 321. Buffers tab … … … … … … … … … … … … … … … … … … … … 277 Figure 322. State buffers tab … … … … … … … … … … … … … … … … … … . . 277 Figure 323. A processing list linked with an event… … … … … … … … … … … … … . 278 Figure 324. Events tab… … … … … … … … … … … … … … … … … … … … . 279 Figure 325. Output Triggers tab… … … … … … … … … … … … … … … … … … 279 Figure 326. Generated Project tree for HSP configured in Accelerator mode… … … … … … . 281 Figure 327. Generated Project tree for HSP configured in sequencer mode … … … … … … . 282 Figure 328. PLAY feature in STM32CubeMX … … … … … … … … … … … … … … . 283 Figure 329. Activating the PLAY feature … … … … … … … … … … … … … … … . . 284 Figure 330. Input Signals… … … … … … … … … … … … … … … … … … … . . 285 Figure 331. Input settings to be filled by the user … … … … … … … … … … … … … . 286 Figure 332. Setting the Output Source for the MUX0 from the list of outputs … … … … … … . 286 Figure 333. Output settings … … … … … … … … … … … … … … … … … … … 287 Figure 334. Entries for the Look Up table … … … … … … … … … … … … … … … . 288 Figure 335. LUT truth table parameter… … … … … … … … … … … … … … … … . 289 Figure 336. LUT Calculation table … … … … … … … … … … … … … … … … … . 290 Figure 337. LUT calculation table example… … … … … … … … … … … … … … … 290 Figure 338. LUT inputs enabled … … … … … … … … … … … … … … … … … . . 291 Figure 339. Notification Service window in STM32CubeMX … … … … … … … … … … . . 296 Figure 340. Popup appearing while installing a package for non-registered users … … … … … 296 Figure 341. Hiding notification service prompt… … … … … … … … … … … … … … . 297 Figure 342. Subscription proposal appearing while installing firmware … … … … … … … . . 298 Figure 343. Register form … … … … … … … … … … … … … … … … … … … . 299 Figure 344. Popup for email validation … … … … … … … … … … … … … … … … 299 Figure 345. Email validation… … … … … … … … … … … … … … … … … … … 300 Figure 346. ST Web page to validate the subscription … … … … … … … … … … … … 300 Figure 347. The view of Notification Service tab after a user subscription … … … … … … … 301 Figure 348. The subscription page … … … … … … … … … … … … … … … … … 301 Figure 349. The preferences page… … … … … … … … … … … … … … … … … . 302 Figure 350. Communication preference center … … … … … … … … … … … … … … 302 Figure 351. The user name exposed in the Notification Service window after email validation… … 303 Figure 352. Clear the Email in STM32CubeMX… … … … … … … … … … … … … … 304 Figure 353. Clear the email configuration … … … … … … … … … … … … … … … . 304 Figure 354. The unsubscription action… … … … … … … … … … … … … … … … . 305 Figure 355. About window … … … … … … … … … … … … … … … … … … … . 306 Figure 356. ST Tools … … … … … … … … … … … … … … … … … … … … . . 307 Figure 357. Reaching Compare Project from the Tools panel… … … … … … … … … … . 308 Figure 358. Reaching Compare Project from the home page … … … … … … … … … … . 308 Figure 359. User interface of the Compare Projects tool… … … … … … … … … … … . . 309 Figure 360. Load the first .ioc file… … … … … … … … … … … … … … … … … . . 310 Figure 361. Starting the comparison … … … … … … … … … … … … … … … … . . 310 Figure 362. Result of the comparison … … … … … … … … … … … … … … … … . 311 Figure 363. Loading the same project … … … … … … … … … … … … … … … … . 311 Figure 364. The result of comparing two projects having the same structure … … … … … … . 312 Figure 365. Compare the current non saved project with another project… … … … … … … . 313 Figure 366. Compare a currently open project with itself… … … … … … … … … … … . . 313 Figure 367. Target table… … … … … … … … … … … … … … … … … … … … 315 Figure 368. Peripherals & Middleware table … … … … … … … … … … … … … … . . 315 Figure 369. Project Settings table … … … … … … … … … … … … … … … … … . 316 Figure 370. Choosing the Excel format to save the comparison result … … … … … … … … 317 Figure 371. Comparison result in Excel format … … … … … … … … … … … … … … 317 Figure 372. Comparison result in Excel format - Peripherals and middleware … … … … … … 318 Figure 373. Comparison result in Excel format - Project settings … … … … … … … … … . 318 Figure 374. Power Consumption Calculator default view … … … … … … … … … … … . 320 Figure 375. Battery selection … … … … … … … … … … … … … … … … … … . . 321 Figure 376. Step management functions… … … … … … … … … … … … … … … . . 321 Figure 377. Power consumption sequence: New Step default view … … … … … … … … . . 322

Figure 378. Enabling the transition checker option on an already configured sequence - All transitions valid … … … … … … … … … … … … 323

Figure 379. Enabling the transition checker option on an already configured sequence - At least one transition invalid … … … … … … … … … . 323 Figure 380. Transition checker option - Show log … … … … … … … … … … … … … . 323 Figure 381. Interpolated power consumption… … … … … … … … … … … … … … . . 325 Figure 382. ADC selected in Pinout view… … … … … … … … … … … … … … … . . 326

Figure 383. Power Consumption Calculator configuration window:

ADC enabled using import pinout… … … … … … … … … … … … … … . 327 Figure 384. Power Consumption Calculator view after sequence building … … … … … … … 328 Figure 385. Sequence table management functions … … … … … … … … … … … … . . 328 Figure 386. Power Consumption: Peripherals consumption chart… … … … … … … … … . 329 Figure 387. Description of the Results area… … … … … … … … … … … … … … … 329 Figure 388. Overall peripheral consumption … … … … … … … … … … … … … … . . 331 Figure 389. Selecting SMPS for the current project… … … … … … … … … … … … … 333 Figure 390. SMPS database - Adding new SMPS models … … … … … … … … … … … 334 Figure 391. SMPS database - Selecting a different SMPS model… … … … … … … … … . 334 Figure 392. Current project configuration updated with new SMPS model … … … … … … … 335 Figure 393. SMPS database management window with new model selected… … … … … … . 335 Figure 394. SMPS transition checker and state diagram helper window… … … … … … … . . 336

Figure 395. Configuring the SMPS mode for each step … … … … … … … … … … … . . 337

Figure 396. RF related consumption (STM32WB series only)… … … … … … … … … … . 338 Figure 397. RF Bluetooth Low-Energy mode configuration (STM32WB series only) … … … … . 339 Figure 398. ZigBee configuration (STM32WB series only) … … … … … … … … … … … 339 Figure 399. RF sub-GHz configuration … … … … … … … … … … … … … … … … 340 Figure 400. Power Consumption Calculator - Example set … … … … … … … … … … … 341 Figure 401. Power Consumption Calculator - Example sequence loading … … … … … … … 341 Figure 402. Power Consumption Calculator - Example sequence new selection … … … … … . 342 Figure 403. DDR pinout and configuration settings … … … … … … … … … … … … … 343 Figure 404. DDR3 configuration … … … … … … … … … … … … … … … … … . . 344 Figure 405. DDR Suite - Connection to target … … … … … … … … … … … … … … . 345 Figure 406. DDR Suite - Target connected … … … … … … … … … … … … … … … 346 Figure 407. DDR activity logs … … … … … … … … … … … … … … … … … … . 346 Figure 408. DDR interactive logs… … … … … … … … … … … … … … … … … . . 346 Figure 409. DDR register loading … … … … … … … … … … … … … … … … … . 347 Figure 410. DDR test list from U-Boot SPL … … … … … … … … … … … … … … … 348 Figure 411. DDR test suite results… … … … … … … … … … … … … … … … … . 349 Figure 412. DDR tests history … … … … … … … … … … … … … … … … … … . 349 Figure 413. Regions settings to peripherals ON … … … … … … … … … … … … … . . 350 Figure 414. Regions settings to linker files ON … … … … … … … … … … … … … … 350 Figure 415. Regions settings to peripherals OFF … … … … … … … … … … … … … . 350 Figure 416. Recommendation for the configuration of MMT … … … … … … … … … … . . 351 Figure 417. MMT usage… … … … … … … … … … … … … … … … … … … … 351 Figure 418. MMT view … … … … … … … … … … … … … … … … … … … … . 352 Figure 419. Start a project … … … … … … … … … … … … … … … … … … … . 353 Figure 420. Use TrustZone … … … … … … … … … … … … … … … … … … … 354 Figure 421. Default settings… … … … … … … … … … … … … … … … … … … 354 Figure 422. Region information … … … … … … … … … … … … … … … … … … 355 Figure 423. Tooltip… … … … … … … … … … … … … … … … … … … … … . 356 Figure 424. IP configuration… … … … … … … … … … … … … … … … … … … 356 Figure 425. IP under control … … … … … … … … … … … … … … … … … … . . 357

Figure 426. Linker files update… … … … … … … … … … … … … … … … … … . 357 Figure 427. Configure an external memory … … … … … … … … … … … … … … … 358 Figure 428. New region created… … … … … … … … … … … … … … … … … … 358 Figure 429. Adding a new region… … … … … … … … … … … … … … … … … . . 359 Figure 430. Adding a new memory … … … … … … … … … … … … … … … … … 359 Figure 431. Memory assignment … … … … … … … … … … … … … … … … … . . 360 Figure 432. Left panel configuration … … … … … … … … … … … … … … … … . . 360 Figure 433. Allocating a region … … … … … … … … … … … … … … … … … … 361 Figure 434. Middleware memory allocation … … … … … … … … … … … … … … … 361 Figure 435. Middleware heap configuration… … … … … … … … … … … … … … … 362 Figure 436. Remapping the memory … … … … … … … … … … … … … … … … . . 362 Figure 437. Remapped region is renamed … … … … … … … … … … … … … … … 363 Figure 438. Remapped start address … … … … … … … … … … … … … … … … . 363 Figure 439. New region remapped … … … … … … … … … … … … … … … … … 363 Figure 440. Resizing default region … … … … … … … … … … … … … … … … … 364 Figure 441. Region security change … … … … … … … … … … … … … … … … . . 364 Figure 442. Memory map in linker file … … … … … … … … … … … … … … … … . 365 Figure 443. MMT usage (STM32U5) … … … … … … … … … … … … … … … … . . 366 Figure 444. MMT usage (STM32H7 single core)… … … … … … … … … … … … … . . 366 Figure 445. MMT view for U5 without TrustZone… … … … … … … … … … … … … . . 367 Figure 446. MMT view for H7 single core … … … … … … … … … … … … … … … . 367 Figure 447. Default data region … … … … … … … … … … … … … … … … … … 368 Figure 448. FMC activation … … … … … … … … … … … … … … … … … … … 368 Figure 449. Default mapping … … … … … … … … … … … … … … … … … … . . 369

Figure 450. Before the swap … … … … … … … … … … … … … … … … … … . . 369 Figure 451. After the swap… … … … … … … … … … … … … … … … … … … . 370 Figure 452. Before remapping … … … … … … … … … … … … … … … … … … . 370 Figure 453. After remapping … … … … … … … … … … … … … … … … … … . . 371 Figure 454. ETH MMT regions… … … … … … … … … … … … … … … … … … . 372 Figure 455. ETH configuration for STM32H723VETx MCU… … … … … … … … … … … 373 Figure 456. Defined memory regions under the linker file … … … … … … … … … … … . 373 Figure 457. MMT usage… … … … … … … … … … … … … … … … … … … … 374 Figure 458. Firmware version … … … … … … … … … … … … … … … … … … . 374 Figure 459. MMT configuration for STM32WB5x… … … … … … … … … … … … … . . 375 Figure 460. Cortex_M7 mode and configuration … … … … … … … … … … … … … . . 376

Figure 461. Cortex_M4 mode and configuration … … … … … … … … … … … … … . . 376 Figure 462. Default settings… … … … … … … … … … … … … … … … … … … 377 Figure 463. Choose an STM32H7 dual-core product … … … … … … … … … … … … . 378 Figure 464. Region 0 added … … … … … … … … … … … … … … … … … … . . 379 Figure 465. Activate Memory Management support … … … … … … … … … … … … . . 379 Figure 466. Default setting for new application region… … … … … … … … … … … … . 380 Figure 467. Adding a new region… … … … … … … … … … … … … … … … … . . 380 Figure 468. Configure NVIC1 and NVIC2, and select their HSEM global interrupt … … … … … 381

Figure 469. OPENAMP_M7 parameters settings … … … … … … … … … … … … … . 381

Figure 470. OPENAMP_M4 parameters settings … … … … … … … … … … … … … . 382 Figure 471. Reserved memory regions for OPENAMP using MMT… … … … … … … … … 382 Figure 472. Linker files update (stm32h755xxx_flash_cm4.icf)… … … … … … … … … … 383

Figure 473. Linker files update(stm32h755xxx_flash_cm7.icf) … … … … … … … … … … 383 Figure 474. Configuration of ETH IP … … … … … … … … … … … … … … … … . . 384 Figure 475. ETH MMT regions… … … … … … … … … … … … … … … … … … . 384 Figure 476. IP configuration… … … … … … … … … … … … … … … … … … … 385 Figure 477. Defined memories under the linker file (Cortex-M7)… … … … … … … … … . . 386

Figure 478. Defined memories under the linker file (Cortex-M4)… … … … … … … … … . . 387 Figure 479. MMT usage… … … … … … … … … … … … … … … … … … … … 388 Figure 480. Default settings… … … … … … … … … … … … … … … … … … … 389 Figure 481. Choose an STM32H7R product … … … … … … … … … … … … … … . . 390 Figure 482. Initialization dialogue … … … … … … … … … … … … … … … … … . 390 Figure 483. Region0 added … … … … … … … … … … … … … … … … … … … 391 Figure 484. Activate Memory Management support … … … … … … … … … … … … . . 391 Figure 485. Warning message… … … … … … … … … … … … … … … … … … . 392 Figure 486. Configure the XSPI… … … … … … … … … … … … … … … … … … 392 Figure 487. EXT_MEM_MANAGER … … … … … … … … … … … … … … … … . . 393 Figure 488. Tooltip… … … … … … … … … … … … … … … … … … … … … . 393 Figure 489. IP configuration… … … … … … … … … … … … … … … … … … … 394 Figure 490. Linker files update… … … … … … … … … … … … … … … … … … . 394 Figure 491. Memory assignment for context Boot H7RS… … … … … … … … … … … . . 395 Figure 492. EXTMEM_MANAGER “Select boot code generation” disabled … … … … … … . . 395

Figure 493. Execute In Place… … … … … … … … … … … … … … … … … … . . 396 Figure 494. MMT Execute In Place … … … … … … … … … … … … … … … … … 396 Figure 495. Load and Run … … … … … … … … … … … … … … … … … … … . 397 Figure 496. MMT Load and Run … … … … … … … … … … … … … … … … … . . 397 Figure 497. Linker files… … … … … … … … … … … … … … … … … … … … . 398 Figure 498. Flash option bytes… … … … … … … … … … … … … … … … … … . 398

Figure 499. ECC_ON_SRAM enabled and DTCM_AXI_SHARED set to 2… … … … … … … 399 Figure 500. ETH MMT regions for STM32H7R3A8Ix… … … … … … … … … … … … . . 400

Figure 501. ETH configuration for STM32H7R3A8Ix… … … … … … … … … … … … . . 401 Figure 502. Application of the MMT configuration to the linker file … … … … … … … … … 401

Figure 503. Defined memory regions under the linker file of the application context… … … … . . 402

Figure 504. MMT usage… … … … … … … … … … … … … … … … … … … … 403 Figure 505. User interface … … … … … … … … … … … … … … … … … … … . 403 Figure 506. Linker files update… … … … … … … … … … … … … … … … … … . 404 Figure 507. Impact on RADIO (STM32WB09)… … … … … … … … … … … … … … . 404 Figure 508. Feature under MMT control (secure and nonsecure domains)… … … … … … … 406

Figure 509. Feature under MMT control (secure domains only) … … … … … … … … … . . 406

Figure 510. Memory layout for secure and nonsecure domains … … … … … … … … … . . 407 Figure 511. Memory layout for secure domains… … … … … … … … … … … … … … 407 Figure 512. Details about the clicked region in the FSBL context … … … … … … … … … . 408 Figure 513. Regions designation for secure and nonsecure domains… … … … … … … … . 409 Figure 514. Regions designation for secure domains … … … … … … … … … … … … . 409

Figure 515. Project creation with an STM32N6 product … … … … … … … … … … … . . 410 Figure 516. Choosing the project structure (secure and nonsecure domains) … … … … … … 410 Figure 517. Choosing the project structure (secure domains)… … … … … … … … … … . 411 Figure 518. MMT configuration (secure and nonsecure domains)… … … … … … … … … . 411 Figure 519. MMT configuration (secure domains) … … … … … … … … … … … … … . 412 Figure 520. Mapping between MMT regions and RISAF memory configurations … … … … … . 412 Figure 521. Setting up the memory region of RISAF2 (CPU AXI RAM0) tab … … … … … … . 413 Figure 522. Setting up memory subregions of RISAF 2 (CPU AXI RAM0) tab … … … … … … 414 Figure 523. Setting up memory regions of RISAF1 (TCM) tab … … … … … … … … … … 415 Figure 524. Setting up the memory subregions of RISAF1 (TCM) tab … … … … … … … … 415

Figure 525. Configurations needed for RAMCFG FLEXRAM … … … … … … … … … … . 416 Figure 526. Setting up memory regions of RISAF1 (TCM) and RISAF7 (FLEXRAM) tabs … … … 417

Figure 527. Overlap with FLEXRAM … … … … … … … … … … … … … … … … . . 418 Figure 528. Configurations of the application regions on the MMT view … … … … … … … . . 419 Figure 529. Setting up memory regions of RISAF4 (NPU master 0) … … … … … … … … . . 420

Figure 530. Setting up memory regions of RISAF5 (NPU master 1) … … … … … … … … . . 420 Figure 531. Setting up memory regions of RISAF6 (CPU master) … … … … … … … … … 421 Figure 532. CACHEAXI enable … … … … … … … … … … … … … … … … … … 422 Figure 533. MMT view for CACHEAXI… … … … … … … … … … … … … … … … . 422 Figure 534. Adding regions in CACHEAXI… … … … … … … … … … … … … … … . 423

Figure 535. RISAF8 CACHEAXI … … … … … … … … … … … … … … … … … . . 423 Figure 536. VENC enable … … … … … … … … … … … … … … … … … … … . 424 Figure 537. MMT view for VENCRAM … … … … … … … … … … … … … … … … . 425 Figure 538. Adding regions in VERCRAM… … … … … … … … … … … … … … … . 425 Figure 539. RISAF9 VENCRAM … … … … … … … … … … … … … … … … … . . 426 Figure 540. Configurations of FMC added regions in MMT view… … … … … … … … … . . 426 Figure 541. Setting up the memory regions for the RISAF14 (FMC) tab… … … … … … … . . 427 Figure 542. EXTMEM_MANAGER in the MMT view… … … … … … … … … … … … . . 428

Figure 543. Setting up the XSPI feature … … … … … … … … … … … … … … … . . 428

Figure 544. Setting Select boot code generation parameter for EXTMEM_MANAGER … … … . . 429 Figure 545. Selection of the boot system - Execute In Place … … … … … … … … … … . 429 Figure 546. Configuration of the MMT view after enabling XIP … … … … … … … … … … 430

Figure 547. Selection of the boot system - Load and Run… … … … … … … … … … … . 430 Figure 548. Configuration of MMT view after choosing Load and Run as boot system… … … … 431

Figure 549. Defined linker script for XIP … … … … … … … … … … … … … … … . . 431 Figure 550. MMT linker file after choosing Load and Run as boot system … … … … … … … 432 Figure 551. ETH MMT regions for STM32N647L0HxQ… … … … … … … … … … … … 433 Figure 552. MMT view after adding ETH memory regions… … … … … … … … … … … . 434

Figure 553. ETH linker file (fully secure domain only) … … … … … … … … … … … … . 434 Figure 554. ETH MMT regions (secure domains only) … … … … … … … … … … … … 435 Figure 555. Warning in case of overlap between application and ETH regions… … … … … … 435 Figure 556. RISAF 3 (CPU AXI RAM1) memory regions… … … … … … … … … … … . . 436 Figure 557. ETH application regions for secure and nonsecure domains (part 1)… … … … … . 436

Figure 558. ETH application regions for secure and nonsecure domains (part 2)… … … … … . 437 Figure 559. MMT/boot path (STM32H7RS)… … … … … … … … … … … … … … … 438 Figure 560. MMT/boot path (STM32H5) … … … … … … … … … … … … … … … . . 438 Figure 561. Linker files location (STM32H7RS on the left, STM32H5 on the right)… … … … … 439 Figure 562. App_User declaration (STM32H7RS)… … … … … … … … … … … … … . 439 Figure 563. App_User declaration (STM32H5) … … … … … … … … … … … … … … 439 Figure 564. Labels for pins generating define statements… … … … … … … … … … … . 441 Figure 565. User constant generating define statements … … … … … … … … … … … . 441

Figure 566. Duplicate labels … … … … … … … … … … … … … … … … … … . . 442 Figure 567. HAL-based peripheral initialization: usart.c code snippet… … … … … … … … . 446 Figure 568. LL-based peripheral initialization: usart.c code snippet … … … … … … … … . . 447 Figure 569. HAL versus LL: main.c code snippet … … … … … … … … … … … … … . 447 Figure 570. Default content of the extra_templates folder… … … … … … … … … … … . 448 Figure 571. extra_templates folder with user templates … … … … … … … … … … … . . 449 Figure 572. Project root folder with corresponding custom generated files… … … … … … … 450 Figure 573. User custom folder for templates … … … … … … … … … … … … … … . 450 Figure 574. Custom folder with corresponding custom generated files… … … … … … … … 451

Figure 575. Update of the project .ewp file (EWARM IDE)

for preprocessor define statements … … … … … … … … … … … … … . . 453 Figure 576. Update of stm32f4xx_hal_conf.h file to enable selected modules … … … … … … 453 Figure 577. New groups and new files added to groups in EWARM IDE … … … … … … … . 453 Figure 578. Preprocessor define statements in EWARM IDE … … … … … … … … … … . 454

Figure 579. Code generation for STM32H7 dual-core devices … … … … … … … … … … 455 Figure 580. Startup and linker files for STM32H7 dual-core devices… … … … … … … … . . 456 Figure 581. Building secure and nonsecure images with ARMv8-M TrustZone … … … … … . . 457 Figure 582. Project explorer view for STM32L5 TrustZone enabled projects … … … … … … . 458 Figure 583. Project settings for STM32CubeIDE toolchain … … … … … … … … … … … 459

Figure 584. STM32CubeMX generated DTS – Extract 1… … … … … … … … … … … . . 462

Figure 585. STM32CubeMX generated DTS – Extract 2… … … … … … … … … … … . . 462

Figure 586. STM32CubeMX generated DTS – Extract 3… … … … … … … … … … … . . 463 Figure 587. Project settings to configure Device tree path … … … … … … … … … … … 464 Figure 588. Selecting a CMSIS-Pack software component… … … … … … … … … … … 466 Figure 589. Enabling and configuring a CMSIS-Pack software component … … … … … … . . 466 Figure 590. Project generated with CMSIS-Pack software component… … … … … … … … 467

Figure 591. MCU selection … … … … … … … … … … … … … … … … … … … 468 Figure 592. Pinout view with MCUs selection … … … … … … … … … … … … … … . 469 Figure 593. Pinout view without MCUs selection window … … … … … … … … … … … . 469 Figure 594. GPIO pin configuration … … … … … … … … … … … … … … … … … 470 Figure 595. Timer configuration… … … … … … … … … … … … … … … … … … 470 Figure 596. Simple pinout configuration … … … … … … … … … … … … … … … . . 471

Figure 597. Save Project As window … … … … … … … … … … … … … … … … . . 472 Figure 598. Generate Project Report - New project creation… … … … … … … … … … . . 473 Figure 599. Generate Project Report - Project successfully created… … … … … … … … . . 473 Figure 600. Clock tree view … … … … … … … … … … … … … … … … … … … 474 Figure 601. HSI clock enabled… … … … … … … … … … … … … … … … … … . 475 Figure 602. HSE clock source disabled… … … … … … … … … … … … … … … … 475

Figure 603. HSE clock source enabled … … … … … … … … … … … … … … … … 475 Figure 604. External PLL clock source enabled … … … … … … … … … … … … … . . 475 Figure 605. Pinout & Configuration view … … … … … … … … … … … … … … … . . 477 Figure 606. Case of Peripheral and Middleware without configuration parameters… … … … … 477 Figure 607. Timer 3 configuration window… … … … … … … … … … … … … … … . 478 Figure 608. Timer 3 configuration … … … … … … … … … … … … … … … … … . 478 Figure 609. Enabling Timer 3 interrupt … … … … … … … … … … … … … … … … 479 Figure 610. GPIO configuration color scheme and tooltip … … … … … … … … … … … . 479 Figure 611. GPIO mode configuration … … … … … … … … … … … … … … … … . 480 Figure 612. DMA parameters configuration window … … … … … … … … … … … … . . 481 Figure 613. Middleware tooltip… … … … … … … … … … … … … … … … … … . 481 Figure 614. USB Host configuration … … … … … … … … … … … … … … … … . . 482 Figure 615. FatFs over USB mode enabled … … … … … … … … … … … … … … . . 482 Figure 616. System view with FatFs and USB enabled… … … … … … … … … … … … 483 Figure 617. FatFs define statements … … … … … … … … … … … … … … … … . . 484 Figure 618. Project Settings and toolchain selection… … … … … … … … … … … … . . 485 Figure 619. Project Manager menu - Code Generator tab … … … … … … … … … … … 486

Figure 620. Warning message for missing firmware package… … … … … … … … … … . 486 Figure 621. Error during download … … … … … … … … … … … … … … … … … 487 Figure 622. Updated settings with connection… … … … … … … … … … … … … … . 488 Figure 623. Downloading the firmware package … … … … … … … … … … … … … . . 489 Figure 624. Unzipping the firmware package … … … … … … … … … … … … … … . 489 Figure 625. C code generation completion message … … … … … … … … … … … … . 490 Figure 626. C code generation output folder … … … … … … … … … … … … … … . . 490 Figure 627. Pause button… … … … … … … … … … … … … … … … … … … . . 491 Figure 628. Creating the .tmp file… … … … … … … … … … … … … … … … … . . 491 Figure 629. Resume button … … … … … … … … … … … … … … … … … … … 491 Figure 630. Resume button during the unzipping of downloaded files … … … … … … … … 492 Figure 631. Closing the download window without clicking the Resume button … … … … … . . 492

Figure 632. Cancel button … … … … … … … … … … … … … … … … … … … . 493 Figure 633. C code generation output: Projects folder … … … … … … … … … … … … 494 Figure 634. C code generation for EWARM … … … … … … … … … … … … … … . . 495

Figure 635. STM32CubeMX generated project open in IAR™ IDE… … … … … … … … … 496

Figure 636. IAR™ options … … … … … … … … … … … … … … … … … … … . 497 Figure 637. SWD connection… … … … … … … … … … … … … … … … … … . . 497 Figure 638. Project building log … … … … … … … … … … … … … … … … … … 497 Figure 639. User Section 2 … … … … … … … … … … … … … … … … … … … 498

Figure 640. User Section 4 … … … … … … … … … … … … … … … … … … … 498 Figure 641. Import Project menu … … … … … … … … … … … … … … … … … . . 499 Figure 642. Board peripheral initialization dialog box … … … … … … … … … … … … . 500 Figure 643. Board selection… … … … … … … … … … … … … … … … … … … 501 Figure 644. SDIO peripheral configuration … … … … … … … … … … … … … … … 501

Figure 645. FatFs mode configuration… … … … … … … … … … … … … … … … . 502 Figure 646. RCC peripheral configuration … … … … … … … … … … … … … … … . 502 Figure 647. Clock tree view … … … … … … … … … … … … … … … … … … … 503 Figure 648. FATFS tutorial - Project settings… … … … … … … … … … … … … … . . 503 Figure 649. C code generation completion message … … … … … … … … … … … … . 504 Figure 650. IDE workspace … … … … … … … … … … … … … … … … … … … 504 Figure 651. Power Consumption Calculation example … … … … … … … … … … … … 510 Figure 652. VDD and battery selection menu … … … … … … … … … … … … … … . 510 Figure 653. Sequence table… … … … … … … … … … … … … … … … … … … 511 Figure 654. sequence results before optimization … … … … … … … … … … … … … . 511 Figure 655. Step 1 optimization … … … … … … … … … … … … … … … … … … 512

Figure 656. Step 5 optimization … … … … … … … … … … … … … … … … … … 513

Figure 657. Step 6 optimization … … … … … … … … … … … … … … … … … … 514

Figure 658. Step 7 optimization … … … … … … … … … … … … … … … … … … 515

Figure 659. Step 8 optimization … … … … … … … … … … … … … … … … … … 516 Figure 660. Step 10 optimization … … … … … … … … … … … … … … … … … . . 517 Figure 661. Power sequence results after optimizations … … … … … … … … … … … . . 517 Figure 662. Selecting NUCLEO_L053R8 board … … … … … … … … … … … … … . . 519 Figure 663. Selecting debug pins … … … … … … … … … … … … … … … … … . 520 Figure 664. Selecting TIM2 clock source… … … … … … … … … … … … … … … . . 520 Figure 665. Selecting asynchronous mode for USART2 … … … … … … … … … … … . . 521 Figure 666. Checking pin assignment … … … … … … … … … … … … … … … … . 521 Figure 667. Configuring the MCU clock tree … … … … … … … … … … … … … … . . 522 Figure 668. Configuring USART2 parameters… … … … … … … … … … … … … … . 523 Figure 669. Configuring TIM2 parameters… … … … … … … … … … … … … … … . 524 Figure 670. Enabling TIM2 interrupt … … … … … … … … … … … … … … … … . . 525 Figure 671. Project Settings menu… … … … … … … … … … … … … … … … … . 526

Figure 672. Generating the code … … … … … … … … … … … … … … … … … . . 526 Figure 673. Checking the communication port … … … … … … … … … … … … … … 528

Figure 674. Setting Tera Term port parameters … … … … … … … … … … … … … . . 529

Figure 675. Setting Tera Term port parameters … … … … … … … … … … … … … . . 529 Figure 676. Existing or new project pinout… … … … … … … … … … … … … … … . 530

Figure 677. List of pinout compatible MCUs - Partial match

with hardware compatibility… … … … … … … … … … … … … … … … 531 Figure 678. List of pinout compatible MCUs - Exact and partial match … … … … … … … … 531 Figure 679. Selecting a compatible MCU and importing the configuration … … … … … … … 532 Figure 680. Configuration imported to the selected compatible MCU … … … … … … … … . 532 Figure 681. Import configuration not available for dual core MCUs… … … … … … … … … 533 Figure 682. Additional software components enabled for the current project … … … … … … . 534 Figure 683. Pack software components: no configurable parameters… … … … … … … … . 535 Figure 684. Pack tutorial: project settings … … … … … … … … … … … … … … … . 535 Figure 685. Generated project with third party pack components … … … … … … … … … . 536 Figure 686. Hardware prerequisites… … … … … … … … … … … … … … … … … 537 Figure 687. Embedded software packages … … … … … … … … … … … … … … … 538 Figure 688. Mobile application… … … … … … … … … … … … … … … … … … . 538 Figure 689. Installing Embedded software packages … … … … … … … … … … … … . 539 Figure 690. Starting a new project - selecting the NUCLEO-L053R8 board … … … … … … . . 540 Figure 691. Starting a new project - initializing all peripherals… … … … … … … … … … . 540 Figure 692. Selecting X-Cube-BLE1 components … … … … … … … … … … … … … . 541 Figure 693. Configuring peripherals and GPIOs … … … … … … … … … … … … … . . 542 Figure 694. Configuring NVIC interrupts … … … … … … … … … … … … … … … . . 543 Figure 695. Enabling X-Cube-BLE1… … … … … … … … … … … … … … … … … 544 Figure 696. Configuring the SensorDemo project … … … … … … … … … … … … … . 545 Figure 697. Open SensorDemo project in the IDE toolchain… … … … … … … … … … . . 545 Figure 698. LPBAM project … … … … … … … … … … … … … … … … … … … 547 Figure 699. Project timeline … … … … … … … … … … … … … … … … … … … 548 Figure 700. Project with LPBAM capability … … … … … … … … … … … … … … … 548 Figure 701. LPBAM Scenario & Configuration view … … … … … … … … … … … … . . 549 Figure 702. Adding an application … … … … … … … … … … … … … … … … … . 550 Figure 703. SoC and IPs configuration … … … … … … … … … … … … … … … … 551 Figure 704. LPBAM scenario: creation and configuration panels … … … … … … … … … . 551 Figure 705. Clock tree configuration … … … … … … … … … … … … … … … … . . 552 Figure 706. Available IPs… … … … … … … … … … … … … … … … … … … . . 553 Figure 707. IP configuration: advanced settings … … … … … … … … … … … … … . . 553

Figure 708. LPBAM low power settings… … … … … … … … … … … … … … … … 554

Figure 709. Adding nodes to a queue … … … … … … … … … … … … … … … … . 555 Figure 710. Queue in circular mode… … … … … … … … … … … … … … … … … 556 Figure 711. Queue looping back on IP data transfer … … … … … … … … … … … … . . 557

Figure 712. LPBAM queue: DMA configuration… … … … … … … … … … … … … … 557 Figure 713. LPBAM functions contextual help… … … … … … … … … … … … … … . 558 Figure 714. LPBAM queue node configuration … … … … … … … … … … … … … … 559 Figure 715. LPBAM node: configuring hardware resources … … … … … … … … … … . . 560 Figure 716. LPBAM node trigger configuration … … … … … … … … … … … … … … 561 Figure 717. LPBAM node triggered using timer channel … … … … … … … … … … … . . 561 Figure 718. LPBAM node: reconfiguring a DMA … … … … … … … … … … … … … . . 562 Figure 719. Reconfiguring DMA for data transfer when destination is memory… … … … … … 562

Figure 720. Design check … … … … … … … … … … … … … … … … … … … . 563 Figure 721. STM32CubeMX project generated with LPBAM applications… … … … … … … . 564 Figure 722. STM32CubeMX project - Peripheral secure context assignment… … … … … … . 566 Figure 723. STM32CubeMX project - Clock source secure context assignment… … … … … . . 566 Figure 724. LPBAM project - Peripheral no context assignment … … … … … … … … … . . 567 Figure 725. LPBAM application - Clock source no context assignment… … … … … … … … 567 Figure 726. LPBAM application - Secure context assignment… … … … … … … … … … . 568 Figure 727. LPBAM design security coherency check… … … … … … … … … … … … . 568 Figure 728. Block mapping … … … … … … … … … … … … … … … … … … … 570 Figure 729. Block remapping… … … … … … … … … … … … … … … … … … . . 571 Figure 730. Block remapping - Example 1… … … … … … … … … … … … … … … . 572 Figure 731. Block remapping - Example 2… … … … … … … … … … … … … … … . 572 Figure 732. Block inter-dependency - SPI signals assigned to PB3/4/5 … … … … … … … . . 573 Figure 733. Block inter-dependency - SPI1_MISO function assigned to PA6 … … … … … … . 574 Figure 734. One block = one peripheral mode - I2C1_SMBA function assigned to PB5… … … . . 575

Figure 735. Block remapping - Example 2… … … … … … … … … … … … … … … . 576 Figure 736. Function remapping example … … … … … … … … … … … … … … … . 576 Figure 737. Block shifting not applied … … … … … … … … … … … … … … … … . 577 Figure 738. Block shifting applied … … … … … … … … … … … … … … … … … . 578 Figure 739. FreeRTOS HOOK functions to be completed by user … … … … … … … … … 582 Figure 740. LwIP 1.4.1 configuration … … … … … … … … … … … … … … … … . . 583 Figure 741. LwIP 1.5 configuration … … … … … … … … … … … … … … … … … 584 Figure 742. Libjpeg configuration window … … … … … … … … … … … … … … … . 586 Figure 743. Mbed TLS without LwIP … … … … … … … … … … … … … … … … . . 587 Figure 744. Mbed TLS with LwIP and FreeRTOS … … … … … … … … … … … … … . 588 Figure 745. Mbed TLS configuration window… … … … … … … … … … … … … … . . 589 Figure 746. Enabling the TouchSensing peripheral… … … … … … … … … … … … … 590

Figure 747. Touch-sensing sensor selection panel … … … … … … … … … … … … … 591 Figure 748. TouchSensing configuration panel … … … … … … … … … … … … … … 592 Figure 749. BLE and Thread middleware support in STM32CubeMX… … … … … … … … . 593 Figure 750. STM32CubeWB Package download … … … … … … … … … … … … … . 594 Figure 751. STM32CubeWB BLE applications folder … … … … … … … … … … … … . 595 Figure 752. BLE Server profile selection … … … … … … … … … … … … … … … . . 596 Figure 753. BLE Client profile selection… … … … … … … … … … … … … … … … 596 Figure 754. Thread application selection… … … … … … … … … … … … … … … . . 597 Figure 755. Enabling OpenAmp for STM32MPUs… … … … … … … … … … … … … . 598 Figure 756. Enabling the Resource Manager for STM32MPUs… … … … … … … … … … 599 Figure 757. Resource Manager: peripheral assignment view … … … … … … … … … … . 600 Figure 758. STM32Cube Embedded Software package … … … … … … … … … … … . . 606

STM32Cube overview