时钟的相关
PS:这个章节初次接触也是一头雾水,我打算先整理一下思路,在逐渐的写一些相关文章来进行完善,目前的主要工作和目的是为了先学会配置stm32
时钟应该算是stm32的心脏,每一次进行寄存器配置之前,总是要先配置一遍时钟,比如在配置GPIO口的时候,步骤为:
配置时钟->在GPIO_Init_TypeDef 的结构体中配置相关元素->GPIO_Init()进行初始化
而在配置GPIO时钟的时候,我们使用的是RCC_APB2PeriphCLockCmd(GPIOx,ENABLE);
使用这个函数的原因参见下图:
由总体的架构图中可以看出,STM32大致有五个重要的时钟
1. SYSCLK(系统时钟)
2. AHB(总线时钟)
3. APB1(低速总线时钟)
4. APB2(高速总线时钟)
5. PLL( 锁相环倍频输出,最大为72MHz,可以影响系统时钟 )
而这五大时钟,由五个重要的时钟源来影响:
1. HSI : 高速内部时钟,8MHz 由内部RC电路产生,精度捉急
2. HSE : 高速外部时钟,由时钟源或者外部晶振产生,频率大概在4MHz~16MHz
3. LSI : 低速内部时钟,40kHz,基本上供给于看门狗
4. LSE : 低速外部时钟,串接外部32.768kHz的晶振
5. PLL : 锁相环倍频输出,最大为72MHz,可以影响系统时钟
这么多时钟的配置主要是在我们工程的stm32f10x_rcc.c的文件中
承接上一篇博客,还是以APB2PeriphClockCmd为例,上一篇的代码中配置的过成为:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE, ENABLE );//实际上可以使用 | 运算来同时配置多个GPIO口
而这个函数的入口参数我们也可以在 stm32f10x_rcc.c 这个文件中找到,如图:
借助RCC_APB2PeriphClockCmd()这个函数,我们再推广一下,看看其他时钟的使能函数:
先了解这么多,以后用到的时候再深入