课程

课程 讲师

时钟系统

购买数
6
课时数
1
浏览数
3583
主讲人:
邵老师
有效期:
自购买之日起永久
免费
原价:¥10
分享

分享到:

手机查看

一、时钟系统框图讲解

    

        无论是小型单片机还是像STM32这样高级单片机,它们工作的核心都是大规模的时序逻辑电路,而驱动时序逻辑电路的关键则是准确而又稳定的时钟源。它的作用就像小学在操场上做广播体操时候播放的北京音乐,用于协调和同步各单元运行,为时序电路提供基本的脉冲信号。

        微控制器的运行必须要依赖周期性的时钟脉冲来驱动。往往由一个外部晶体振荡器提供时钟输入开始,最终转换为多个外部设备的周期性运作为末,这种时钟“能量”扩散流动的路径,犹如大树的养分通过主干流向各个分支,因此常称之为“时钟树”。

        STM32微控制器的时钟树是可以配置的,时钟输入源与最终到达外设处的时钟速率不再有固定的关系。

        

        image.png

二、时钟配置相关函数介绍

        

        typedef struct

        {

                  __IO uint32_t CR;                //HSI,HSE,CSS,PLL等的使能和就绪标志位 

                  __IO uint32_t CFGR;           //PLL等的时钟源选择,分频系数设定

                  __IO uint32_t CIR;               //清除/使能 时钟就绪中断

                  __IO uint32_t APB2RSTR;  //APB2线上外设复位寄存器

                  __IO uint32_t APB1RSTR;   //APB1线上外设复位寄存器

                  __IO uint32_t AHBENR;    //DMA,SDIO等时钟使能

                  __IO uint32_t APB2ENR;   //APB2线上外设时钟使能

                  __IO uint32_t APB1ENR;   //APB1线上外设时钟使能

                  __IO uint32_t BDCR;        //备份域控制寄存器

                  __IO uint32_t CSR;          //控制状态寄存器

        } RCC_TypeDef;


     时钟使能配置:

              RCC_LSEConfig() 、RCC_HSEConfig()、

              RCC_HSICmd() 、 RCC_LSICmd() 、 RCC_PLLCmd() ……

    时钟源相关配置:

              RCC_PLLConfig ()、 RCC_SYSCLKConfig() 、

              RCC_RTCCLKConfig() …

    分频系数选择配置:

              RCC_HCLKConfig() 、 RCC_PCLK1Config() 、 RCC_PCLK2Config()…

    外设时钟使能:

              RCC_APB1PeriphClockCmd():  //APB1线上外设时钟使能

              RCC_APB2PeriphClockCmd();  //APB2线上外设时钟使能

              RCC_AHBPeriphClockCmd();   //AHB线上外设时钟使能

    其他外设时钟配置:

              RCC_ADCCLKConfig ();  RCC_RTCCLKConfig();

    状态参数获取参数:

              RCC_GetClocksFreq();

              RCC_GetSYSCLKSource();

              RCC_GetFlagStatus()

    RCC中断相关函数 :

              RCC_ITConfig() 、 RCC_GetITStatus() 、 RCC_ClearITPendingBit()…


    对照《STM32F1xx中文参考手册_V10》P60~P76,了解这些寄存器的配置方法。


三、系统时钟初始化函数解读

    

    系统时钟初始化函数:

    SystemInit()

    使用V3.5版本的库函数,该函数在系统启动之后会自动调用。

    初始化之后的状态:

         SYSCLK         72MHz

         AHB                72MHz

         PCLK1           36MHz

         PCLK2           72MHz

         PLL                72MHz

讲师信息

邵老师

邵老师

粉丝:4
多年嵌入式开发经验,精通STM32/51单片机,扎实的C语言基本功
×

分享成功,快去个人中心查看吧~~~

祝您:学习愉快 !

确 定
×

加入我的看单

该课程需要加入我的看单后方可学习,确定加入?

确 定 取 消
关注官方微信