AHB和APB1和APB2之间的联系(参考中文手册)
注:中文手册所连接的外设更详细
AHB用于高性能模块(如CPU、DMA和DSP等)之间的连接,是STM32中的高性能总线,用于连接处理器核心,高速存储器和高带宽外设。
APB1是STM32中的低俗外设总线。APB1总线上连接了一些低速外设和模块,APB1时钟频率为最高36MHz,连接的外设包括 I2C、SPI、USART、USB、DAC等
APB2时钟频率为最高72MHz,APB2总线上则连接了一些高速外设和模块,连接的外设包括ADC、TIM、GPIO(A~G),USART1等
总之,总线是一种用于连接处理器、内存和外设的通信架构,它可以传输数据和控制信号。计算机中的三大总线由数据总线、地址总线和控制总线组成,它们用于处理器与内存和外设之间的数据传输、地址定位和控制信号传递。在STM32中,AHB、APB1和APB2都属于处理器总线,用于连接处理器和外设之间的数据传输和控制信号传递。
void LED_Init(void){
//1.使能GPIOB时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
//2.指定GPIOB5工作参数 - 推挽输出, 50MHz
GPIO_InitTypeDef GPIO_Config;
GPIO_Config.GPIO_Pin = GPIO_Pin_5;//引脚
GPIO_Config.GPIO_Speed = GPIO_Speed_50MHz;//输出速率
GPIO_Config.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出模式
GPIO_Init(GPIOB, &GPIO_Config);
//指定GPIOE5工作参数 - 推挽输出, 50MHz
GPIO_Config.GPIO_Pin = GPIO_Pin_5;
GPIO_Config.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Config.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_Config);
//3.设置GPIOB5和GPIOE5为高电平, 省电
GPIO_SetBits(GPIOB, GPIO_Pin_5);
GPIO_SetBits(GPIOE, GPIO_Pin_5);
}
为什么下面这行代码选APB2总线?(以led灯为例,这里是STM32zet6)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
根据原理图LED0可知,LED0是PB5,所以端口是GPIOB,外设就属于GPIO了,再根据中文手册可知GPIO外设是属于APB2总线(中文手册和APB可见上文)