历史上的今天
返回首页

历史上的今天

今天是:2024年12月26日(星期四)

正在发生

2018年12月26日 | STM32F1RCC时钟配置总结

2018-12-26 来源:eefocus

三种不同的时钟源可被用来驱动系统时钟(SYSCLK):


● HSI振荡器时钟


● HSE振荡器时钟


● PLL时钟


这些设备有以下2种二级时钟源:


● 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。 RTC用于从停机/


待机模式下自动唤醒系统。


● 32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。


当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。


stm32单片机的将时钟信号(例如HSE)经过分频或倍频(PLL)后,得到系统时钟,系统时钟经过分频,产生外设所使用的时钟。


设置时钟流程:


1、将RCC寄存器重新设置为默认值        RCC_DeInit


2、打开外部高速时钟晶振HSE            RCC_HSEConfig(RCC_HSE_ON);


3、等待外部高速时钟晶振工作           HSEStartUpStatus = RCC_WaitForHSEStartUp();


4、设置PLL                          RCC_PLLConfig


5、打开PLL                          RCC_PLLCmd(ENABLE);


6、设置系统时钟                     RCC_SYSCLKConfig


7、设置AHB时钟        RCC_HCLKConfig;


8、设置低速速AHB时钟                 RCC_PCLK1Config


9、设置高速AHB时钟                   RCC_PCLK2Config;


10、等待PLL工作                      while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) 


11、判断是否PLL是系统时钟           while(RCC_GetSYSCLKSource() != 0x08)


12、打开要使用的外设时钟      RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()


void RCC_init(void)


{


  RCC_ClocksTypeDef RCC_ClockFreq;


  RCC_DeInit(); //1、将RCC寄存器重新设置为默认值  


  #ifdef ClockSource_HSE


  /*-----------------------------------


   优先选择外部时钟


  ------------------------------------*/


   // Enable HSE


  RCC_HSEConfig(RCC_HSE_ON); //2、打开外部高速时钟晶振HSE  


 


  // Wait till HSE is ready   


  if (RCC_WaitForHSEStartUp() == SUCCESS) //3、等待外部高速时钟晶振工作


  {


/* Enable Prefetch Buffer */


    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);    //使能或禁止预取缓存区,FLASH的读写均需要时间,设置等待周期是为了确保正确的读写。因为cpu的速度远远大于FLASH的操作速度。用库函数 FLASH_SetLatency(FLASH_Latency_2)来设置。3、开启FLASH预读缓冲功能,加速FLASH的读取。所有程序中必须的


    /* Flash 2 wait state */


    FLASH_SetLatency(FLASH_Latency_2);


 


 


    // PLLCLK = 8MHz * 9 = 72 MHz


    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //4、设置PLL                          


 


    // Enable PLL


    RCC_PLLCmd(ENABLE); //5、打开PLL


 


    // Select PLL as system clock source   72M //6、设置系统时钟


    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);


 


    //HCLK = SYSCLK  AHB   72M //7、设置AHB时钟


    RCC_HCLKConfig(RCC_SYSCLK_Div1);


 


    // PCLK1 = HCLK/2 APB1   36M


    RCC_PCLK1Config(RCC_HCLK_Div2); //8、设置低速速AHB时钟


    


    // PCLK2 = HCLK APB2   72M


    RCC_PCLK2Config(RCC_HCLK_Div1); //9、设置高速速AHB时钟


 


/* ADCCLK = PCLK2/4 */


    RCC_ADCCLKConfig(RCC_PCLK2_Div4);


 


    // Wait till PLL is ready


    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //10、等待PLL工作


 


    // Wait till PLL is used as system clock source


    while (RCC_GetSYSCLKSource() != 0x08); //11、判断是否PLL是系统时钟


return;


  }  


  #endif


  


  /*-----------------------------------


  内部HSI时钟选择


  ------------------------------------- */


    RCC_HSICmd(ENABLE);


   


    // 8M/2*9=36M


 


    RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_9);


 


    // HCLK = SYSCLK AHB   36M


    RCC_HCLKConfig(RCC_SYSCLK_Div1);


 


    // PCLK1 = HCLK/2 APB1 36M


    RCC_PCLK1Config(RCC_HCLK_Div1);


    


    // PCLK2 = HCLK  APB2 36M


    RCC_PCLK2Config(RCC_HCLK_Div1);      


 


// Enable PLL


    RCC_PLLCmd(ENABLE);


 


// Wait till PLL is ready


    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);


    


// Select PLL as system clock source


    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);


 


     // Wait till PLL is used as system clock source


    while (RCC_GetSYSCLKSource() != 0x08);   


 


RCC_GetClocksFreq(&RCC_ClockFreq);//查看频率值


}


推荐阅读

史海拾趣

成都振芯/国腾(CORPRO)公司的发展小趣事

2003年,成都国腾微电子有限公司(后更名为成都振芯科技股份有限公司)正式成立,标志着CORPRO的起点。公司由成都国腾电子集团投资设立,创始人团队汇聚了来自中国物资储运集团、电子科技大学等单位的精英。在成立之初,CORPRO就致力于集成电路、微波组件及相关电子器件的设计、开发与销售,奠定了其在电子行业的基础。

AB Connectors Ltd公司的发展小趣事

随着全球环保意识的不断提高,AB Connectors Ltd积极响应国家绿色发展的号召,将环保理念融入到企业的生产经营中。公司采用环保材料和生产工艺,减少了对环境的污染。同时,公司还加强了对废弃物的处理和回收利用,实现了资源的循环利用。这些举措不仅提升了公司的社会形象,还为公司的可持续发展奠定了坚实基础。

以上五个故事基于电子行业的一般发展情况和公司可能面临的挑战与机遇进行了虚构,旨在展示AB Connectors Ltd在发展过程中可能经历的重要阶段和取得的成就。请注意,这些故事并非基于真实事件,仅用于说明目的。

ESS [ESS Technology,Inc]公司的发展小趣事

ESS科技公司的创始人在1984年创建了这家位于美国加利福尼亚州的公司,起初专注于将音响压缩重建技术应用于电子音响图书和问候卡。然而,随着个人电脑的普及和多媒体市场的快速增长,ESS决定调整战略,全力发展个人电脑音频技术。1993年,ESS推出了其首批PC音频半导体产品ES488,这是一个12位的单声道音质硅片。随后,ESS不断推出新产品,如ES688,一个16位立体音质硅片,这些产品为ESS带来了可观的收益。1995年,ESS成功在美国纳斯达克上市,标志着公司进入了一个全新的发展阶段。

台湾肯尼威(CANNYWELL)公司的发展小趣事

面对不断变化的市场需求和技术环境,肯尼威始终坚持以创新为引领。公司不断投入研发资源,推出了一系列具有创新性的产品。例如,针对特殊需求的客户,公司推出了定制化的电源滤波器解决方案;同时,还开发了新型的三相电源滤波器等产品,满足了市场的多样化需求。这些创新不仅提升了公司的技术实力,也为公司赢得了更多的市场份额。

CalRamic Technologies Llc公司的发展小趣事

在巩固了国内市场地位后,CalRamic Technologies开始将目光投向国际市场。公司积极参加各类国际电子元器件展览会,与多家国际知名企业建立了合作关系。通过与国际大厂的深入交流,公司不仅拓宽了销售渠道,还引进了国际先进的生产技术和管理经验,进一步提升了自身的竞争力。

广州奥松公司的发展小趣事

奥松电子自成立以来,一直致力于MEMS特色半导体芯片的研发与生产。公司凭借其国内领先的生产线技术,成功打造了一条高效、稳定的芯片生产线。这不仅提升了公司的生产效率,也为公司在电子行业中树立了良好的口碑。随着技术的不断进步,奥松电子的芯片性能也得到了显著提升,满足了市场对于高质量、高性能芯片的需求。

问答坊 | AI 解惑

在解调中有关载波恢复的疑问?请教

在载波恢复中,根据DD、RC-DD、极性判决的算法得到的结果是相位,为什么在论文上都是通过环路滤波后得到频率差的曲线?似乎DD、RC-DD、极性判决的算法似乎可以鉴频,可是算法出来的结果确是相位呢?…

查看全部问答>

人造闪电

52岁的澳洲男子彼得·特伦是位业余科学家,他最大的爱好便是制作出形形色色令人眩目标“人造闪电”,最高电压可达50万伏!这些精彩绝伦的实验包含,闪电束穿过篮球架和梯子、旋转火花包围汽车、头顶闪电笼中信步,等等。据悉,特伦“触电”已有40个 ...…

查看全部问答>

“低碳”理念,“绿色”电源——电源大鳄之一“TI”之见

更注重安全 一系列安全事故的发生,例如Sony电芯在Dell的笔记本上起火,知名手机厂商的手机电池相继爆炸等,中国政府发布了手机充电器强制性的法令。在半导体行业TI等相继发布侧重充电安全的保护芯片bq24316等,同时大幅提高了充电管理芯片的耐 ...…

查看全部问答>

tektronix泰克TDS 320 示波器中文使用说明

谁有tektronix泰克TDS 320 示波器中文使用说明啊,或者告诉我哪有下载?最近要用这个仪器,可我根本不会用啊,请大家帮帮我,在goole上也没搜到…

查看全部问答>

中国gprs业务,有提供 公网IP的吗???

如果不提供,如何在internet上找到它??…

查看全部问答>

evc工程怎样设定可以修改其SDK环境

原有工程是选择ARM,怎样修改成X86,谢谢!…

查看全部问答>

STM8S各位看看这是怎么回事

程序加入数组_1BitFont 时,编译出现: #error clnk debug\\vl135.lkf:61 debug\\osd.o: symbol _1BitFont multiply defined (debug\\main.o)…

查看全部问答>

电压转换

MSP430F1611芯片内部集成的ADC12模块测量电源正极电平值,并通过将所测电平值与参考电平进行比较,得到转换数据NADC,最后电源的电压Vin可以由下式得出: NADC=(Vin-VR-)*4095/(VR+-VR-) 式中:VR+为参考电压正极,VR-为参考电压负极,Vin为AD ...…

查看全部问答>

【 信号处理】FPGA在高速数字信号处理系统中的应用

由于成本、系统功耗和面市时间等原因,许多通讯、视频和图像系统已无法简单地用现有DSP处理器来实现,现场可编程门阵列(FPGA)尤其适合于乘法和累加(MAC)等重复性的DSP任务。本文从FPGA与专用DSP器件的运算速度和器件资源的比较入手,介绍FPGA在复数 ...…

查看全部问答>

FPGA你必须知道的那些事儿 (转)

1、不熟悉FPGA的内部结构,不了解可编程逻辑器件的基本原理。              FPGA为什么是可以编程的?恐怕很多菜鸟不知道,他们也不想知道。因为他们觉得这是无关紧要的。他们潜意识的认为可编 ...…

查看全部问答>