以下是一个网友关于GPIO时钟方面的精彩讲述,贴上来供大家参考:
1、RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能GPIOC时钟
为什么说有的CortexM3外设在配置前都要配置RCC对于的时钟? 因为CortexM3是时钟驱动型,所有的外设都被分配到不同的总线桥上,有总线来提供工作的时钟。当关闭某个外设的时钟的时候,也就意味做这个外设被关闭了,以期达到可以控制MCU电流消耗的目的。
2、RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能GPIOC时钟
为什么配置C端口,需要初始化的是APB2时钟? 因为STM32有两条外设桥总线,分别为最大72Mhz的APB2和最大36Mhz的APB1,GPIO在APB2下,下图是Clock的驱动树:
注意图中的PCLK1和PCLK2。
额外再补一张STM32广告上示例STM32的结构图:
贴图出错了,给你改改正确的。
|