stm32学习感悟 地址总线学习

看了一段时间的单片机视频,下来一些视频看了看,看了几节之后感觉会了,突然有一天需要去操作一个外设时,却不知从何下手了,,。

自己想了想,其实我不明白,一些很基础的东西一开始学的时候就没有认真的去思考过,到后导致看了很多的视频都白看了,(听视频很简单,自己动手问题就来了)


例如:一直不明白有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

具体的解释见\stm32 神舟\神舟III号\第5集 流水灯实验 \LED流水灯实验.pdf上的详解


拓展:

 
  
计算机硬件设备有传输数据和地址的线路,有的计算机数据线和地址线是公用的,就要采用分时处理的方式,有的计算机实际地址线路数少于集成电路的地址线路数,就要采用分段寻址的方式。因为要共用,所以叫总线(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的位数




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

你可能感兴趣的:(单片机/arm)