一、使用HSE配置系统时钟的过程

1.开启HSE,并等待HSE稳定

__IO uint32_t HSEStartUpStatus = 0;
// 使能HSE,开启外部晶振
RCC_HSEConfig(RCC_HSE_ON);
//等待HSE启动稳定
HSEStatus = RCC_WaitForHSEStartUp();

注:在判断是否HSE启动的时候,不用函数RCC_GetFlagStatus()获取状态位来判断,是因为RCC_WaitForHSEStartUp()函数不仅包含了RCC_GetFlagStatus(),即要检测状态位,也要做超时处理HSE_STARTUP_TIMEOUT

2.设置AHB、APB2、APB1的预分频因子

// AHB预分频因子设置为1分频,HCLK = SYSCLK
RCC_HCLKConfig(RCC_SYSCLK_Div1); // APB2预分频因子设置为1分频,PCLK2 = HCLK
RCC_PCLK2Config(RCC_HCLK_Div1); // APB1预分频因子设置为1分频,PCLK1 = HCLK/2
RCC_PCLK1Config(RCC_HCLK_Div2);

3.设置PLL的时钟来源,和PLL倍频因子,开启PLL,等到PLL稳定

// 设置PLL的来源为HSE,PLL来源可以是HSE和HSI/2
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, pllmul);
// 使能PLL
RCC_PLLCmd(ENABLE);
// 等待PLL稳定while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}

4.将系统时钟SYSCLK来源设置为PLLCLK

// PLLCLK稳定之后,将PLL时钟设置为系统时钟,系统时钟可以来自于
// HSI,PLLCLK,HSE
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
// 读取时钟切换状态位,确保PLLCLK为系统时钟while (RCC_GetSYSCLKSource() != 0x08){}

二、代码

//pllmul = RCC_PLLMuL_10,设置系统为80MHz
void HSE_SetSysClock(uint32_t pllmul)
{__IO uint32_t  HSEStartUpStatus = 0;// 把RCC寄存器复位成复位值RCC_DeInit();// 使能HSE,开启外部晶振RCC_HSEConfig(RCC_HSE_ON);  //等待HSE启动稳定HSEStatus = RCC_WaitForHSEStartUp();if (HSEStartUpStatus == SUCCESS){// 使能FLASH 预存取缓冲区,这部分是在代码执行过程中,会//将代码一部分放入缓冲区FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);// 闪存访问时间设置为SYSCLK周期的2倍FLASH_SetLatency(FLASH_Latency_2);// AHB预分频因子设置为1分频,HCLK = SYSCLK RCC_HCLKConfig(RCC_SYSCLK_Div1); // APB2预分频因子设置为1分频,PCLK2 = HCLKRCC_PCLK2Config(RCC_HCLK_Div1); // APB1预分频因子设置为1分频,PCLK1 = HCLK/2 RCC_PCLK1Config(RCC_HCLK_Div2);// 设置PLL的来源为HSE,PLL来源可以是HSE和HSI/2RCC_PLLConfig(RCC_PLLSource_HSE_Div1, pllmul);// 使能PLLRCC_PLLCmd(ENABLE);// 等待PLL稳定while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}// PLLCLK稳定之后,将PLL时钟设置为系统时钟,系统时钟可以来自于// HSI,PLLCLK,HSERCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);// 读取时钟切换状态位,确保PLLCLK为系统时钟while (RCC_GetSYSCLKSource() != 0x08){}}else{// 如果HSE开启失败,那么程序就会来到这里,用户可在这里添加出错的代码处理// 当HSE开启失败或者故障的时候,单片机会自动把HSI设置为系统时钟,// HSI是内部的高速时钟,8MHZwhile (1){}}}

配置系统时钟(stm32)相关推荐

  1. STM32F1系列HAL库配置系统时钟

    STM32F1系列HAL库配置系统时钟 其实一开始对于时钟我也是知之甚少,在MSP432中我就一直忽视时钟配置,其实也是在STM32学习时落下的病根,现在趁有空补一下. 时钟简单讲解 对于时钟系统,在 ...

  2. stm32f107外设晶振8MHZ换成25MHZ 配置系统时钟72MHZ

    参考https://blog.csdn.net/ddffyhg/article/details/123015356 修改倍频参数

  3. STM32入门笔记(03):系统时钟控制 RCC (STM32CubeMx 初始化配置)

    目的/起源: B站@立邦大侠 的在视频里面提到,他用STM32CubeMx 更清晰地进行STM32系统时钟配置以及时钟架构. STM32 开发流程 : 芯片选型 - 原理图设计 - PCBlayout ...

  4. STM32系统时钟配置及时钟树

    参考资料:< STM32F4xx 中文参考手册> RCC 章节. STM32时钟可大致分为系统时钟和其它时钟两大类,总共包含5个时钟源 HSI(High Speed Internal Cl ...

  5. STM32使用内部时钟HSI作为系统时钟及配置Systick定时器

    参考:https://blog.csdn.net/huangyangquan/article/details/78790443 https://www.cnblogs.com/dustinzhu/p/ ...

  6. 如何设置STM32的系统时钟(SYSCLK)

    目录 1.STM32F407 的时钟来源 1.1.HSI 时钟 1.2.HSE 时钟 1.3.主 PLL 时钟 2.时钟树 3.配置系统时钟 3.1.系统时钟有关寄存器 3.2.使用系统的默认配置 3 ...

  7. STM32开发笔记48:STM32F4+DP83848以太网通信指南系列(二):系统时钟

    本章为系列指南第二章,主要是介绍一下STM32F4的时钟配置.时钟是一个嵌入式产品从零开始开发的基石,一切逻辑都在时钟的节奏中安静地弹奏着,时钟为整个电路带来了欢快的「心跳」.开发者如果对时钟没有控制 ...

  8. STM32系统时钟设置(标准库)

    1.STM32F407时钟树 2.系统时钟相关的结构 HSE高速外部时钟信号 锁相环PLL 锁相环的主要作用就是对时钟进行倍频,然后把时钟输出到各个功能部件.PLL有两个,一个主PLL,另一个是专用的 ...

  9. 【STM32】STM32标准库与HAL库对照学习教程特别篇--系统时钟RCC详讲

    [STM32]STM32标准库与HAL库对照学习教程特别篇--系统时钟RCC详讲 一.前言 二.时钟是什么 三.时钟树 1.时钟树图 2.时钟树讲解 左边部分 中间部分 右边部分 特殊部分 四.初始化 ...

最新文章

  1. 彻底搞懂Nginx的五大应用场景
  2. A标签的href设置为#代表什么意思?
  3. 现在的人工智能逆天到什么地步了?
  4. Canvas-图片旋转
  5. linux 网络 PING IP可以通,ping域名ping不通
  6. mysql主从之slave-skip-errors和sql_slave_skip_counter
  7. bzoj 3396: [Usaco2009 Jan]Total flow 水流(最大流)
  8. 【iOS开发】@property跟成员变量区别
  9. android uses-permission 配置详解
  10. 智能优化算法:晶体结构算法-附代码
  11. CSS display 常用属性小结
  12. Java私塾中级note
  13. Smart SVN客户端使用
  14. html文字边框颜色,css背景颜色/文字/边框 设置渐变色
  15. CentOS添加管理员账号
  16. 阿拉伯数字转大写金额(支持简体和繁体)
  17. 1449:【例题2】魔板
  18. 数列的操作 div2
  19. Windows10安装DM8-达梦数据库
  20. 解决办法 Field userService in com.sxsj.controller.RegistLoginController required a bean of type

热门文章

  1. mysql master host_MySQL5.5.28配置master-maser复制,master-host等参数不用了
  2. CPU位数、操作系统位数、指令集、寄存器位数、机器字长等
  3. Android使用usb线传输大文件笔记
  4. 解决IndexError: Target 2 is out of bounds.
  5. python open unicodedecodeerror_python 读取文件时报错UnicodeDecodeError: 'gbk' co
  6. php mysql bootstart_PHP+MySQL+Bootstrap 美食主题博客项目
  7. html背景图片带边框,css 使用background背景实现border边框效果
  8. 中兴捧月大赛之方案探讨
  9. Java画布:直线三角形,矩形,椭圆等
  10. PhpSpreadsheet中文文档 | 基础Spreadsheet开发使用示例