STM32学习笔记1 地址计算(学习来自正点原子,参考战舰开发板)

1、32位单片机,32地址线(每根地址线有两种状态:导通和不导通)2^32=4G(字节)

2、单片机内存地址访问的存储单元是按字节(8bit)编址的(不是bit)

寻址范围

0x0000 0000 ~ 0xFFFF FFFF(4G个地址)

3、存储器映射

存储数据的设备,本身没有地址信息,分配存储器地址的过程,叫做存储器映射

例1:

19根数据线

16根地址线

总共有2^19=512个地址 0-512K→0x00000-0x80000

每个地址为16=2字节

总共512*2=1MB

映射1:0-512K

映射2:1-512K+1

映射3:100K-612K

4、存储器划分(F1)

存储块功能地址范围
block0code(FLASH)0x0000 0000~0x1FFF FFFF(512MB)
block1SRAM0x2000 0000~0x3FFF FFFF(512MB)
block2片上外设0x4000 0000~0x5FFF FFFF(512MB)
block3FSMC bank1&20x6000 0000~0x7FFF FFFF(512MB)
block4FSMC bank3&40x8000 0000~0x9FFF FFFF(512MB)
block5FSMC存储器0xA000 0000~0xBFFF FFFF(512MB)
block6没用到0xC000 0000~0xDFFF FFFF(512MB)
block7Cortex M3内部外设0xE000 0000~0x1FFFF FFFF(512MB)

 

 

5、寄存器映射

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

寄存器分类

大类小类说明
内核寄存器内核相关寄存器包含R0~R5、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、DAC、ADC、RTC、I/WWDG、PWR、CAN、USB等各种外设寄存器

例子:

寄存器地址:0x4001080C →寄存器名字:GPIOA_ODR(映射,给寄存器地址命名)

6、寄存器映射举例

直接操作寄存器地址

(unsigned int)(0x4001 080C)=0xffff;

定义后再操作

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

GPIOA_ODR =0xffff;

地址计算

1、总线基地址(BUS_BASE_ADDR)

2、外设基于基地址的偏移量(PERIPH_OFFSET)

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

寄存器地址=BUS_BASE_ADDR+PERIPH_OFFSET+REG_OFFSET

7、映射方式

使用结构体的方式(分配连续内存)

typedef struct

{

__IO uint32_t CRL;/* GPIO_CRL 寄存器,相对外设基地址偏移量:0X00 */

__IO uint32_t CRH;/* GPIO_CRH 寄存器,相对外设基地址偏移量:0X04 */

__IO uint32_t IDR;/* GPIO_IDR 寄存器,相对外设基地址偏移量:0X08 */

__IO uint32_t ODR;/* GPIO_ODR 寄存器,相对外设基地址偏移量:0X0C */

__IO uint32_t BSRR; /* GPIO_BSRR 寄存器,相对外设基地址偏移量:0X10 */

__IO uint32_t BRR;/* GPIO_BRR 寄存器,相对外设基地址偏移量:0X14 */

__IO uint32_t LCKR; /* GPIO_LCKR 寄存器,相对外设基地址偏移量:0X18 */

} GPIO_TypeDef;

7*4=28字节(1个寄存器32位,32/8=4字节,所以定义的是32位的数据)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值