专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 行业应用

stm32钟表配置

发布时间:2010-06-06 18:56:34 文章来源:www.iduyao.cn 采编人员:星星草
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
时钟
}

 

 

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 《松本行弘的程序全世界》之面向对象

    《松本行弘的程序世界》之面向对象 最近读《SICP》把脑细胞搞死大半,还没看完2章,而且看得也是一知半解,实在是受不了了,...

  • GroovyHelp 3.2.7 GA公布

    GroovyHelp 3.2.7 GA发布 GroovyHelp简介   GroovyHelp是一款Javadoc及Groovydoc搜索查阅软件,它能够帮助Java开发人员以...

  • Velocity在Roller中的使用

    Velocity在Roller中的应用 Velocity是java世界中出现比较早,也比较成熟的、性能比较好的、应用也比较广泛的模板框架。   所...

  • Rpc远程调用框架的设计与兑现(2)

    Rpc远程调用框架的设计与实现(2) 接上: 3   基于Json的前后端数据交互 3.1   轻量级的数据交换形式 3.1.1    什么是Jso...

  • excel 单元格的锁定 以及 JXL的兑现方式

    excel 单元格的锁定 以及 JXL的实现方式 在使用excel表格时,有些列是不希望用户可以修改的,诸如审计日志里面确定的部分,而审计...

  • 仓秤跟散料秤:java连接opc Server

    仓秤和散料秤:java连接opc Server 这三篇都是之前写好的,一直没发。 这次一起发出来吧。   java连接硬件很痛苦,特别是对我这...

  • Rpc远程调用框架的设计与兑现(1)

    Rpc远程调用框架的设计与实现(1) Rpc远程调用框架的设计与实现 1     Rpc远程调用框架设计概述 1.1   研究背景 1.1.1...

  • 集合中的线程安全有关问题

    集合中的线程安全问题 一、why? Java中常用的集合框架推荐使用的三个实现:HashSet\ArrayList\HashMap都是线程不安全的.如...

  • Java定时任务的兑现

    Java定时任务的实现 本例依据Java自身提供的接口实现,通过监听器(Listener)和定时器(Timer)定时执行某个任务(Task)。 MyListener: ...

  • java中log日记的使用

    java中log日志的使用 一、介绍  Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控...

热门推荐: