STM32F4时钟配置库函数详解
在STM32中,所有的应用都是基于时钟,所以时钟的配置就尤为重要了,而不能仅仅只知道使用默认时钟。

STM32F4的时钟树如上图所示,HSE为外部接入的一个8M的时钟,然后再给PLL提供输入时钟,经过分频倍频后产生PLLCLK时钟,为SYSCLK提供基础时钟来源。
配置的步骤:
- 将RCC寄存器重新设置为默认值
- 打开外部高速时钟晶振HSE
- 等待HSE时钟晶振工作
- 设置AHB时钟也就是HCLK时钟
- 设置高速APB1时钟也就是PCLK1
- 设置低速APB2时钟也就是PCLK2
- 设置PLL
- 打开PLL
- 等待PLL工作
- 设置系统时钟
- 判断系统时钟是否为PLL时钟
重点设置为PLL的配置:
void RCC_PLLConfig( uint32_t RCC_PLLSource,
uint32_t PLLM,
uint32_t PLLN,
uint32_t PLLP,
uint32_t PLLQ)
RCC_PLLSource为选择的输入时钟源,在这里为HSE
PLLM:VCO输入时钟分频因子,取值2-63 经分频后输入时钟范围要在1-2M内
PLLN:VCO输出时钟倍频因子,取值192-432经倍频后输出时钟范围要在192-432
PLLP:SYSCLK时钟分频因子,取值2、4、6、8
PLLQ:OTG、FS、SDIO、RNG时钟分频因子,取值4-15,分频后最高48M
PLL_VCO输出时钟 = (RCC_PLLSource/PLLM)*PLLN
SYSCLK = ((RCC_PLLSource/PLLM)*PLLN)/PLLP
OTG、FS、SDIO、RNG Clock = ((RCC_PLLSource/PLLM)*PLLN)/PLLN
所以要将系统时钟配置成120M则应设置参数(RCC_PLLSource_HSE,8,240,2,2);
在这里RCC_PLLConfig (RCC_PLLSource_HSE,8,240,2,2);
SYSClock = 8/8*240/2 = 120M
void RCC_ClockConfig(void)
{
RCC_DeInit();
RCC_HSEConfig( RCC_HSE_ON ); if(SUCCESS == RCC_WaitForHSEStartUp())
{
RCC_HCLKConfig (RCC_SYSCLK_Div1);
RCC_PCLK1Config (RCC_HCLK_Div1);
RCC_PCLK2Config (RCC_HCLK_Div1);
RCC_PLLConfig (RCC_PLLSource_HSE,,,,);
//SYSClock = 8/8*240/2 = 120M RCC_PLLCmd(ENABLE); while(RCC_GetFlagStatus ( RCC_FLAG_PLLRDY) == RESET )
{ } RCC_SYSCLKConfig ( RCC_SYSCLKSource_PLLCLK ); while(RCC_GetSYSCLKSource() != 0x08)
{ } } }
时钟信号可由PA8和PC9引脚输出查看。
STM32F4时钟配置库函数详解的更多相关文章
- STM32时钟配置方法详解
一.在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. ①HSI是高速内部时钟,RC振荡器,频率为8MHz. ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源, ...
- Spartan6系列之芯片配置模式详解
1. 配置概述 Spartan6系列FPGA通过把应用程序数据导入芯片内部存储器完成芯片的配置.Spart-6 FPGA可以自己从外部非易失性存储器导入编程数据,或者通过外界的微处理器.DSP等对 ...
- ASP.NET Core的配置(2):配置模型详解
在上面一章我们以实例演示的方式介绍了几种读取配置的几种方式,其中涉及到三个重要的对象,它们分别是承载结构化配置信息的Configuration,提供原始配置源数据的ConfigurationProvi ...
- mha配置参数详解
mha配置参数详解: 参数名字 是否必须 参数作用域 默认值 示例 hostname Yes Local Only - hostname=mysql_server1, hostname=192.168 ...
- Cocos2d-x win7 + vs2010 配置图文详解
Cocos2d-x win7 + vs2010 配置图文详解 下载最新版的cocos2d-x.打开浏览器,输入cocos2d-x.org,然后选择Download,本教程写作时最新版本为cocos2d ...
- CentOS7下Firewall防火墙配置用法详解
官方文档地址: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide ...
- Python安装、配置图文详解(转载)
Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(I ...
- Oracle 11g客户端在Linux系统上的配置步骤详解
Oracle 11g客户端在Linux系统上的配置步骤详解 2011-07-26 10:47 newhappy2008 CSDN博客 字号:T | T 本文我们主要介绍了Oracle 11g客户端在L ...
- 【和我一起学python吧】Python安装、配置图文详解
Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境( ...
随机推荐
- FileUpload控件实现单按钮图片自动上传并带预览显示
FileUpload控件实现单按钮图片自动上传并带预览显示 1.实现原理: FileUpload控件默认不支持服务端的ONCHANGE事件,此时用一种变通的方法借用客户端的onchange事件,调 ...
- springmvc使用包装的pojo接收商品信息的查询条件
1.包装对象定义如下: 定义Items对象,并对其定义set和get方法. public class QueryVo { private Items items; public Items getIt ...
- illumina SBS测序详解
illumina SBS测序详解 2018年01月02日 09:33:56 sixu_9days 阅读数:9789 标签: 生物信息学二代测序 更多 个人分类: 测序原理 最近回头重新看了illl ...
- 【JDBC&Dbutils】JDBC&JDBC连接池&DBUtils使用方法(重要)
-----------------------JDBC---------- 0. db.properties文件 driver=com.mysql.jdbc.Driver url=jdbc: ...
- 2018.09.25 bzoj2286: [Sdoi2011]消耗战(虚树+树形dp)
传送门 又一道虚树入门题. 这个dp更简单啊. 直接记录每个点到1的距离,简单转移就行了. 代码: #include<bits/stdc++.h> #define N 250005 #de ...
- 2018.07.17 牛奶模式Milk Patterns(二分+hash)
传送门 一道简单的字符串.这里收集了几种经典做法: SAM,不想写. 后缀数组+二分,不想写 后缀数组+单调队列,不想写 hash+二分,for循哈希,天下无敌!于是妥妥的hash 代码如下: #in ...
- csdn的一次回答问题
#coding:utf8 import tushare as ts import pandas as pd import numpy as np import pymysql,datetime imp ...
- 如何使用Java执行cmd命令
用JAVA代码实现执行CMD命令的方法! Runtime rt = Runtime.getRuntime(); Process p = rt.exec(String[] cmdarray); ...
- day8 异常处理
异常和错误 part1:程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) 2.逻辑错误(逻辑错误) part2:什么是异常 ...
- 201709012工作日记--Android消息机制
1. android的消息机制——Handler机制 参考:http://www.jianshu.com/p/9e4d1fab0f36. Android异步消息处理机制完全解析,带你从源码的角度理解: ...