STM32 时钟系统和内部结构

来源:互联网 发布:长沙软件培训机构 编辑:程序博客网 时间:2024/06/13 03:51

STM32 时钟系统和内部结构



 

为什么需要进行是时钟配置?

所有的外设都需要时钟管理;

具有开关作用,当某些管脚不需要连接外设时,可以选择性的进行时钟的关闭,还可以配置时钟的速度,能够有效的减少耗电量。

 

从上图可以看出,共有四路时钟源:

内部高时钟源、内部低时钟源、外部高时钟源、外部低时钟源。

那么为什么需要配置内、外部时钟源呢?是否多余呢?

那开玩笑。人家费脑细胞能白干活?肯定是有用武之地的。

虽然外部时钟比内部时钟具有更高的精度,但是相对于内部时钟源,其稳定性和可靠性较低。也就是说,当外部时钟失效后,还有内部时钟进行补充,保证系统正常工作。

 

其中,

CSS端(黄色方块)的作用:时钟监视系统(设计的很走心),因为外部时钟最终有一路接CPU,接CPU,接CPU,就像上面讨论的一样,如果外部时钟不起作用怎么办?CPU是芯片的心脏啊,时钟可不能停啊,因此,CSS的作用就是当外部高时钟不起作用时,切换开关,接入内部高时钟源,保证CPU正常工作。

MCO端的作用:怎么才能知道时钟源是否起作用呢?MCO就作为外部检测,看看内部电路是否正常;还可以将其引出,作为其他电路的时钟源。

锁相环:这里起的作用是倍频效果。


RCC程序流程:

设置时钟流程:

1、将RCC寄存器重新设置为默认值  RCC_DeInit

2、打开外部高速时钟晶振HSE      RCC_HSEConfig(RCC_HSE_ON);

3、等待外部高速时钟晶振工作     HSEStartUpStatus=RCC_WaitForHSEStartUp();

4、设置AHB时钟                  RCC_HCLKConfig;

5、设置高速APB时钟              RCC_PCLK2Cconfig;

6、设置低速APB时钟              RC1C_PCLK1Config;

7、设置PLL                      RCC_PLLConfig;

8、打开PLL                      RCC_PLLCmd(ENABLE);

9、等待PLL工作;                while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);

10、设置系统时钟;              RCC_SYSCLKConfig;

11、判断PLL是否是系统时钟;     while(RCC_GetSYSCLKSource()!=0x08)

12、打开要使用的外设时钟        RCC_APB2PeriphClockCmd()

                                RCC_APB1PeriphClockCmd()

 



 

 

 

 

0 0
原创粉丝点击