您的位置:首页 > 编程语言 > C语言/C++

寒假学习之STM32(2)----时钟

2017-01-22 17:30 260 查看

时钟的相关

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()这个函数,我们再推广一下,看看其他时钟的使能函数:



先了解这么多,以后用到的时候再深入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息