打印
[应用相关]

系统时钟RCC详解(超详细,超全面)

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
21
APB1和APB2的对应外设
F1系列

使用特权

评论回复
22
发给她更好fh|  楼主 | 2021-4-27 14:35 | 只看该作者
APB1上面连接的是低速外设,包括电源接口、备份接口、CAN、USB、I2C1、I2C2、USART2、USART3、UART4、UART5、SPI2、SP3等;

而APB2上面连接的是高速外设,包括UART1、SPI1、Timer1、ADC1、ADC2、ADC3、所有的普通I/O口(PA-PE)、第二功能I/O(AFIO)口等。

使用特权

评论回复
23
发给她更好fh|  楼主 | 2021-4-27 14:39 | 只看该作者
F4系列

使用特权

评论回复
24
发给她更好fh|  楼主 | 2021-4-27 14:41 | 只看该作者
这个和F1系列类似,我们就举几个特殊的

 APB2总线:高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11   UTART1,USART6

 APB1总线:通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7  UTART2~UTART5

F4系列的系统时钟频率最高能到168M

 

具体  可以在 stm32f10x_rcc.h  和stm32f40x_rcc.h   中查看

或者通过 STM32参考手册搜索“系统架构”或者“系统结构”  查看外设挂在哪个时钟下,

使用特权

评论回复
25
发给她更好fh|  楼主 | 2021-4-27 14:42 | 只看该作者
RCC相关寄存器:
这里我们以F1系列为例

使用特权

评论回复
26
发给她更好fh|  楼主 | 2021-4-27 14:43 | 只看该作者
可以对上上面的时钟框图和RCC寄存器来学习,对STM32的时钟系统有个大概的了解   其实也就是我们上面介绍的流程,理解了自然也就能写出来

使用特权

评论回复
27
发给她更好fh|  楼主 | 2021-4-27 14:43 | 只看该作者
RCC初始化:
这里我们使用HSE(外部时钟),正常使用的时候也都是使用外部时钟

使用特权

评论回复
28
发给她更好fh|  楼主 | 2021-4-27 14:45 | 只看该作者
使用HSE时钟,程序设置时钟参数流程:

使用特权

评论回复
29
发给她更好fh|  楼主 | 2021-4-27 14:48 | 只看该作者
1、将RCC寄存器重新设置为默认值   RCC_DeInit;

使用特权

评论回复
30
发给她更好fh|  楼主 | 2021-4-27 14:49 | 只看该作者
2、打开外部高速时钟晶振HSE       RCC_HSEConfig(RCC_HSE_ON);

使用特权

评论回复
31
发给她更好fh|  楼主 | 2021-4-27 14:51 | 只看该作者
3、等待外部高速时钟晶振工作      HSEStartUpStatus = RCC_WaitForHSEStartUp();

使用特权

评论回复
32
发给她更好fh|  楼主 | 2021-4-27 14:52 | 只看该作者
4、设置AHB时钟         RCC_HCLKConfig;

使用特权

评论回复
33
发给她更好fh|  楼主 | 2021-4-27 14:54 | 只看该作者
5、设置高速AHB时钟     RCC_PCLK2Config;

使用特权

评论回复
34
发给她更好fh|  楼主 | 2021-4-27 14:54 | 只看该作者
6、设置低速速AHB时钟   RCC_PCLK1Config;

使用特权

评论回复
35
发给她更好fh|  楼主 | 2021-4-27 14:55 | 只看该作者
7、设置PLL              RCC_PLLConfig;

使用特权

评论回复
36
发给她更好fh|  楼主 | 2021-4-27 14:59 | 只看该作者
8、打开PLL              RCC_PLLCmd(ENABLE);

使用特权

评论回复
37
发给她更好fh|  楼主 | 2021-4-27 15:01 | 只看该作者
9、等待PLL工作          while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)

使用特权

评论回复
38
发给她更好fh|  楼主 | 2021-4-27 15:02 | 只看该作者
10、设置系统时钟        RCC_SYSCLKConfig;

使用特权

评论回复
39
发给她更好fh|  楼主 | 2021-4-27 15:02 | 只看该作者
11、判断是否PLL是系统时钟     while(RCC_GetSYSCLKSource() != 0x08)

使用特权

评论回复
40
发给她更好fh|  楼主 | 2021-4-27 15:03 | 只看该作者
12、打开要使用的外设时钟      RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则