野火stm32f407zgt6学习笔记之入门篇基础知识点

内存的一些换算关系,做了解。

1GB=1073741824字节。

1KB=1024字节

1M=1024KB

1G=1024MB

AHB和APB

AHB的意思是系统总线。AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。

APB的意思是外围总线。APB主要用于低带宽的周边外设之间的连接。在APB里面唯一的主模块就是APB 桥。

地址值如何赋值

int *k=0x2489;//这里是个地址值。指针k指向0x2489的地址

*k = 1;//赋值

需要注意的是,当指针给没有指向的地址时,无法赋值。这种指针有个名字叫“悬浮指针”,是不能给它赋值的。

寄存器映射

寄存器映射说简单,其实就是给一块具有特定功能的内存单元起个名字的过程。

给存储器分配地址叫做存储器映射,再分配个地址叫做重映射。//(你没听太懂,嗯,我也没太懂,先把概念记住吧~)

怎么把你认为的地址转换为编译器也承认的地址?可以通过把数据定位指针,按着需要的位数选择是int还是什么其他类型。

*(unsigned int *)(0x40020800+0x14) &=~(0x01<<2);

ST为开发者提供了非常方便的开发库。到目前为止,有标准外设库(STD库)、HAL库、LL库 三种。

外设位带区与外设位带别名区的地址转换:

AliasAddr = 0x4200 0000 +(A-0x4000 0000)*8*4+n*4

SRAM位带区与SRM位带别名区的地址转换A:

AliasAddr = 0x2200 0000 +(A-0x2000 0000)*8*4+n*4

A :表示我们要操作的那个位所在的寄存器的地址。

n:位号。

位带区的一个位在位带别名区会膨胀成四个字节。

外设和SRAM位带区的位带别名区的地址同意用一个公式表示

((addr&0xF000 0000)+0x0200 0000+((addr & 0x00FF FFFF)<<5)+(bitnum<<2))

addr:要操作的位所在寄存器的地址。

bitnum:位号,即在寄存器的第几位。

你可能感兴趣的:(stm32,arm,嵌入式硬件)