STM32中AHB总线_APB2总线_APB1总线这些是什么

什么是APB总线

  APB(Advanced Peripheral Bus),外围总线的意思。该总线协议是ARM公司提出的AMBA总线结构之一,几乎已成为一种标准的片上总线结构。APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。APB上的传输可以用如图所示的状态图来说明。

  APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。APB上的传输可以用如图所示的状态图来说明。

  

  STM32中AHB总线

  AHB,是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种“系统总线”。AHB主要用于高性能模块(如CPUDMADSP等)之间的连接。

  AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。

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

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

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

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

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

  APB2总线是什么

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

  APB1总线这些是什么

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

  因为要共用,所以叫总线(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的位数。

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RCC_AHB1PeriphClockCmd和RCC_APB2PeriphClockCmd是用于STM32系列微控制器的RCC(Reset and Clock Control)模块的函数。 RCC_AHB1PeriphClockCmd函数用于使能或禁用AHB1总线上的外设时钟。AHB1总线上的外设包括GPIO端口、DMA、CRC等。函数原型如下: ```c void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState); ``` 其,RCC_AHB1Periph参数指定要使能或禁用的外设,可以使用逻辑或运算符(|)同时指定多个外设。NewState参数指定要设置的状态,可以是ENABLE(使能)或DISABLE(禁用)。 例如,要使能GPIOA和GPIOB的时钟,可以使用以下代码: ```c RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB, ENABLE); ``` RCC_APB2PeriphClockCmd函数用于使能或禁用APB2总线上的外设时钟。APB2总线上的外设包括USART、SPI、ADC等。函数原型如下: ```c void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); ``` 其,RCC_APB2Periph参数指定要使能或禁用的外设,可以使用逻辑或运算符(|)同时指定多个外设。NewState参数指定要设置的状态,可以是ENABLE(使能)或DISABLE(禁用)。 例如,要使能USART1和SPI1的时钟,可以使用以下代码: ```c RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_SPI1, ENABLE); ``` 需要注意的是,具体使用哪个函数取决于外设所连接的总线AHB1总线连接的外设使用RCC_AHB1PeriphClockCmd函数,而APB2总线连接的外设使用RCC_APB2PeriphClockCmd函数。请根据具体的外设和总线类型选择适当的函数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值