×
单片机 > 单片机程序设计 > 详情

STM32之AHB与APB总线

发布时间:2020-06-01 发布时间:
|

AHB是高速总线,是一种系统总线,它主要负责连接处理器、DMA等一些内部接口。AHB 系统由主模块、从模块和基础结构3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。 


APB是低速总线,它主要负责连接外围设备,它又分为APB1和APB2,它的总线架构不像 AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。APB桥就是连接AHB和APB中间的玩意。 


APB1最大时钟频率为36MHz 

APB2最大时钟频率为72MHz


看下图 


  


在STM32F1中,不同的外设接在不同的APB总线上,以下是详细的分布:


#define RCC_APB1Periph_TIM2              ((uint32_t)0x00000001)

#define RCC_APB1Periph_TIM3              ((uint32_t)0x00000002)

#define RCC_APB1Periph_TIM4              ((uint32_t)0x00000004)

#define RCC_APB1Periph_TIM5              ((uint32_t)0x00000008)

#define RCC_APB1Periph_TIM6              ((uint32_t)0x00000010)

#define RCC_APB1Periph_TIM7              ((uint32_t)0x00000020)

#define RCC_APB1Periph_TIM12             ((uint32_t)0x00000040)

#define RCC_APB1Periph_TIM13             ((uint32_t)0x00000080)

#define RCC_APB1Periph_TIM14             ((uint32_t)0x00000100)

#define RCC_APB1Periph_WWDG              ((uint32_t)0x00000800)

#define RCC_APB1Periph_SPI2              ((uint32_t)0x00004000)

#define RCC_APB1Periph_SPI3              ((uint32_t)0x00008000)

#define RCC_APB1Periph_USART2            ((uint32_t)0x00020000)

#define RCC_APB1Periph_USART3            ((uint32_t)0x00040000)

#define RCC_APB1Periph_UART4             ((uint32_t)0x00080000)

#define RCC_APB1Periph_UART5             ((uint32_t)0x00100000)

#define RCC_APB1Periph_I2C1              ((uint32_t)0x00200000)

#define RCC_APB1Periph_I2C2              ((uint32_t)0x00400000)

#define RCC_APB1Periph_USB               ((uint32_t)0x00800000)

#define RCC_APB1Periph_CAN1              ((uint32_t)0x02000000)

#define RCC_APB1Periph_CAN2              ((uint32_t)0x04000000)

#define RCC_APB1Periph_BKP               ((uint32_t)0x08000000)

#define RCC_APB1Periph_PWR               ((uint32_t)0x10000000)

#define RCC_APB1Periph_DAC               ((uint32_t)0x20000000)

#define RCC_APB1Periph_CEC               ((uint32_t)0x40000000)


#define RCC_APB2Periph_AFIO              ((uint32_t)0x00000001)

#define RCC_APB2Periph_GPIOA             ((uint32_t)0x00000004)

#define RCC_APB2Periph_GPIOB             ((uint32_t)0x00000008)

#define RCC_APB2Periph_GPIOC             ((uint32_t)0x00000010)

#define RCC_APB2Periph_GPIOD             ((uint32_t)0x00000020)

#define RCC_APB2Periph_GPIOE             ((uint32_t)0x00000040)

#define RCC_APB2Periph_GPIOF             ((uint32_t)0x00000080)

#define RCC_APB2Periph_GPIOG             ((uint32_t)0x00000100)

#define RCC_APB2Periph_ADC1              ((uint32_t)0x00000200)

#define RCC_APB2Periph_ADC2              ((uint32_t)0x00000400)

#define RCC_APB2Periph_TIM1              ((uint32_t)0x00000800)

#define RCC_APB2Periph_SPI1              ((uint32_t)0x00001000)

#define RCC_APB2Periph_TIM8              ((uint32_t)0x00002000)

#define RCC_APB2Periph_USART1            ((uint32_t)0x00004000)

#define RCC_APB2Periph_ADC3              ((uint32_t)0x00008000)

#define RCC_APB2Periph_TIM15             ((uint32_t)0x00010000)

#define RCC_APB2Periph_TIM16             ((uint32_t)0x00020000)

#define RCC_APB2Periph_TIM17             ((uint32_t)0x00040000)

#define RCC_APB2Periph_TIM9              ((uint32_t)0x00080000)

#define RCC_APB2Periph_TIM10             ((uint32_t)0x00100000)

#define RCC_APB2Periph_TIM11             ((uint32_t)0x00200000)


当我们用到哪一个外设的时候,我们在这找到它对应的总线,然后使能时钟



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32单片机的复用端口初始化的步骤及方法