STM32的存储器和寄存器映射

STM32的存储器和寄存器映射

一.存储器映射

存储器指可以存储数据的设备,本身没有地址信息,对存储器分配地址的过程称为存储器映射

19根地址线:2的19次方 = 512个地址

16根数据线:16bit = 1kb ,所以1MB数据

1.1存储器功能划分

ST将4GB(2^32)地址空间分成8个块

存储块

功能

地址范围

Block 0

Code(FLASH)

0x0000 0000 ~ 0x1FFF FFFF(512MB)

Block 1

SRAM

0x2000 0000 ~ 0x3FFF FFFF(512MB)

Block 2

片上外设

0x4000 0000 ~ 0x5FFF FFFF(512MB)

Block 3

FSMC Bank1&2

0x6000 0000 ~ 0x7FFF FFFF(512MB)

Block 4

FSMC Bank3&4

0x8000 0000 ~ 0x9FFF FFFF(512MB)

Block 5

FSMC寄存器

0xA000 0000 ~ 0xBFFF FFFF(512MB)

Block 6

没用到

0xC000 0000 ~ 0xDFFF FFFF(512MB)

Block 7

Cortex M3内部外设

0xE000 0000 ~ 0xFFFF FFFF(512MB)

1.1.1Block0功能划分

功能

地址范围

FLASH或系统存储器别名区

0X0000 0000 ~ 0x0007 FFFF(512KB)

保留

0X0008 0000 ~ 0x07FF FFFF

用户FLASH,用于存储用户代码

0X0800 0000 ~ 0x0807 FFFF(512KB)

保留

0X0808 0000 ~ 0x1FFF EFFF

系统存储器,存储出厂Bootloader

0X1FFF F000 ~ 0X1FFF F7FF(2KB)

选项字节,配置读保护等

0X1FFF F800 ~ 0X1FFF F80F(16B)

保留

0X1FFF F810 ~ 0X1FFF FFFF

1.1.2Block1(SRAM)功能划分

存储块

功能

地址范围

Block 1

SRAM

0X2000 0000 ~ 0x2000 FFFF(64KB)

保留

0X2001 0000 ~ 0x3FFF FFFF

1.1.3Block2(外设)功能划分

功能

地址范围

APB1总线外设

0X4000 0000 ~ 0x4000 77FF

保留

0X4000 7800 ~ 0x4000 FFFF

APB2总线外设

0X4001 0000 ~ 0x4000 3FFF

保留

0X4001 4000 ~ 0x4001 7FFF

AHB总线外设

0X4001 8000 ~ 0x4002 33FF

保留

0X4002 3400 ~ 0x5FFF FFFF

二.寄存器映射

寄存器是单片机内部一种特殊的内存,可以实现对单片机各个功能的控制

简单来说:寄存器就是单片机内部的控制机构

2.1寄存器的分类

大类

小类

说明

内核寄存器

内核相关寄存器

包含R0~R15、xPSR、特殊功能寄存器等

中断控制寄存器

包含NVIC和SCB相关寄存器,NVIC有:ISER、ICER、ISPR、IP等;SCB有:VTOR、AIRCR、SCR等

SysTick寄存器

包含CTRL、LOAD、VAL和CALIB四个寄存器

内存保护寄存器

可选功能,STM32F103没有

调试系统寄存器

ETM、ITM、DWT、IPIU等相关寄存器

外设寄存器

包含GPIO、UART、IIC、SPI、TIM、DMA、ADC、DAC、RTC、I/WWDG、PWR、CAN、USB等各种外设寄存器

2.2寄存器的映射

寄存器是特殊的存储器,给寄存器地址命名的过程,就叫寄存器映射

2.3寄存器描述解读

① 寄存器名字

② 偏移量及复位值

③ 寄存器位表

④ 位功能描述

2.4寄存器映射

**#define GPIOA_ODR (unsigned int )(0x4001 080C)

GPIOA_ODR = 0XFFFF;

2.5寄存器地址计算

为了方便编写代码及使用,我们将寄存器地址分为三个部分:

1、总线基地址(BUS_BASE_ADDR)

2,外设基于总线基地址的偏移量(PERIPH_OFFSET)

3,寄存器相对外设基地址的偏移量(REG_OFFSET)

寄存器地址 = BUS_BASE_ADDR + PERIPH_OFFSET + REG_OFFSET

总线

基地址

偏移量

APB1

0X4000 0000

0

APB2

0X4001 0000

0X1 0000

AHB

0X4001 8000

0X1 8000

APB1总线的基地址,也叫外设基地址(PERIPH_BASE)此表的偏移量:是相对外设基地址(PERIPH_BASE)来说的

GPIO外设基地址及偏移量

所属总线

外设

基地址

偏移量

APB2

GPIOA

0X4001 0800

0X800

0X4001 0000

GPIOB

0X4001 0C00

0XC00

GPIOC

0X4001 1000

0X1000

GPIOD

0X4001 1400

0X1400

GPIOE

0X4001 1800

0X1800

GPIOF

0X4001 1C00

0X1C00

GPIOG

0X4001 2000

0X2000

GPIOA外设基地址及偏移量

所属总线

所属外设

寄存器

地址

偏移量

APB2

GPIOA

GPIOA_CRL

0X4001 0800

0X00

0X4001 0000

0X4001 0800

GPIOA_CRH

0X4001 0804

0X04

GPIOA_IDR

0X4001 0808

0X08

GPIOA_ODR

0X4001 080C

0X0C

GPIOA_BSRR

0X4001 0810

0X10

GPIOA_BRR

0X4001 0814

0X14

GPIOA_LCKR

0X4001 0818

0X18

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值