STM32:外部晶振时钟配置

发布者:Mingyue1314最新更新时间:2018-06-26 来源: eefocus关键字:STM32  外部晶振  时钟配置 手机看文章 扫描二维码
随时随地手机看文章

void SystemClock_Config(void)  

{  

    RCC_DeInit();  

    RCC_HSEConfig(RCC_HSE_ON); //INPUT HSE = 24M      

    ErrorStatus HSEStartUpStatus = RCC_WaitForHSEStartUp();  

    if(HSEStartUpStatus == SUCCESS)   

    {  

        FLASH_PrefetchBufferCmd(ENABLE);    //M0 defined   

        FLASH_SetLatency(FLASH_Latency_1);  //M0 defined   

        RCC_PREDIV1Config(RCC_PREDIV1_Div1);  

        RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_2);   //PLL CLK = HSE *RCC_PLLSource_PREDIV1*2 = 48M    

        RCC_PLLCmd(ENABLE);                                   //enable PLL CLK        

        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)    //WAIT PLL CLK ready   

        {  

        }  

        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //SELECT SYSCLK = PLLCLK =48M  

        // *           - 0x00: HSI used as system clock  

        // *           - 0x04: HSE used as system clock    

        // *           - 0x08: PLL used as system clock  

        // *           - 0x0C: HSI48 used as system clock, applicable only for STM32F072 devices    

        while(RCC_GetSYSCLKSource()!=0x08)  

        {  

        }  

        RCC_HCLKConfig(RCC_SYSCLK_Div1); //AHB CLK(HCLK) = SYS CLK = 48M  

        RCC_PCLKConfig(RCC_HCLK_Div1);   //APB CLK(PCLK) = HCLK = 48M  

        RCC_USARTCLKConfig(RCC_USART1CLK_PCLK);  // UART2 CLK = 48M  

        RCC_USARTCLKConfig(RCC_USART2CLK_PCLK);  // UART2 CLK = 48M  

        RCC_I2CCLKConfig(RCC_I2C1CLK_SYSCLK);    // I2C CLK =48M  

        RCC_USBCLKConfig(RCC_USBCLK_PLLCLK);     // USB CLK = 48M  

    }  

}  


关键字:STM32  外部晶振  时钟配置 引用地址:STM32:外部晶振时钟配置

上一篇:STM32F0的UART选择HSI作为时钟源
下一篇:stm32f051精确延时的实现

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

STM32单片机的外部时钟晶振该如何选择频率
芯片的主晶振频率范围一般来说在数据手册(Datasheet)和技术参考手册(Technical Reference Manual)中都有介绍。 你提到的时钟先分频再倍频,这个需要深入到STM32的内部去一探究竟了,在其技术参考手册的第7.2节Clocks的一开始有一个表格,时钟树(Figure 8. Clock tree),它完全地列出来STM32这个芯片内部各个模块的时钟来源以及相关的从属关系。 在这个图的正中央,有一个核心时钟:SYSCLK,它最大频率是72MHz,它的时钟信号通过选择器SW可以由PLLCLK提供(也可由HIS、HSE提供)。 PLL,毫无疑问,它是用来倍频的,可以*2,*3,*4……*16,它的时
[单片机]
<font color='red'>STM32</font>单片机的<font color='red'>外部</font><font color='red'>时钟</font><font color='red'>晶振</font>该如何选择频率
基于STM32、ESP32,钢铁侠打造机械臂设计
一直是稚晖君很感兴趣的一个方向,而在中他认为最实用的非臂莫属。正巧,半年前稚晖君偶然淘到了一台二手机械臂,这让他有些激动。然而,喜悦之情还没持续多久,稚晖君就有些不开心了:在他花了一些时间将这台机械臂研究透彻,并自己开发了一套 K 后,感到了一点不妙:“这个手子不太行啊”。 稚晖君表示,目前市面上的机械臂都不够酷,因此决定要自己造一台很酷的机械臂,并将其取名为 Dummy(取自钢铁侠中一只名为 Dummy 的机械臂)。为此他总结了一份架构设计图(由于该图较长,中为滚动呈现,因此本文仅截取部分): 准备 既然是要设计一台机械臂,那就需要从硬件开始准备,毕竟无论软件再重要,也需要一个优质的载体才
[机器人]
STM32驱动多个超声波模块(只用一个定时器)
用STM32单片机成功驱动一个超声波模块后,接下来便有了疑问如何用stm32单片机驱动多个超声波模块呢?(驱动一个超声波模块可以参考:stm32驱动超声波模块测距) 超声波模块型号为HC-SR04,模块驱动方式选择利用外部中断的方式驱动(具体细节可参见上面链接)。 经过一个下午的思考实验发现了两种驱动多个超声波模块的方法: 分时测量 同时测量 1.分时测量: 通过类似于实现流水灯的方法,多个超声波模块依次测量并将测量结果依次输出。 优点:各个超声波模块测量过程中不会出现相互干扰的情况。 缺点:整体测量周期长,数据采样频率比较低。 这里有几个问题点需要注意: 一个超声波模块需要在测量完成后再开始下一个模块的测量 超声波模块在
[单片机]
STM32通用定时器的PWM
脉冲宽度调制(PWM),是英文 Pulse Width Modulation 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一般用来控制步进电机的速度等等。STM32的定时器除了TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出。 PWM输出模式 STM32的PWM输出有两种模式,模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的( 110 为模式1, 111 为模式2)。模式1和模式2的区别如下: 110:PWM模式1-在
[单片机]
stm32之ADC应用实例(单通道、多通道、基于DMA)
硬件:STM32F103VCT6 开发工具:Keil uVision4 下载调试工具:ARM仿真器 网上资料很多,这里做一个详细的整合。(也不是很详细,但很通俗)。 所用的芯片内嵌3个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道,2个内部通道。 3个:代表ADC1、ADC2、ADC3(下图是芯片固件库的截图) 12位:也叫ADC分辨率、采样精度。先来看看二进制的12位可表示0-4095个数,也就是说转换器通过采集转换所得到的最大值是4095,如:“111111111111”=4095,那么我们怎么通过转换器转换出来的值得到实际的电压值呢?如果我们要转换的电压范围是0v-3.3v的话,转换器就会把0v
[单片机]
<font color='red'>stm32</font>之ADC应用实例(单通道、多通道、基于DMA)
配置VS Code 开发STM32【宇宙&最强编辑器】
一.前言   自从看了稚晖君几期视频之后,感觉自己就对他的才华着了魔;稚晖君的大多数项目里边都在用STM32单片机,正好自己也在自学STM32单片机。从他的视频中看到,稚晖君开发STM32用的IDE居然不是Keil,而且界面也挺好看,后来去搜所发现稚晖君使用的CLion进行的开发,并且在稚晖君的知乎也有对CLion开发STM32环境进行配置的文章( 稚晖:配置CLion用于STM32开发【优雅の嵌入式开发】 )。于是,我也想着学一下使用CLion来开发STM32;当我下载好CLion准备大展身手的时候,忽然发现CLion是收费的,而且还是199刀一年;这让本就不富裕并且喜欢白嫖的我选择直接放弃。   后来,在B站、CSDN等平台忽
[单片机]
STM32仿真按键控制led灯源程序
刚学习 课上做的一个小实验 保存一下 在GPIOC口,分别接有一个开关K1和两个指示灯LED1和LED2。两个灯一亮一灭,每按一下开关,两个灯的亮灭状态翻。 单片机源程序如下: #include stm32f10x.h #include led.h #include key.h int main(void) { u8 key; LED_Init(); KEY_Init(); while(1){ key = KEY_Scan(); switch(key){ case WK_UP: LED1=!LED1, LED0=!LED0; break; }
[单片机]
<font color='red'>STM32</font>仿真按键控制led灯源程序
Stm32时钟分析
该分析材料大部分来自opendev论坛,我所做的只不过是加上一些自己的分析和整理,由于个人能力有限,纰漏之处在所难免,欢迎指正。 Stm32时钟结构图如下,( http://www.openedv.com/posts/list/302.htm ) 对上图的分析如下: 重要的时钟: PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系要弄清楚; 1、HSI:高速内部时钟信号 stm32单片机内带的时钟 (8M频率) 精度较差 2、HSE:高速外部时钟信号 精度高来源(1)HSE外部晶体/陶瓷谐振器(晶振) (2)HSE用户外部时钟 3、LSE:低
[单片机]
<font color='red'>Stm32</font><font color='red'>时钟</font>分析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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