内存映射
单片机是内存映射控件,应用程序通过读写对应地址完成对外设的控制。
以STM32为例, 程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。
地址范围为0x0000 0000至0xFFFF FFFF。

image-20240118102645673.png?imageView2/2/w/1000
从内存映射布局可以看到:
片上Flash被映射到0x0800 0000-0x0801 FFFF的地址空间,通过读写这个地址空间,可以对Flash进行读写。
运行内存RAM被映射到0x2000 0000开始的一片区域。
更进一步,在MDK下,通过生成的map文件,可以直观地看到FLash和RAM更加细节的布局。
FLash布局
Memory Map of the image
Image Entry point : 0x080000b9
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000061d8, Max: 0x00020000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00006120, Max: 0x00020000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x08000000 0x08000000 0x000000b8 Data RO 1193 RESET startup_stm32g070xx.o
0x080000b8 0x080000b8 0x00000000 Code RO 3003 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000b8 0x080000b8 0x00000004 Code RO 3315 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000bc 0x080000bc 0x00000004 Code RO 3318 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c0 0x080000c0 0x00000000 Code RO 3320 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c0 0x080000c0 0x00000000 Code RO 3322 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c0 0x080000c0 0x00000008 Code RO 3323 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3325 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000c8 0x080000c8 0x00000000 Code RO 3327 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000c8 0x080000c8 0x00000004 Code RO 3316 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000cc 0x080000cc 0x0000001c Code RO 1194 .text startup_stm32g070xx.o
0x080000e8 0x080000e8 0x0000002c Code RO 3006 .text mc_p.l(uidiv.o)
0x08000114 0x08000114 0x00000028 Code RO 3008 .text mc_p.l(idiv.o)
0x0800013c 0x0800013c 0x00000024 Code RO 3010 .text mc_p.l(memseta.o)
0x08000160 0x08000160 0x0000000e Code RO 3012 .text mc_p.l(strlen.o)
0x0800016e 0x0800016e 0x0000001c Code RO 3014 .text mc_p.l(strcmp.o)
0x0800018a 0x0800018a 0x0000001e Code RO 3016 .text mc_p.l(strncmp.o)
0x080001a8 0x080001a8 0x0000007a Code RO 3307 .text mf_p.l(fmul.o)
0x08000222 0x08000222 0x0000007c Code RO 3309 .text mf_p.l(fdiv.o)
0x0800029e 0x0800029e 0x00000016 Code RO 3311 .text mf_p.l(fflti.o)
0x080002b4 0x080002b4 0x0000000e Code RO 3313 .text mf_p.l(ffltui.o)
0x080002c2 0x080002c2 0x00000060 Code RO 3330 .text mc_p.l(uldiv.o)
0x08000322 0x08000322 0x00000000 Code RO 3338 .text mc_p.l(iusefp.o)
0x08000322 0x08000322 0x00000082 Code RO 3339 .text mf_p.l(fepilogue.o)
0x080003a4 0x080003a4 0x00000164 Code RO 3341 .text mf_p.l(dadd.o)
0x08000508 0x08000508 0x000000d0 Code RO 3343 .text mf_p.l(dmul.o)
0x080005d8 0x080005d8 0x000000f0 Code RO 3345 .text mf_p.l(ddiv.o)
0x080006c8 0x080006c8 0x00000040 Code RO 3347 .text mf_p.l(dfixul.o)
0x08000708 0x08000708 0x00000028 Code RO 3349 .text mf_p.l(cdrcmple.o)
0x08000730 0x08000730 0x00000024 Code RO 3351 .text mc_p.l(init.o)
0x08000754 0x08000754 0x00000020 Code RO 3353 .text mc_p.l(llshl.o)
0x08000774 0x08000774 0x00000022 Code RO 3355 .text mc_p.l(llushr.o)
0x08000796 0x08000796 0x00000026 Code RO 3357 .text mc_p.l(llsshr.o)
0x080007bc 0x080007bc 0x000000be Code RO 3359 .text mf_p.l(depilogue.o)
0x0800087a 0x0800087a 0x00000002 PAD
0x0800087c 0x0800087c 0x00000098 Code RO 2859 i.HAL_DMA_Abort stm32g0xx_hal_dma.o
0x08000914 0x08000914 0x00000094 Code RO 2860 i.HAL_DMA_Abort_IT stm32g0xx_hal_dma.o
0x080009a8 0x080009a8 0x000001d8 Code RO 1868 i.HAL_GPIO_Init stm32g0xx_hal_gpio.o
0x08000b80 0x08000b80 0x00000012 Code RO 1870 i.HAL_GPIO_ReadPin stm32g0xx_hal_gpio.o
0x08000b92 0x08000b92 0x0000000c Code RO 1872 i.HAL_GPIO_WritePin stm32g0xx_hal_gpio.o
0x08000b9e 0x08000b9e 0x00000002 PAD
0x08000ba0 0x08000ba0 0x0000000c Code RO 1209 i.HAL_GetTick stm32g0xx_hal.o
0x08000bac 0x08000bac 0x0000002c Code RO 1216 i.HAL_Init stm32g0xx_hal.o
0x08000bd8 0x08000bd8 0x00000060 Code RO 1217 i.HAL_InitTick stm32g0xx_hal.o
0x08000c38 0x08000c38 0x00000002 Code RO 1219 i.HAL_MspInit stm32g0xx_hal.o
0x08000c3a 0x08000c3a 0x00000002 PAD
0x08000c3c 0x08000c3c 0x0000003c Code RO 1393 i.HAL_NVIC_DisableIRQ stm32g0xx_hal_cortex.o
0x08000c78 0x08000c78 0x00000024 Code RO 1394 i.HAL_NVIC_EnableIRQ stm32g0xx_hal_cortex.o
0x08000c9c 0x08000c9c 0x00000012 Code RO 1398 i.HAL_NVIC_SetPriority stm32g0xx_hal_cortex.o
0x08000cae 0x08000cae 0x00000002 PAD
0x08000cb0 0x08000cb0 0x00000058 Code RO 1752 i.HAL_PWREx_ControlVoltageScaling stm32g0xx_hal_pwr_ex.o
0x08000d08 0x08000d08 0x000001d4 Code RO 1504 i.HAL_RCC_ClockConfig stm32g0xx_hal_rcc.o
上一篇:如何计算STM32定时器、独立看门狗和窗口看门狗
下一篇:单片机stm32 USART串口应用
推荐阅读最新更新时间:2026-03-20 14:36
- ADR435B 5 Vout 超低噪声 XFET 电压基准的典型应用,具有灌电流和拉电流能力
- 使用 Analog Devices 的 ADP8140 的参考设计
- NCP699SN30T1G 150mA、3 路输出电压 CMOS 低 Iq LDO 的典型应用,在 TSOP-5 中启用
- ZTL431过压/欠压保护电路典型应用
- 使用 Microchip Technology 的 DVR2802B3 的参考设计
- 开源的浮游生物监测分析设备PlanktoScope
- STK503,旨在评估 AT90USB AVR MCU 的入门套件,通过 AVR Studio 支持 JTAGICE mkII 和 AVRISP mkII
- 使用 BittWare 的 XCVU190 的参考设计
- 远程声控参考设计
- NCP4354AADAPGEVB,用于 NCP4354、65W 适配器关闭模式控制器的评估板



stm32驱动屏IC rm68042
STM32 PMSM FOC 简介
基于STM32G031的测试测量训练平台完成虚拟仪器实现
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号