RCC(AHB,APB1,APB2)

AHB和APB1和APB2之间的联系(参考中文手册)

STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced Arm®-based 32-bit MCUs - Reference manual

注:中文手册所连接的外设更详细 

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可见上文)

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值