STM32中AHB总线、APB2总线、APB1总线这些是什么?

judy的头像

一直不明白有STM32中AHB总线、APB2总线、APB1总线这些是是什么??

所谓地址映射,就是将芯片上的存储器 甚至I/O等资源与地址建立一一对应的关系。如果某地址

对应着某寄存器,我们就可以运用C语言的指针来寻址并修改这个地址上的内容,从而实现修改该寄存器的内容。

正是因为头文件中有了对于各种寄存器和I/O端口的地址映射,我们才可以在51单片机

程序中方便地使用P2^0 =0xFF; TMOD =0xFF等赋值句子对寄存器进行配置,从而控制单片机。

其实地址总线就是就是用来存放地址的,Cortex-M3的地址映射也是类似的,Cortex-M3有32根地址线,所以它的寻址空间大小为2^32

bit=4GB。(这里什么32跟地址线不需要去纠结了,只要知道配置成了4G的地址就行)

然后APB2总线就是指特定的一段地址,如:0x4001 0000—XXXX

拓展:

计算机硬件设备有传输数据和地址的线路,有的计算机数据线和地址线是公用的,就要采用分时处理的方式,有的计算机实际地址线路数少于集成电路的地址线路数,就要采用分段寻址的方式。

因为要共用,所以叫总线(bus)有数据总线和地址总线。

总线有控制总线,数据总线和地址总线,控制总线是发送控制信号的,地址总线是传送地址信号的,CPU要访问内存,必须首先在地址总线上给出内存的地址,所谓32位的地址总线是指根CPU相连的地址线有32条,每一条可以给出两个不同的符号(0和1)那么就可以访问2的32次方的空间的内存。数据总线是传输数据的,CPU要从内存或者缓存中读取数据,必须通过数据总线进行,32位的数据总线对应的是跟CPU相连的32根数据线。一条数据线传送一个二进制数,32位数据总线一次就可以传送2个字节的数据。

CPU中的位指的是CPU运算一次处理数据量的能力,32位CPU一次可以处理32位的数据,64位CPU一次可以处理64位的数据。

64位CPU不一定对应64位数据总线和地址总线,如果是32位的总线,可以采取分两次传送的措施,一般总线的位数大于等于CPU的位数

总结:学习单片机还得脚踏实地 打好基础 搞清楚

转自:个人专栏