精华内容
下载资源
问答
  • 准确的来说有4个时钟源可以选分别是HSI、LSI、HSE、LSE(即内部高速,内部低速,外部高速,外部低速),高速时钟主要用于系统内核总线上的外设时钟。低速时钟主要用于独立看门狗IWDG、实时时钟RTC。 ①、HSI是...

    stm32可选的时钟源

    在STM32中,可以用内部时钟,也可以用外部时钟,在要求进度高的应用场合最好用外部晶体震荡器,内部时钟存在一定的精度误差。

    准确的来说有4个时钟源可以选分别是HSI、LSI、HSE、LSE(即内部高速,内部低速,外部高速,外部低速),高速时钟主要用于系统内核和总线上的外设时钟。低速时钟主要用于独立看门狗IWDG、实时时钟RTC。

    ①、HSI是高速内部时钟,RC振荡器,频率为8MHz,上电后默认的系统时时钟 SYSCLK = 8MHz,Flash编程时钟。

    ①、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。

    ③、LSI是低速内部时钟,RC振荡器,频率为40kHz,可用于独立看门狗IWDG、实时时钟RTC。

    ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

     

    系统时钟SYSCLK输入

    这里重点在高速时钟,因为大部分外设时钟都是用的高速时钟。系统内核和外设时钟的时钟只有一个源,那就是SYSCLK, 即常说的系统时钟, 他是有一个选择器SW来做选择的,有3种选择HSI、HSE和PLL, 上电后默认选择内部HSI, HSI虽然存在精度误差,但是能保证不会挂。这点比AVR单片机做的好一些,AVR单片机时钟一旦配置成外部的,如果外部时钟正常那时无法下载程序的。PLL为锁相环倍频输出,PLL时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,其输出频率最大不得超过72MHz, 也有网有超频工作的,但不提倡。

    也就是说系统时钟SYSCLK最终有以下几种选择:

    ①、SYSCLK = HSI

    ①、SYSCLK = HSE

    ③、SYSCLK = PLL

     

    image

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    关于PLL锁相环倍频(输入和输出):

    将输入时钟乘以一个系数后输出时钟,可以百度PLL原理。

    PLL的输入3种选择:

    ①、PLLi =  HSI /2

    ①、PLLi =  HSE /2

    ③、PLLi =  HSE

     

    PLL的输出有15种选择: PLLout = PLLi Xn (n = 2…16)

    image

     

     

    关于USB时钟

    STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源。该时钟源只能从PLL输出端获取(唯一的),,可以选择为1.5分频或者1分频,也就是,当需要使用USB模块时,PLL必须使能,并且时钟频率配置为48MHz或72MHz。

    image

     

    关于把时钟信号输出到外部

    另外,STM32还可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出的2分频、HSI、HSE、或者系统时钟。

     image

     

    关于系统时钟SYSCLK分配

    系统时钟SYSCLK,它是供STM32中绝大部分部件工作的时钟源。系统时钟可选择为PLL输出、HSI(8MHz)或者HSE(外部晶振)。系统时钟最大频率为72MHz,供给I2S音频总线和AHB总线时钟。

    image

    它通过AHB分频器分频后送给各模块使用,AHB分频器可选择1、2、4、8、16、64、128、256、512分频。其中AHB分频器输出的时钟送给5大模块使用:

    ①、内核总线:送给AHB总线、内核、内存和DMA使用的HCLK时钟。

    ②、Tick定时器:通过8分频后送给Cortex的系统定时器时钟。

    ③、I2S总线:直接送给Cortex的空闲运行时钟FCLK。

    ④、APB1外设:送给APB1分频器。APB1分频器可选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给定时器(Timer)2、3、4倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器2、3、4使用。

    ⑤、APB2外设:送给APB2分频器。APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给定时器(Timer)1倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器1使用。另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC分频器可选择为2、4、6、8分频。

    在以上的时钟输出中,有很多是带使能控制的,例如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等等。当需要使用某模块时,记得一定要先使能对应的时钟。

    需要注意的是定时器的倍频器,当APB的分频为1时,它的倍频值为1,否则它的倍频值就为2。

    连接在APB1(低速外设)上的设备有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看门狗、Timer2、Timer3、Timer4。注意USB模块虽然需要一个单独的48MHz时钟信号,但它应该不是供USB模块工作的时钟,而只是提供给串行接口引擎(SIE)使用的时钟。USB模块工作的时钟应该是由APB1提供的。

    连接在APB2(高速外设)上的设备有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PA~PE)、第二功能IO口。

    对于单片机系统来说,CPU和总线以及外设的时钟设置是非常重要的,因为没有时钟就没有时序。

    由于时钟是一个由内而外的东西,具体设置要从寄存器开始。 
    RCC 寄存器结构,RCC_TypeDeff,在文件“stm32f10x.h”中定义如下: (v3.4库)

    1059行->1081行。

    1. typedef struct
    2. {
    3.   __IO uint32_t CR;
    4.   __IO uint32_t CFGR;
    5.   __IO uint32_t CIR;
    6.   __IO uint32_t APB2RSTR;
    7.   __IO uint32_t APB1RSTR;
    8.   __IO uint32_t AHBENR;
    9.   __IO uint32_t APB2ENR;
    10.   __IO uint32_t APB1ENR;
    11.   __IO uint32_t BDCR;
    12.   __IO uint32_t CSR;
    13.  
    14. #ifdef STM32F10X_CL
    15.   __IO uint32_t AHBRSTR;
    16.   __IO uint32_t CFGR2;
    17. #endif /* STM32F10X_CL */
    18.  
    19. #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
    20.   uint32_t RESERVED0;
    21.   __IO uint32_t CFGR2;
    22. #endif /* STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL */
    23. } RCC_TypeDef;

    一般板子上只有8Mhz的晶振,而增强型最高工作频率为72Mhz,显然需要用PLL倍频9倍,这些设置都需要在初始化阶段完成。

     

     

     

    使用外部高速HSE时钟,程序设置时钟参数流程: 
         1、将RCC寄存器重新设置为默认值      RCC_DeInit; 
         2、打开外部高速时钟晶振HSE           RCC_HSEConfig(RCC_HSE_ON); 
         3、等待外部高速时钟晶振工作           HSEStartUpStatus = RCC_WaitForHSEStartUp(); 
         4、设置AHB时钟                          RCC_HCLKConfig; 
        5、设置高速AHB时钟                      RCC_PCLK2Config; 
        6、设置低速速AHB时钟                   RCC_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()

    为了方便说明,借用一下例程的RCC设置函数,并用中文注释的形式加以说明:

     

     

    使用内部高速HSI时钟,程序设置时钟参数流程: 
         1、将RCC寄存器重新设置为默认值      RCC_DeInit; 
         2、设置AHB时钟                           RCC_HCLKConfig; 
         3、设置高速AHB时钟                      RCC_PCLK2Config; 
         4、设置低速速AHB时钟                   RCC_PCLK1Config; 
        5、设置PLL选择时钟源和倍频数         RCC_PLLConfig(RCC_PLLSource_HSI_Div2, 倍频数); 

    6、打开PLL                                 RCC_PLLCmd(ENABLE); 
         7、等待PLL工作                            while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) 
         8、设置系统时钟                           RCC_SYSCLKConfig; 
         9、判断是否PLL是系统时钟               while(RCC_GetSYSCLKSource() != 0x08) 
       10、打开要使用的外设时钟                 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()

     

    复制代码

    void RCC_Configuration(void){
    
        /*将外设RCC寄存器重设为缺省值*/
        RCC_DeInit();
     
        /*设置AHB时钟(HCLK)*/ 
        RCC_HCLKConfig(RCC_SYSCLK_Div1);  //RCC_SYSCLK_Div1——AHB时钟= 系统时钟
    
        /* 设置高速AHB时钟(PCLK2)*/ 
        RCC_PCLK2Config(RCC_HCLK_Div1);   //RCC_HCLK_Div1——APB2时钟= HCLK
    
        /*设置低速AHB时钟(PCLK1)*/    
        RCC_PCLK1Config(RCC_HCLK_Div2);   //RCC_HCLK_Div2——APB1时钟= HCLK / 2
    
        /*设置FLASH存储器延时时钟周期数*/
        FLASH_SetLatency(FLASH_Latency_2); //FLASH_Latency_2  2延时周期
    
        /*选择FLASH预取指缓存的模式*/  
        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);       // 预取指缓存使能
    
        /*设置PLL时钟源及倍频系数*/ 
        RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);        
    
        /*使能PLL */
        RCC_PLLCmd(ENABLE); 
    
        /*检查指定的RCC标志位(PLL准备好标志)设置与否*/   
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ;
     
        /*设置系统时钟(SYSCLK)*/ 
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 
    
        /* PLL返回用作系统时钟的时钟源*/
        while(RCC_GetSYSCLKSource() != 0x08);                 //0x08:PLL作为系统时钟
    }

    复制代码

     

    PLL的设定需要在使能之前,一旦PLL使能后参数不可更改。

    在STM32中,连接在APB1(低速外设)上的设备有:电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看门狗、Timer2、Timer3、Timer4 。

    连接在APB2(高速外设)上的设备有:GPIO_A-E、USART1、ADC1、ADC2、ADC3、TIM1、TIM8、SPI1、ALL。

    程序举例:

    APB1(低速外设)

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE);

    APB2(高速外设)

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA  , ENABLE);

     

     

     

     

     

     

     

     

     

     

     

    STM32和其它单片机相比时钟更为复杂,就是为了灵活配置,降低功耗,不用的外设可以关闭时钟,看似复杂但是,打开时钟树一看,就是几个根的选择,和几个枝叶的选择。

    展开全文
  • 单片机之外部时钟与内部时钟

    万次阅读 多人点赞 2018-12-15 20:33:53
     首先,单片机能正常工作的必要条件之一就是时钟电路,时钟是单片机的脉搏,是单片机的驱动源,单片机工作是在统一的时钟脉冲控制下一拍一拍进行工作的。这个脉冲由单片机控制器中的时序电路发出的。所以单片机就很...

    1、晶振

            首先,单片机能正常工作的必要条件之一就是时钟电路,时钟是单片机的脉搏,是单片机的驱动源,单片机工作是在统一的时钟脉冲控制下一拍一拍进行工作的。这个脉冲由单片机控制器中的时序电路发出的。所以单片机就很需要晶振。

           晶振,全称是石英晶体振荡器,是一种高精度和高稳定度的振荡器。通过一定的外接电路来,可以生成频率和峰值稳定的正弦波。而单片机在运行的时候,需要一个脉冲信号,做为自己执行指令的触发信号,可以简单的想象为:单片机收到一个脉冲,就执行一次或多次指令。

           单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。—个机器周期包括12个时钟周期。如果一个单片机选择了12兆赫兹晶振,它的时钟周期是1/12us,它的一个机器周期是12×(1/12)us,也就是1us。

    2、概述

           任何外设都需要时钟,51单片机,stm32等等,我们知道寄存器是由D触发器组成的,往触发器里面写东西,前提条件是有时钟输入。
           51单片机不需要配置时钟,是因为一个时钟开了之后所有的功能都可以用了,而这个时钟是默认开启的,比如有一个水库,水库有很多个闸,这些闸默认是开启的,因此每个闸都会出水,任意一个闸可以直接用,但存在一个问题,没用到的闸也在出水,即也在耗能。那么水库是能源,闸可认为每个外设的使用状态,时钟可认为是闸的开关。

           stm32之所以是低功耗,它将所有的门都默认设置为disable,需要用哪个开哪个闸,即你用什么外设,打开相应的外设的时钟就可以,其它还是disable,即耗能就会减少。
           51单片机中一个时钟把所有的都包了,而stm32的时钟是有分工的,并且每类时钟的频率不一样,因为没必要所有的时钟都是最高频率,够用即可,好比一个闸水流大小,我就洗个水,出来洗澡的水,没必要,消耗能源也多,所以不同的时钟也会有频率差别,或者在配置的时候可以配置时钟分频。

    3、内部时钟和外部时钟

          单片机的时钟信号由外部振荡和内部振荡两种方式得到

          内部时钟:一般采用使用11.0592MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路,所以外部只要连接一个晶振和两个电容(C1、C2)即可,电容容量一般在15pF至50pF之间,对频率有微调作用。即构成了自激振荡器,发出的脉冲直接送入内部时钟电路。

          注意:晶振和电容尽可能安装的与单片机引脚XTAL1和XTAL2靠近。为了减少寄生电容,更好的保证振荡器稳定。

          外部时钟:将外部振荡脉冲接入XTAL1和XTAL2,即把已有的时钟信号引入单片机内,外部时钟方式适宜用来使单片机的时钟与外部信号一致。对于HMOS的单片机,外部时钟信号由XTAL2引入,对于CHMOS的单片机,外部时钟由XTAL1引入。

    部分内容转载: http://zhidao.baidu.com/question/96722533.html

                              http://m.elecfans.com/article/567385.html

                              http://m.elecfans.com/article/771350.html

                              https://zhidao.baidu.com/question/96722533.html

    供学习内容:    http://www.elecfans.com/d/718515.html

                              http://www.elecfans.com/d/663853.html

     

     

     

     

     

    展开全文
  • STM32使用内部时钟当系统时钟

    万次阅读 2019-06-01 15:00:48
    最近刚开始接触STM32,因为项目中所使用的STM32没有外部晶振,再加上需要使用一些高频外设,所以说就只能使用内部的HSI作为PLL时钟源,作为系统时钟。下图为STM32F10时钟系统框图以及相应说明: 下面为我参考STM...

    最近刚开始接触STM32,因为项目中所使用的STM32没有外部晶振,再加上需要使用一些高频外设,所以说就只能使用内部的HSI作为PLL时钟源,作为系统时钟。下图为STM32F10时钟系统框图以及相应说明:

    下面为我参考STM32相应资料所写的系统时钟的初始化函数:                                                                        

    void RCC_Configuration(void)
    {
        RCC_DeInit();                                      		//重设RCC寄存器为缺省值
        RCC_HSICmd(ENABLE);                                   	//使能HSI内部高速晶振
        while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);    	//等待使能成功
        
        //配置AHB时钟频率与系统时钟频率一致    
        RCC_HCLKConfig(RCC_SYSCLK_Div1);  
    
        //配置APB1低速时钟频率为AHB时钟频率的1/2                     	
        RCC_PCLK1Config(RCC_HCLK_Div2);  
    
        //配置APB2高速时钟频率与AHB时钟频率一致                      
        RCC_PCLK2Config(RCC_HCLK_Div1);  
                         	
        //配置ADC时钟频率为APB2时钟频率的1/4
        RCC_ADCCLKConfig(RCC_PCLK2_Div4);                      
    
        //将内部晶振时钟2分频后作为PLL时钟源,倍频系数为10(即系统时钟为40MHz)
        RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_10);   
    
        //使能PLL(如果PLL被用于系统时钟,那么它不能被失能)                
        RCC_PLLCmd(ENABLE);     
    
        //等待指定的RCC标志位设置成功,等待PLL初始化成功
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  
     	
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);              //以PLL时钟作为系统时钟源
    
        //0x00:HSI作为系统时钟
        //0x04:HSE作为系统时钟
        //0x08:PLL作为系统时钟
        while(RCC_GetSYSCLKSource() != 0x08);          			//等待PLL时钟成功作为系统时钟源
    }

    最后补充:从STM32F10时钟系统框图及说明这个图中你可以看出,系统时钟的选择有三种,分别为HSI、HSE和PLL。如果选择了以HSI为PLL时钟源的PLL为系统时钟,频率是达不到72MHz的,最多就是 8MHz/2*16 = 64MHz。但是实际上,由于HSI内部RC振荡器精度不是很高,再加上也不是很稳定,所以建议如果选择PLL为系统时钟,且PLL时钟源为HSI,建议系统时钟设置不要超过50MHz。

    展开全文
  • STM32F030 使用内部时钟和外部时钟

    千次阅读 2019-03-09 15:06:28
    static void SetSysClock(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/ #if defined (PLL_SOURCE_HSI) ...
    static void SetSysClock(void)
    {
      __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
      
      /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/
    #if defined (PLL_SOURCE_HSI)
      /* At this stage the HSI is already enabled */
    
      /* Enable Prefetch Buffer and set Flash Latency */
      FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;
     
      /* HCLK = SYSCLK */
      RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
          
      /* PCLK = HCLK */
      RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;
    
      /* PLL configuration = (HSI/2) * 12 = ~48 MHz */
      RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
      RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSI_Div2 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL12);
                
      /* Enable PLL */
      RCC->CR |= RCC_CR_PLLON;
    
      /* Wait till PLL is ready */
      while((RCC->CR & RCC_CR_PLLRDY) == 0)
      {
      }
    
      /* Select PLL as system clock source */
      RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
      RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;    
    
      /* Wait till PLL is used as system clock source */
      while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)
      {
      }
    #else
     #if defined (PLL_SOURCE_HSE)
      /* Enable HSE */    
      RCC->CR |= ((uint32_t)RCC_CR_HSEON);
     #elif defined (PLL_SOURCE_HSE_BYPASS)
      /* HSE oscillator bypassed with external clock */    
      RCC->CR |= (uint32_t)(RCC_CR_HSEON | RCC_CR_HSEBYP);
     #endif /* PLL_SOURCE_HSE */
       
      /* Wait till HSE is ready and if Time out is reached exit */
      do
      {
        HSEStatus = RCC->CR & RCC_CR_HSERDY;
        StartUpCounter++;  
      } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
    
      if ((RCC->CR & RCC_CR_HSERDY) != RESET)
      {
        HSEStatus = (uint32_t)0x01;
      }
      else
      {
        HSEStatus = (uint32_t)0x00;
      }  
    
      if (HSEStatus == (uint32_t)0x01)
      {
        /* Enable Prefetch Buffer and set Flash Latency */
        FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;
     
        /* HCLK = SYSCLK */
        RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
          
        /* PCLK = HCLK */
        RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;
    
        /* PLL configuration = HSE * 6 = 48 MHz */
        RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
        RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL6);
                
        /* Enable PLL */
        RCC->CR |= RCC_CR_PLLON;
    
        /* Wait till PLL is ready */
        while((RCC->CR & RCC_CR_PLLRDY) == 0)
        {
        }
    
        /* Select PLL as system clock source */
        RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
        RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;    
    
        /* Wait till PLL is used as system clock source */
        while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)
        {
        }
      }
      else
      { /* If HSE fails to start-up, the application will have wrong clock 
             configuration. User can add here some code to deal with this error */
      }  
    #endif /* PLL_SOURCE_HSI */  
    }
    

     

    展开全文
  • 外部时钟与内部时钟区别 作用 使用条件
  • 硬件时钟和系统时钟

    千次阅读 2017-03-23 16:51:48
    硬件时钟和系统时钟  1、硬件时钟:硬件时钟是存储在主板上CMOS里的时钟,关机后该时钟依然运行,主板的电池为它供电。对应于嵌入式设备有一个RTC模块。硬件时钟即RTC时钟。  2、系统时钟:是软件系统的时钟。软件...
  • JZ2440系统时钟和定时器

    千次阅读 2017-07-19 18:50:18
    芯片刚开始上电时, 运行的时钟就等于晶振的时钟Fin, 通过设置MPLLUPLL可以提升运行频率.MPLL计算方法: 例: Fout = (2 * (MDIV + 8) * Fin) / ((PDIV + 2) * (2^SDIV)) Fout = 200MHz = (2 * (92 + 8) * 12) / ...
  • 【STM32】系统时钟RCC详解(超详细,超全面)

    万次阅读 多人点赞 2019-08-08 15:42:35
    时钟是单片机运行的基础,时钟信号推动单片机各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率,像人的心跳一样 只有有了心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做...
  • 系统时钟和硬件时钟同步

    千次阅读 2015-01-22 16:34:29
    硬件时钟调整与系统时钟一致://system("hwclock -w")int SyncSystemClockToHw(void) { struct timeval tv; struct tm tm_time; int fd; int ret = 0; ret = access("/dev/rtc1",F_OK); if(0 == ret) { fd...
  • STM8S内部时钟切换问题解决

    千次阅读 2013-12-29 01:50:53
    在使用STM8S105实现内部时钟切换的时候,发现时钟可以在HIS(内部高速时钟HSE(外部高速时钟)之间切换,而HSI(内部高速时钟LSI(内部低速时钟)之间的切换却不正常。当芯片上电或复位后芯片采用的是HSI/8...
  • STC15F2K60S2设置内部时钟工作频率

    千次阅读 2018-11-28 20:18:25
    STC15F2K60S2的内部集成高精度R/C时钟,+/-1%温漂,常温下温漂5%,5MHz~35MHz宽范围可设置,可彻底省去昂贵晶振电路外部复位电路。 设置单片机内部高精度R/C时钟,在程序中包含下面代码。 #define FOSC ...
  • 实时时钟:RTC时钟,用于提供年、月、日、时、分、秒星期等的实时时间信息,由后备电池供电,当你晚上关闭系统早上开启系统时,RTC仍然会保持正确的时间日期。 系统时钟:是一个存储于系统内存中的逻辑时钟...
  • linux系统时钟和硬件时钟

    千次阅读 2013-01-03 09:31:28
    在PC机上,一般都会有由电池驱动的硬件时钟。这个电池的作用是什么呢?它就是保证当我们的Computer没电时,我们的(硬件)时钟仍然可以工作。 2、那么硬件时钟是怎样设置的呢?  a) 硬件时钟可以在BIOS启动时设置...
  • 1.内部时钟设置程序 (首先在程序中注释掉SystemInit(); 再采用下面两项设置) void RCC_Configuration(void)...
  • PTP时钟和NTP时钟同步有什么区别

    千次阅读 2020-07-29 15:11:27
    理论上任何PTP时钟都能实现主时钟和时钟的功能,但一个PTP通信子网只能有一个主时钟。整个系统中的最优时钟为最高级时钟GMC(Grandmaster Clock),有着最好的稳定性、精确性、确定性等。根据各节点上时钟的精度...
  • STM32 时钟系统内部结构

    千次阅读 2017-04-20 15:36:17
    STM32 时钟系统内部结构   为什么需要进行是时钟配置? 所有的外设都需要时钟管理; 具有开关作用,当某些管脚不需要连接外设时,可以选择性的进行时钟的关闭,还可以配置时钟的速度,能够有效的减少耗电量...
  • 系统时钟,硬件时钟(后备时钟,实时时钟),网络时钟 辨析 1. 系统时钟 ...linux默认把后备时钟当成GMT+0时间,windows则BIOS完全相同。 系统时钟可以通过网络时钟进行同步,在windows系统中...
  • 蓝牙时钟

    千次阅读 2016-04-08 10:17:47
    因蓝牙时钟取自一个自由运转的时钟,该时钟永不会被调整关 闭。 作为与其它单元的同步,仅有时钟补偿值对该时钟作为相互同步的临 时蓝牙时钟。应当注意:蓝牙时钟与每天的时间无关,因此,它可用任何 值初始化。...
  • //使用外部8M时钟 RCC->CR |= ((uint32_t)RCC_CR_HSION);//使用内部8M时钟 /* Wait till HSE is ready and if Time out is reached exit */ do { // HSEStatus = RCC->CR & RCC_CR_HSERDY;//使用外部8M时钟 ...
  • 时钟极性和时钟相位概念

    千次阅读 2018-04-13 12:52:58
    时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择...SPI主模块与之通信的外设音时钟相位...
  • 相位同步、频率同步相位同步频率同步时间同步频率同步区别:参考链接同相位时钟、同源时钟、同时钟域时钟和异步时钟同相位时钟同源时钟同时钟域时钟异步时钟参考链接 本文属于总结性质文章,有借鉴他人文章。 相位...
  • Xilinx FPGA全局时钟和局部时钟资源

    千次阅读 2019-09-12 09:40:10
    “全局时钟和第二全局时钟资源”是FPGA同步设计的一个重要概念。合理利用该资源可以改善设计的综合实现效果;如果使用不当,不但会影响设计的工作频率稳定性等,甚至会导致设计的综合、实现过程出错。Xilinx ...
  • CPU时钟周期和时钟频率

    万次阅读 多人点赞 2019-03-30 23:22:37
    就工作方式而言,CPU 分两种:同步 CPU 异步 CPU...在计算机中,就是时钟发生器来完成这项工作——不停给芯片发送一个连续的脉冲信号,每一次脉冲到来,芯片的晶体管就改变一次状态,让整个芯片完成一定任务。 ...
  • 由于博主的水平有限,如有错误疏漏之处,恳请读者不吝指正。 本文分析展示了一个事件在另一个事件之前发生的概念,由此定义了事件的偏序。并给出了一个同步系统逻辑时钟的分布式算法。这个逻辑时钟可以用来获得...
  • 参考:https://blog.csdn.net/zxh1592000/article/details/78644 ... 因项目需要改用内部时钟配置系统时钟,使用8MHSI,配置64M系统时钟。此文记录修改过程。 1. 修改在SystemInit (void)中被调...
  • 1.AnalogClockDigitalClock模拟时钟和数字时钟` android:layout_height="wrap_content"/> android:l
  • STM32如何使用内部时钟源当系统时钟

    万次阅读 2014-10-07 12:17:13
    由于最近老师让做一个项目,要用到STM32但是考虑成本问题,决定不用外部时钟,所以在网上搜集整理了一些资料,加上自己的一些想法。 参考资料: http://bbs.ednchina.com/BLOG_ARTICLE_3011869.HTM ...
  • 时钟偏斜抖动

    千次阅读 2018-09-04 15:16:56
    时钟偏斜(Clock Skew):源时钟经过buffer延迟线延迟,导致触发器的时钟不同。 时钟抖动(Clock Jitter):相对于理想时钟沿实际时钟存在不随时间积累的、时而超前、时而滞后的偏移称为时钟抖动。 skew通常...
  • STM8S103K3: 外部时钟 + 内部时钟 的切换。 首先看一下 STM8S103K3 的时钟结构图,可以帮助你很好的理解。 这里有几个时钟,就是图中标识的时钟,需要弄清楚一下:fHSE: 外部高速晶振时钟,它是由外部晶振产生,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 399,895
精华内容 159,958
关键字:

内时钟和外时钟