当前位置:   article > 正文

基于正点原子stm32mini板的时钟系统的学习_正点原子数字时钟

正点原子数字时钟

本篇文章将详细讲述时钟系统的相关知识。小白总结,如有错误,请大神指教。

任何一个外设在使用之前,必须首先使能其相应的时钟。所以学会时钟系统知识显得尤为重要。

一、时钟系统框图

(1)时钟源:HSI RC,HSE OSC,LSE OSC,LSI RC,PLL。

(2)三种不同的时钟源可被用来驱动系统时钟(SYSCLK):HSI振荡器时钟 , HSE振荡器时钟 ,PLL时钟。

(3)HSE主要通过外部晶振来开启频率,频率范围约是4MHz---16MHz在这个模式里,必须提供外部时钟。它的频率最高可达50MHz。外部时钟信号(50%占空比的方波、正弦波或三角波)必须连到SOC_IN引脚,同时保证OSC_OUT引脚悬空。3~25Mz外部振荡器可为系统提供非常精确的主时钟。

(4)HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差。

(5)PLL:锁相环内部输出。主PLL以下述时钟源之一为输入,产生倍频的输出:HSI时钟除以2 ,HSE或通过一个可配置分频器的PLL2时钟。当改变主PLL的输入时钟源时,必须在选中了新的时钟源(通过时钟配置寄存器(RCC_CFGR)的PLLSRC位)之后才能关闭原来的时钟源。 如果使能了时钟中断寄存器(RCC_CIR),可以在PLL就绪时产生一个中断。

(6)LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。LSE晶体通过在备份域控制寄存器(RCC_BDCR)里的LSEON位启动和关闭。 

(7)LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。LSI时钟频率大约40kHz(在30kHz和60kHz之间)。

(8)系统时钟(SYSCLK):系统复位后,HSI振荡器被选为系统时钟。当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。 只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟或PLL稳定),从一个时钟源到另一个时钟源的切换才会发生。在被选择时钟源没有就绪时,系统时钟的切换不会发生。直至目标时钟源就绪,才发生切换。

(9)时钟安全系统(CSS) :时钟安全系统可以通过软件被激活。一旦其被激活,时钟监测器将在HSE振荡器启动延迟后被使能,并在HSE时钟关闭后关闭。

(10)几个重要的时钟:SYSCLK(系统时钟),AHB总线时钟,APB1总线时钟(低速)(速度最高36MHz),APB2总线时钟(高速)(速度最高72MHz),PLL时钟。

二、RCC相关配置寄存器

  1. typedef struct
  2. {
  3. ____IO uint32_t CR; //HSI,HSE,CSS,PLL等的使能和就绪标志位
  4. ____IO uint32_t CFGR;//PLL等的时钟源选择,分频系数设定
  5. ____IO uint32_t CIR; //清除/使能时钟就绪中断
  6. ____IO uint32_t APB2RSTR; //APB2线上外设复位寄存器
  7. ____IO uint32_t APB1RSTR; //APB1线上外设复位寄存器
  8. ____IO uint32_t AHBENR; //DMA,SDIO等时钟使能
  9. ____IO uint32_t APB2ENR; //APB2线上外设时钟使能
  10. ____IO uint32_t APB1ENR; //APB1线上外设时钟使能
  11. ____IO uint32_t BDCR; //备份域控制寄存器
  12. ____IO uint32_t CSR; //控制状态寄存器
  13. }RCC__TypeDef;

三、RCC相关头文件和固件库源文件

1.时钟使能配置:

  1. RCC_LSEConfig();
  2. RCC_HSEConfig();
  3. RCC_HSICmd();
  4. RCC_LSICmd();
  5. RCC_PLLCmd();

2.时钟源相关配置:

  1. RCC_PLLConfig();
  2. RCC_SYSCLKConfig();
  3. RCC_RTCCLKConfig();

3.分频系数选择配置:

  1. RCC_HCLKConfig();
  2. RCC_PCLK1Config();
  3. RCC_PCLK2Config();

4.外设时钟使能:

  1. RCC_APB1PeriphClockCmd();
  2. RCC_APB2PeriphClockCmd();
  3. RCC_AHBPeriphClockCmd();

5.其他外设时钟配置:

  1. RCC_ADCCLKConfig();
  2. RCC_RTCCLKConfig();

6.状态参数获取参数:

  1. RCC_GetClocksFreq();
  2. RCC_GetSYSCLKSource();
  3. RCC_GetFlagStatus();

7.RCC中断相关函数:

  1. RCC_ITConfig();
  2. RCC_GetITStatus();
  3. RCC_ClearITPendingBit();

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/56984
推荐阅读
相关标签
  

闽ICP备14008679号