采用8MHz 外部HSE 时钟,程序的时钟设置参数流程如下:

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

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

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

4.设置 AHB 时钟 (HCLK) :RCC_HCLKConfig(RCC_SYSCLK_Div1);

5.设置APB 2时钟 (APB2) :RCC_PCLK2Config(RCC_HCLK_Div1);

6.设置APB1 时钟 (APB1) :RCC_PCLK1Config(RCC_HCLK_Div2);

7.设置 PLL :RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

8.打开 PLL :RCC_PLLCmd(ENABLE);

9.等待 PLL 工作:while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

10.设置系统时钟:RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

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

void RCC_config()

{

ErrorStatus HSEStartUpStatus; // 定义错误状态变量

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

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

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

if(HSEStartUpStatus == SUCCESS)

{

RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置AHB不分频,HCLK=SYSCLK

RCC_PCLK2Config(RCC_HCLK_Div1);//设置APB2不分频,P2CLK=HCLK

RCC_PCLK1Config(RCC_HCLK_Div2); //设置APB1 为2分频,P1CLK=HCLK/2

FLASH_SetLatency(FLASH_Latency_2);//设置FLASH代码延时

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能预取指缓存

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);//设置PLL时钟源,为HSE的9倍频8MHz * 9 = 72MHz

RCC_PLLCmd(ENABLE);//使能PLL

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);//等待PLL准备就绪

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//设置PLL为系统时钟源

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

}

}

STM32之RCC配置相关推荐

  1. [ZZ]STM32之RCC

    原地址:http://blog.csdn.net/marike1314/archive/2010/06/16/5673522.aspx STM32 RCC复位与时钟配置,我首先忽略掉复位,首先学习时钟 ...

  2. STM32 HAL RTC配置及优化

    STM32 HAL RTC配置及优化 STM32内部的RTC实时时钟模块,可以配置实现日历和时间的运转,并在外部备用电池的辅助下,可以在主电源关闭的情况下保持运行,且RTC备份寄存器也可以在电池供电状 ...

  3. 第一章 stm32 cubemx基础配置实验以及proteus 8的使用

    第一章 stm32 cubemx基础配置实验以及proteus 8的使用 文章目录 第一章 stm32 cubemx基础配置实验以及proteus 8的使用 前言 一.STM32 Cubemx基础配置 ...

  4. STM32F103ZET6的时钟系统RCC配置

    家人们,今天分析了一下手头ZET6开发板的时钟配置过程,记录一下下: 根据正点原子的<库函数开发指南>,时钟系统可以用时钟树来表示: 一共有HSE(高速外部时钟4-16M,正点原子开发板是 ...

  5. STM32 BOOT 引脚配置

    STM32 BOOT 引脚配置 在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式: BOOT1=x BOOT0=0 从用户闪存启动,芯片内置的Flash,这是正常的工作模 ...

  6. STM32 BOOT模式配置以及作用

    一.三种BOOT模式介绍 所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存.用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启 ...

  7. STM32 GPIO的配置寄存器(CRL、CRH)输入输出模式配置

    STM32 GPIO的配置寄存器(CRL.CRH)输入输出模式配置 1.学会使用寄存器设定所需IO的方向,学会配置CRL.CRH 2.理解如下代码的含义 //IO方向设置 #define DS18B2 ...

  8. STM32 GPIO的配置寄存器(CRL、CRH)快速学习

    1.问题 在使用STM32的时候配置GPIO是最常见的操作,可以使用比较简单明白的库函数配置,但很繁杂.使用寄存器的方式可以快速配置,对于同一个IO口的输入输出都需要使用到的时候,比如IIC通讯的SD ...

  9. stm32定时器中断配置及使用

    stm32定时器中断配置及使用 定时器中断就是:可以周期性的执行某些功能,而不受main函数的影响. 我们以通用定时器time3为例说明 1.首先配置时钟源为内部时钟,分频和充装载值根据自己需要填入, ...

最新文章

  1. gdoi2017总结
  2. 干货回顾丨机器学习笔记-----AP(affinity propagat)算法讲解及matlab实现
  3. 【转】Unity游戏开发图片纹理压缩方案
  4. Linux内存映射--mmap函数
  5. c++ vector 先进先出_C++ STL Vector(容器)学习
  6. VMware虚拟机安装红帽系统无法上网解决办法(转)
  7. 【鸿蒙 HarmonyOS】Ability 中使用纯代码绘制布局及 UI 组件
  8. 计算机视觉算法——目标检测网络总结
  9. java telnet乱码_telnet乱码的解决方法
  10. python log文件如何不写入syslog_Centos下python 对syslog重写进行日志记录
  11. 强大的独立日期选择器(date picker)插件 - Kalendae
  12. matlab机械手ikine函数,关于Mtalab-robotics工具箱中的fkine和ikine两个函数的问题讨论!...
  13. DBShop电子商务系统
  14. SQL Server 空间监测
  15. python 运行时 变量_python运行过程,变量,符号
  16. OpenGL简介+一个简单的程序
  17. unity场景素材_[游戏素材]游戏场景环境天气变化Unity游戏素材资源
  18. whereis命令详解
  19. Python 文字转语音(TTS)
  20. 影响力最大化 模拟爆发(粗糙笔记)

热门文章

  1. VS工作笔记-C++在release模式下可以进行调试
  2. c语言编译器app官网下载,c语言编译器
  3. php 在字符串中 找数字,php提取字符串中的数字
  4. 服务端api用php写还是用node,如何使用node搭建服务器,写接口,调接口,跨域
  5. python命令行输入函数回退_Anaconda--成功解决python2与python3之间随意切换的问题!...
  6. qq头像计算机系,QQ头像
  7. c/c++ 求字符数组长度(非所占内存大小)
  8. [Python]网络爬虫(11):亮剑!爬虫框架小抓抓Scrapy闪亮登场!
  9. c++程序设计中文件输入输出流知识点
  10. socket epoll网络编程实例