STM32如何使用内部时钟源当系统时钟

发布者:chwwdch最新更新时间:2017-09-29 来源: eefocus关键字:STM32  内部时钟源  系统时钟 手机看文章 扫描二维码
随时随地手机看文章

由于最近老师让做一个项目,要用到STM32但是考虑成本问题,决定不用外部时钟,所以在网上搜集整理了一些资料,加上自己的一些想法。

参考资料:

http://bbs.ednchina.com/BLOG_ARTICLE_3011869.HTM

http://bbs.21ic.com/icview-587714-1-1.html



首先在主程序中注释掉SystemInit();

然后使用下面的函数做为系统时钟的初始化函数


  1. void RCC_Configuration(void)  

  2. {  

  3.     RCC_DeInit();//将外设 RCC寄存器重设为缺省值  

  4.   

  5.     RCC_HSICmd(ENABLE);//使能HSI    

  6.     while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//等待HSI使能成功  

  7.   

  8.     //FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  

  9.     //FLASH_SetLatency(FLASH_Latency_2);  

  10.      

  11.     RCC_HCLKConfig(RCC_SYSCLK_Div1);     

  12.     RCC_PCLK1Config(RCC_HCLK_Div2);  

  13.     RCC_PCLK2Config(RCC_HCLK_Div1);  

  14.       

  15.     //设置 PLL 时钟源及倍频系数  

  16.     RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_2);//使能或者失能 PLL,这个参数可以取:ENABLE或者DISABLE   

  17.     RCC_PLLCmd(ENABLE);//如果PLL被用于系统时钟,那么它不能被失能  

  18.     //等待指定的 RCC 标志位设置成功 等待PLL初始化成功  

  19.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  

  20.   

  21.     //设置系统时钟(SYSCLK) 设置PLL为系统时钟源  

  22.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//选择想要的系统时钟   

  23.     //等待PLL成功用作于系统时钟的时钟源  

  24.     //  0x00:HSI 作为系统时钟   

  25.     //  0x04:HSE作为系统时钟   

  26.     //  0x08:PLL作为系统时钟    

  27.     while(RCC_GetSYSCLKSource() != 0x08);//需与被选择的系统时钟对应起来,RCC_SYSCLKSource_PLL  

  28.   

  29.   

  30. }  



补充一点:

由图可以看出系统时钟的供给可以有3种方式,HSI,HSE,PLL。如果选用内部时钟作为系统时钟,其倍频达不到72Mhz,最多也就8Mhz/2*16 = 64Mhz。


关键字:STM32  内部时钟源  系统时钟 引用地址:STM32如何使用内部时钟源当系统时钟

上一篇:STM32F4如何设置系统时钟
下一篇:STM32如何定义变量到FLASH ROM中

推荐阅读最新更新时间:2024-03-16 15:39

STM32学习笔记---IWDG独立看门狗实验
继做了WWDG窗口看门狗实验后,继续进行第9个实验-IWDG独立看门狗实验,本实验通过设置窗口看门狗IWDG间断时间来定期的检查是否出错,在SysTick_Handler中断函数中加入了流水灯用来测试是否运行了IDWG看门狗程序,用PD6-LED2通过闪烁验证程序可行性,编程工程大致和USART实验过程差不多,先是开启系统时钟,然后GPIO端口时钟,然后复用功能时钟AFIO,然后各个模块用的的时钟,,呵呵,之后进入各个模块初始化,设置,编写子程序,中断的话,要在中断函数中填写某模块的中断触发处理函数,重要的是在CONFG.H函数中开启模块的声明,差不多是这样的了。 以下为IWDG函数主要部分: //IWDG窗口看门狗设置初始化 v
[单片机]
<font color='red'>STM32</font>学习笔记---IWDG独立看门狗实验
基于STM32的SNTP授时服务器的研究与设计
0 引言 随着信息技术和网络技术的飞速发展,网络互连已经渗透到国民经济的各行各业。而网络时间同步也越来越受到重视,特别是局域网时间同步在国家安全和国民经济的诸多领域(如国防军工、电信网、金融业、交通运输、电子商务和电力系统等部门)越发不可或缺。随着嵌入式技术的发展,嵌入式与网络时间同步技术的结合,无疑具有良好的发展前景。 1 方案设计 目前网络授时的实现方法有很多种,本文采用自行设计的嵌入式系统并在上面实现SNTP协议。从而完成网络时间的同步。其系统框图如图l所示。 本系统采用C/S模型,分为网络授时同步服务器和客户端两大部分,本文主要对网络授时服务器部分进行研究。 在网络授时同步服务器中,处理器STM32
[嵌入式]
STM32-(09):USART库函数方式编程
STM32库函数 STM32库是由ST公司针对STM32提供的函数接口,即API(Application Program Interface),开发者可调用这些函数接口来配置STM32 的寄存器,使开发人员得以脱离最底层的寄存器操作,有开发快速,易于阅读,维护成本低等特点。 当我们调用库的API的时候可以不用挖空心思去了解库底层的寄存器操作,就像当年我们学习C语言的时候,用Printf()函数时只是学习它的使用格式,并没有去研究它的源码实现,如非必要,可以说是老死不相往来。 库是假设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的配置,向上为用户提供配置寄存器的接口。 CMSIS 标准 因为基于Cortex的
[单片机]
STM32-(09):USART库函数方式编程
JFlash ARM对stm32程序的读取和烧录
本篇文章主要是记录一下JFlash ARM 的相关使用和操作步骤,读取程序说不上破解,这只是在没有任何加密情况下对Flash的读写罢了! 在我们装了JLINK驱动后再根目录下找到JFlash ARM ,运行。 读取Flash程序: 第一步:Option-- Project Settings-- CPU下选择 Device 在下拉菜单中找到自己的芯片型号后点击确定。 第二步:Targect-- Connect链接JLINK ;Targect-- Read back-- Entrie chip读取整个Flash区域, 接下来就等待读取完成了。 第三部:File-- Save file as 选择要储
[单片机]
JFlash ARM对<font color='red'>stm32</font>程序的读取和烧录
学习STM32单片机之结构体思想
学习内容: 1.我们在操作寄存器的时候,操作的是寄存器的绝对地址,如果每个寄存器都这样操作,那将非常麻烦。 2.我们考虑到外设寄存器的地址都是基于外设基地址的偏移地址,都是在外设基地址上逐个连续递增的,每个寄存器占32 个或者16 个字节,这种方式跟结构体里面的成员类似。 3.定义一种外设结构体,结构体的地址等于外设的基地址,结构体的成员等于寄存器,成员的排列顺序跟寄存器的顺序一样。这样我们操作寄存器的时候就不用每次都找到绝对地址,只要知道外设的基地址就可以操作外设的全部寄存器,即操作结构体的成员即可。 下面先定义一个GPIO 寄存器结构体,结构体里面的成员是GPIO 的寄存器,成员的顺序按照寄存器的偏移地址从低到高排
[单片机]
STM32时钟控制RCC探究
RTC是STM32单片机的脉搏,是单片机的驱动源。使用任何一个外设都必须打开相应的时钟。这样的好处就是,如果不使用一个外设的时候,就把它的时钟关掉,从而可以降低系统的功耗,达到节能,实现低功耗的效果。 STM32单片机的时钟可以由以下3个时钟源提供: 1、HSI:高速内部时钟信号(high speed clock internal)stm32单片机内带的时钟(8M频率)精度较差 2、HSE:高速外部时钟信号(high speed clock external)精度高来源(1)HSE外部晶体/陶瓷谐振器(晶振) (2)HSE用户外部时钟 3、LSE:低速外部晶体(low speed external)32.768kH
[单片机]
STM32 输入捕获的脉冲宽度及频率计算
输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。以下是对脉冲宽度及频率的计算。 1、脉冲宽度 如下图所示,采集该高电平脉冲的宽度,只需要进入输入捕获上升沿检测,记录当前的发生上升沿时的CNT值,再进行输入捕获下降沿检测,也记录当前发生下降沿时的CNT值,两次CNT值的差值再根据计数的频率就可以算出脉冲的宽度。 上升沿及下降沿捕获的程序具体实现如下: TIM8_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数 void TIM8_UP_IRQHandler(void) { if((TIM8CH4_CAPTURE_
[单片机]
<font color='red'>STM32</font> 输入捕获的脉冲宽度及频率计算
双输入时钟发生器提高网络连接和数据通信应用中系统的稳定性
-AD9549提供了延长的保持(holdover)功能和抖动清除功能,以提高系统的稳定性和最大限度保证网络的正常运行时间。 AD9549简介 美国模拟器件公司的AD9549双输入网络时钟发生器为网络和数据通信方面的设计者提供了一种新的性能标准,以最大限度延长网络正常运行时间并提高系统的稳定性和可靠性。AD9549采用了一种基于美国模拟器件公司专有的DDS(直接数字合成)技术的新架构设计,可以实现更为稳定的保持(holdover),能让设计者有更多的时间来实现故障停机时的时钟基准恢复。如果一路输入基准时钟失效,则时钟发生器IC可以继续“保持”输出的频率,直到基准方面的故障被恢复为止。 采用AD9549后,实现保持的时间长短没
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved