`
anlx27
  • 浏览: 496619 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

stm32时钟配置

阅读更多

stm32的时钟比51种类多,在这归纳总结

 

一 stm32有五个时钟源,为HSIHSELSILSEPLL

 

 ①HSI是高速内部时钟,RC振荡器,频率为8MHz

 

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

 

③LSI    是低速内部时钟,RC振荡器,频率为40kHz

 

 


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


PLL  

为锁相环倍频输出,其时钟输入源可选择为HSI/2HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz

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

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

  




二 使用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的配置函数举例(使用外部8MHz晶振
)


/*******************************************************************************
* Function Name  : RCC_Configuration
* Description    :  RCC
配置(使用外部8MHz晶振
)
* Input            :

* Output         :

* Return         :

*******************************************************************************/
void RCC_Configuration(void)
{
  /*
将外设RCC寄存器重设为缺省值 */
  RCC_DeInit();


  /*
设置外部高速晶振(HSE
*/
  RCC_HSEConfig(RCC_HSE_ON);   //RCC_HSE_ON——HSE
晶振打开
(ON)


  /*
等待HSE起振
*/
  HSEStartUpStatus = RCC_WaitForHSEStartUp();


  if(HSEStartUpStatus == SUCCESS)     //SUCCESS
HSE晶振稳定且就绪

  {
    /*
设置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_HSE_Div1, RCC_PLLMul_9);   
// PLL
的输入时钟 = HSE时钟频率;RCC_PLLMul_9——PLL输入时钟
x 9
   
  /*
使能
PLL */
    RCC_PLLCmd(ENABLE);


    /*
检查指定的RCC标志位(PLL准备好标志)设置与否
*/   
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)     
       {
       }


    /*
设置系统时钟(SYSCLK
*/
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//RCC_SYSCLKSource_PLLCLK——
选择PLL作为系统时钟



    /* PLL
返回用作系统时钟的时钟源*/
    while(RCC_GetSYSCLKSource() != 0x08)     //0x08
PLL作为系统时钟

       {
       }
     }

/*
使能或者失能APB2外设时钟*/   
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC , ENABLE);
//RCC_APB2Periph_GPIOA    GPIOA
时钟

//RCC_APB2Periph_GPIOB    GPIOB
时钟
//RCC_APB2Periph_GPIOC    GPIOC
时钟
//RCC_APB2Periph_GPIOD    GPIOD
时钟
}

 

 

分享到:
评论

相关推荐

    STM32时钟配置

    STM32时钟配置是STM32微控制器中至关重要的一个环节,因为它直接影响到处理器和其他外设的工作效率和功耗。STM32系列基于ARM Cortex-M内核,其时钟系统设计灵活,允许用户根据应用需求进行精细的时钟源选择和分配。...

    STM32时钟+STM32CubeMX配置.rar_STM32CubeMX_STM32CubeMX及_STM32时钟配置_cub

    STM32时钟配置是嵌入式开发中的关键步骤,特别是在使用STM32微控制器时。STM32CubeMX是一款由意法半导体(STMicroelectronics)提供的强大的配置工具,它可以帮助开发者快速设置和初始化STM32芯片的各种参数,包括...

    stm32时钟配置源文件

    stm32时钟配置

    配置stm32时钟

    STM32时钟配置 在 STM32 微控制器中,配置系统时钟是一项非常重要的任务。本文将详细介绍 STM32 时钟配置的步骤和相关知识点。 一、STM32 时钟源 STM32 微控制器有五个时钟源,即 HSI、HSE、LSI、LSE 和 PLL。HSI...

    STM32时钟配置方法详解

    ### STM32时钟配置方法详解 #### 一、STM32中的时钟源 STM32微控制器具有丰富的时钟源,主要包括高速内部时钟(HSI)、高速外部时钟(HSE)、低速内部时钟(LSI)、低速外部时钟(LSE)以及锁相环(PLL)。这些时...

    STM32 时钟配置

    时钟配置对于STM32微控制器而言至关重要,因为它影响到系统运行的稳定性和性能。开发者需要根据所设计的系统需求,仔细选择时钟源,并合理配置预分频和倍频系数,以获得期望的时钟频率。不当的时钟设置可能会导致...

    STM32F103时钟配置流程

    STM32F103系列微控制器是ST公司生产的一款基于ARM Cortex-M3内核的32位...STM32F103的时钟配置是系统设计中的关键环节,直接影响到系统的性能和稳定性。通过理解上述知识点,用户可以更好地进行时钟系统的配置和优化。

    STM32时钟系统_stm32时钟_STM32CRC时钟_

    理解并正确配置STM32的时钟系统是确保高效、低功耗运行的关键。 首先,STM32的时钟源有以下几种: 1. **内部高速RC (HSI)**:这是一种内置的振荡器,通常用于启动和快速唤醒模式,频率一般为16MHz,但精度较低。 2....

    STM32时钟配置工具

    时钟工具可以为 STM32F4xx 微控制器配置系统时钟并生成 system_stm32f4xx.c...system_stm32f4xx.c 可以作为系统时钟配置文件的模板,用户可以轻松修改该文件以选择相 应的系统时钟频率和配置 CPU 对 Flash 的等待周期。

    STM32系统时钟的配置

    STM32进行软件开发时,最基本的就是对STM32芯片进行时钟和端口配置,然后是对项目所用到的片上资源进行配置并驱动,下面给出时钟和端口配置代码,该代码几乎涵盖了片上所有时钟和端口配置项目,可根据自己需要进行...

    stm32 官方时钟配置工具

    STM32 官方时钟配置工具是一款专为STM32微控制器设计的软件,用于帮助开发者轻松管理和配置MCU的时钟系统。这个工具是STM32生态系统的一部分,为开发人员提供了直观的界面和详细的时钟配置选项,使得在不同应用场景...

    基于STM32的proteus仿真——电子时钟设计.zip

    在本项目中,我们将使用STM32来设计一个电子时钟,并通过Proteus仿真软件进行验证。Proteus是一款强大的电子设计自动化(EDA)工具,支持电路仿真和嵌入式软件的模拟,是进行硬件与软件协同开发的理想平台。 首先,...

    STM32时钟系统配置程序源码深入分析.doc

    在STM32F103C8T6芯片中,时钟配置至关重要,因为它决定了微控制器的性能和功耗。本文将深入分析STM32时钟配置程序源码,帮助开发者理解和优化系统时钟。 首先,STM32的时钟配置通常在系统复位后由`SystemInit`函数...

    v3.5固件库stm32时钟系统配置流程

    "STM32 V3.5固件库时钟系统配置流程" STM32 V3.5固件库时钟系统配置流程是指在使用STM32微控制器时,如何正确地配置时钟系统,以满足不同的应用需求。本文将详细讲解STM32 V3.5固件库时钟系统配置方式。 在STM32 V...

    proteus仿真--STM32时钟设计与实现

    作品:proteus仿真--STM32时钟设计与实现 使用材料:STM32F103、8位数码管 平台:proteus 和 keil 技术实现:STM32控制8位数码管,显示小时、分钟、秒、毫秒;时钟用定时器实现 资源内容:proteus仿真电路图一份...

    stm32f4 时钟配置工具

    "stm32f4 时钟配置工具"就是为了帮助开发者更方便地管理STM32F4的时钟系统而设计的。 STM32F4的时钟系统由多个部分组成,包括主时钟(SYSCLK)、哈希和RNG时钟(HSE)、PLL(锁相环)、HSI(高速内部时钟)、LSI...

Global site tag (gtag.js) - Google Analytics