Difference between revisions of "STM32 Memory Map"
Jump to navigation
Jump to search
(5 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | [[Category:C]][[Category:STM32 Development]][[Category:Embedded]][[Category:Work in progress]][[Category:STM32]]{{metadesc|STM32 Memory Map/Layout Details}} | + | [[Category:C]][[Category:STM32 Development]][[Category:Embedded]][[Category:Work in progress]][[Category:STM32]]{{metadesc|Understanding STM32 Memory Map/Layout Details}} |
[[STM32]] [[MCU]]s all (?) use the following memory map to some degree. There are minor differences so always check the relevant datasheet for the specific [[MCU]] being used. | [[STM32]] [[MCU]]s all (?) use the following memory map to some degree. There are minor differences so always check the relevant datasheet for the specific [[MCU]] being used. | ||
+ | |||
+ | == Block Diagram == | ||
+ | |||
+ | <div class="res-img"> | ||
+ | [[File:STM32F405 Block Diagram.png|1600px]] | ||
+ | </div> | ||
+ | |||
+ | == Memory Map == | ||
<div class="res-img"> | <div class="res-img"> | ||
Line 6: | Line 14: | ||
</div> | </div> | ||
− | The most interesting bit is the detail in the lower left corner specifying the two first blocks of memory | + | The most interesting bit is the detail in the lower left corner specifying the two first blocks of memory. |
+ | |||
+ | == Memory Details == | ||
<div class="res-img"> | <div class="res-img"> | ||
[[File:STM32 Memory Detail.png|800px]] | [[File:STM32 Memory Detail.png|800px]] | ||
+ | </div> | ||
+ | |||
+ | Of these, the most interesting for a new developer are: | ||
+ | |||
+ | * Flash - 0x8000000 | ||
+ | |||
+ | This is where you upload your application. | ||
+ | |||
+ | * RAM - 0x20000000 | ||
+ | |||
+ | This is where dynamic variables are allocated. | ||
+ | |||
+ | == Peripheral Addresses == | ||
+ | |||
+ | All internal peripherals are controlled through registers - each with a specific address. But if using [[HAL]] it is not necessary to know these addresses. | ||
+ | |||
+ | <div class="res-img"> | ||
+ | [[File:Memory Map Peripherals 0.png|800px]] | ||
+ | [[File:Memory Map Peripherals 1.png|800px]] | ||
+ | [[File:Memory Map Peripherals 2.png|800px]] | ||
</div> | </div> |
Latest revision as of 07:16, 1 September 2024
STM32 MCUs all (?) use the following memory map to some degree. There are minor differences so always check the relevant datasheet for the specific MCU being used.
Block Diagram
Memory Map
The most interesting bit is the detail in the lower left corner specifying the two first blocks of memory.
Memory Details
Of these, the most interesting for a new developer are:
- Flash - 0x8000000
This is where you upload your application.
- RAM - 0x20000000
This is where dynamic variables are allocated.
Peripheral Addresses
All internal peripherals are controlled through registers - each with a specific address. But if using HAL it is not necessary to know these addresses.