STM32F103时钟配置流程

发布者:以泉换泉最新更新时间:2018-10-10 来源: eefocus关键字:STM32F103  时钟配置  流程 手机看文章 扫描二维码
随时随地手机看文章

前言:

一般情况下单片机的时钟配置是单片机程序中的第一步,也是很重要的一步。这时候我们需要考虑以下几个问题。

1.  系统时钟的时钟源用哪个。

2.  系统时钟频率要多少。

3.  每个模块的时钟频率要多少。

4.  如果外部时钟出了问题,这个时候时钟是怎么运行的。

 

下面就针对性的讲一讲STM32F103的时钟配置。

 

 

知识点:

1. 系统复位后,HSI振荡器被选为系统时钟。当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。

 

2. STM32F103的三个可以作为系统时钟的时钟源,分别是HSI、HSE、PLL。而PLL的时钟源是HSI/2(内部RC振荡器二分频)、HSE。

 

         3.如果使用HSI,系统时钟我们能达到的最大频率是64MHz,如果使用HSE,系统时钟最大频率是72MHz。

 

         4.APB时钟有低速PCLK1和高速PCLK2;PCLK1是从HCLK二分频得到的,最大36MHZ,根据上一条知识点如果是使用HSI,则最快是32MHz。

 

         5. PLL的设定需要在使能之前,一旦PLL使能后参数不可更改。

 

         6.附录是一些缩写的英文全称,也有一些补充的知识点。


 

步骤:

第一步     初始化时钟

         不管现在SYSCLK的时钟源是哪个,我们要更换时钟源。先RCC_DeInit();

 

第二步              打开时钟

内部高速时钟HSI           RCC_HSICmd(ENABLE);

外部高速时钟HSE          RCC_HSEConfig(RCC_HSE_ON);

 

第三步              等待时钟晶振工作

         HSI            While(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);

         HSE           While(RCC_GetFlagStatus(RCC_FLAG_HSERDY)== RESET);

 

第四步              设置AHB时钟HCLK

                                                                 RCC_HCLKConfig(RCC_SYSCLK_Div1);

分频系数自己设定,一般都是RCC_SYSCLK_Div1即不分频。

 

第五步              设置低速APB时钟

                                                                 RCC_PCLK1Config(RCC_HCLK_Div2);

 

第六步              设置高速APB时钟

                                                                 RCC_PCLK2Config(RCC_HCLK_Div1);

 

第七步              设置PLL                     如果不使用PLL,请略过此步骤

HSI                                                  RCC_PLLConfig(RCC_PLLSource_HSI_Div2 , RCC_PLLMul_16 );

         HSE                                                 RCC_PLLConfig(RCC_PLLSource_HSE_Div1 , RCC_PLLMul_9 );

 

第八步              打开PLL                     如果不使用PLL,请略过此步骤

                                                                 RCC_PLLCmd(ENABLE);

 

第九步              等待PLL工作          如果不使用PLL,请略过此步骤

                                                                 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

 

第十步              设置系统时钟

HSI                                                  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);

HSE                                                 RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);

         PLL                                                  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

第十一步         判断是否是设置的时钟

HSI                                                  while(RCC_GetSYSCLKSource() != 0x00);

HSE                                                 while(RCC_GetSYSCLKSource() != 0x04);

PLL                                                  while(RCC_GetSYSCLKSource() != 0x08);

 


 

附录:一些缩写的英文全称及中文翻译,帮助理解记忆。

IWDG       Independent Watchdog                                   独立看门狗

                  

RTC           Real Time Clock                                                      实时时钟

                   时钟源可以是LSI,或者LSE,再或者HSE的128分频。

LSI             Low Speed Internal                                                       内部低速时钟

                   RC振荡器,频率为40kHz。供IWDG使用,还能作为RTC的时钟源。

HSI            High Speed Internal                                             内部高速时钟

                   RC振荡器,频率为8MHz。

HSE           High Speed External                                             外部高速时钟

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

 

PLL            锁相环倍频输出

                   其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍, 

 

SYSCLK     System Colock                                                                 系统时钟

                  

AHB          AdvancedHigh performance Bus                   高级高性能总线

                   AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。

 

APB          Advanced Peripheral Bus                                  高级外围设备总线

                   APB主要用于外设模块(如ADC、USB、SPI、UART等)与AHB之间的连接。

 

HCLK         Advanced High performance Bus Clock                 高级高性能总线时钟

                   就是SYSCLK经过AHB Prescaler(预分频器)后得到的AHB的时钟。

 

PCLK         Peripheral Bus Clock                                            外围设备总线时钟                  

                   PCLK有两个,一个是低速的PCLK1,另一个是高速的PCLK2。

                   PCLK1是经过APB1 Prescaler后得到的APB1时钟。

PCLK2是经过APB2 Prescaler后得到的APB2时钟。

 

FCLK                   Free Runing Clock                                                  自由运行时钟

为供给CPU内核的时钟信号,CPU的主频就是指这个信号;1/FCLK就是CPU时钟周期。

为什么叫自由运行时钟呢?下面是别人家的讲解。

ARMJISHU注:FCLK 为处理器的自由振荡的处理器时钟,用来采样中断和为调试模块计时。在处理器休眠时,通过FCLK 保证可以采样到中断和跟踪休眠事件。 Cortex-M3内核的“自由运行时钟(free running clock)”FCLK。“自由”表现在它不来自系统时钟HCLK,因此在系统时钟停止时FCLK 也继续运行。FCLK和HCLK 互相同步。FCLK 是一个自由振荡的HCLK。FCLK 和HCLK 应该互相平衡,保证进入Cortex-M3 时的延迟相同。


关键字:STM32F103  时钟配置  流程 引用地址:STM32F103时钟配置流程

上一篇:STM32F103RC-SPI通信速率的问题
下一篇:STM32系统时钟的监控和切换

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

将步进电机与STM32F103C8板连接的教程
步进电机是无刷直流电机,可以小角度旋转,这些角度称为步进。一般步进电机使用200步完成360度旋转,意味着其每步旋转1.8度。步进电机用于许多需要精确旋转运动的设备,如机器人、天线、硬盘驱动器等。我们可以通过给出适当的说明将步进电机旋转到任何特定角度。主要有两种类型的步进电机可供选择,单极和双极。单极更容易操作、控制,也更容易获得。在本教程中,我们将步进电机与STM32F103C8(蓝色药丸)板连接。 所需材料 STM32F103C8 (蓝色药丸) 步进电机(28BYJ-48) ULN2003 集成电路 电位器 10k 面包板 跳线 步进电机 (28BYJ-48) 28BYJ-48 是一款单极步进电机,需要 5V 电源。电机具
[单片机]
将步进电机与<font color='red'>STM32F103</font>C8板连接的教程
基于ht1632c芯片的点阵驱动模块在STM32F103mini的应用
ht1632c点阵模块 STM32F103RC(mini) 杜邦线 工程代码:https://download.csdn.net/download/goolete/10922678 驱动代码:https://download.csdn.net/download/goolete/10922879 取模软件:https://download.csdn.net/download/goolete/10922876 (取模软件用之前必须破解,否则生成为乱码,破解文件在压缩包里) HT1632C点阵模块使用手册V1.0:https://download.csdn.net/download/goolete/10922
[单片机]
基于ht1632c芯片的点阵驱动模块在<font color='red'>STM32F103</font>mini的应用
基于STM32F103RB和CC1101的无线数传模块设计
本文设计了一种可工作在433.00-434.79MHz,中心频率为433.00MHz,输出功率可调的无线数传模块。模块采用STM32F103RB单片机和射频芯片CC1101设计,利用EDA软件ADS2008仿真优化了射频电路的输出匹配网络。最后对无线模块输出功率,通信距离等参数进行了测试和验证。 0 引言 随着近些年无线通信技术的发展,越来越多的无线技术开始涌现,GSM/GPRS、Wlan、Zigbee等,为了更方便人们生产生活,以及改变现有的无线频道变得越来越拥挤的现状,不同国家相继开通了一些用于免费的ISM频段,其中430M~510M的频段在中国最为常用。 本文选用ST公司生产的STM32F103RB作为主控芯片,T
[单片机]
基于<font color='red'>STM32F103</font>RB和CC1101的无线数传模块设计
机器人餐厅何时能实现全流程无人?
越来越多的传统企业不断在寻找与新型产业的结合点,而传统餐饮企业则面临着人力成本逐年增长、人员流动性大、服务人员流失等挑战。过去三十年,我国经济高增长依靠的是充足的劳动力供给和高储蓄率,但随着我国人口结构的改变,人口红利将慢慢减弱。   国家统计局资料显示,从2012年开始,我国的16-59岁劳动力人口开始不断降低,中国的刘易斯拐点已经显现。2014年的数据显示,中国超过65岁的老人已经达到1.37亿人,占总人口的10.1%,占世界老龄人口总数的五分之一。预计到2020年,我国老年人数量将达到2.43亿,占比将超过17.2%。老龄化的加速,不仅使我国的青年人口背负巨大的养老成本,而且也使得服务行业劳动力供给的减少,加上服务产业的快速
[嵌入式]
STM32F103C8T6的RC522 RFID模块调试程序
单片机源程序如下: #include usart.h #include stm32f10x_spi.h #include RC522.h #include delay.h #include string.h #include spi_driver.h #include stdio.h /****************************************************************************** 硬件连接 STM32F103C8T6 RC522模块 PA4(SPI1_NSS) SDA PA5(SPI1_SCK) S
[单片机]
<font color='red'>STM32F103</font>C8T6的RC522 RFID模块调试程序
STM32F103ZET6系统框图
【该芯片有两条 高速外设总线 (APB1、APB2),每条APB所支持的外设如上图所示】
[单片机]
<font color='red'>STM32F103</font>ZET6系统框图
STM8S 三种时钟源的配置HSE\HSI\LSI的配置
1. 关于HSE的时钟配置为主时钟 static void CLK_Config(void) { CLK_DeInit(); // 初始化 CLK_HSECmd(ENABLE); //使能HSE CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE, CLK_CURRENTCLOCKSTATE_DISABLE); //切换HSE 并关闭其他时钟 为自动模式 /*Enable CSS interrupt */ CLK_ITConfig(CLK_IT_CSSD, ENABLE); /* Enab
[单片机]
STM8S 三种<font color='red'>时钟</font>源的<font color='red'>配置</font>HSE\HSI\LSI的<font color='red'>配置</font>
数字滤波器的软件设计流程
引言 数字化、智能化和网络化是当代信息技术发展的大趋势,而数字化是智能化和网络化的基础,实际生活中遇到的信号多种多样,例如广播信号、电视信号等等。上述这些信号大部分是模拟信号,也有小部分是数字信号。模拟信号是自变量的连续函数,自变量可以是一维的,也可以是二维或多维的。数字滤波器技术是数字信号分析、处理技术的重要分支。无论是信号的获取、传输,还是信号的处理和交换都离不开滤波技术,它对信号安全可靠和有效灵活地传输是至关重要的。在所有的电子系统中,使用最多最复杂的要算数字滤波器了。 1 数字滤波器的设计原理 数字滤波器根据其冲击响应函数的时域特征,可分为两种,即无限长冲击响应(IIR)滤波器和有限长冲击响应(FIR)滤波器。
[电源管理]
数字滤波器的软件设计<font color='red'>流程</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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