STM32F1系列HAL库配置系统时钟

其实一开始对于时钟我也是知之甚少,在MSP432中我就一直忽视时钟配置,其实也是在STM32学习时落下的病根,现在趁有空补一下。

时钟简单讲解

对于时钟系统,在之前我写启动文件涉及到,其实,每个功能的实现都涉及到时钟。我们首先说明一下RCC

RCC:复位和时钟控制

什么是复位,什么又是时钟?在STM32参考手册中文版我们可以看到

注意“除了时钟控制器的RCC_CSR寄存器中的复位标志位和备份区域中的寄存器(见图4)以外,系统复位将复位所有寄存器至它们的复位状态。”这句话告诉我们复位时,让寄存器(除了上述提及的CSR以及备份区域寄存器外)恢复至初始状态,也就是我们上电后寄存器的默认状态
我们使用时也是在不断复位中使用的,为什么这么说?

复位的情况包含了三种:系统复位,电源复位和备份域复位;
系统复位就包含了我们的NRST引脚复位,看门狗,软件复位;电源复位就包含我们每次烧录断电后的情况;而备份域复位比较特殊,我们断电后,烧写的程序在下一次上电还会执行,这就是备份域起到了作用,我们单片机有一个电池,当我们断电时,他会给备份域供电,手册上也详细解释到了。

但当我们电池也没电且没有向单片机供电时,就引发了备份域复位

复位大致就讲到这里。

时钟控制

手册后面也是直接讲到了时钟,时钟是一个很重要的概念,我记得在电赛初选的时候考场老师就问了我这个问题(我那时没回答出来,哭哭/(ㄒoㄒ)/~~)。
时钟,打个比方就相当于我们的心跳脉搏,我们人是在一天的心跳中完成身体各部分的运转,我们单片机上的芯片根据时钟来有节拍的工作,像我们之前看到的72MHZ,48MHZ,就是系统主时钟,芯片在主时钟中协调模块的各种工作。
比如以下是一个信号接收器,它以某种频率来向out发送高低电平信号,信号接收器的工作时间就受时钟控制,时钟1与2是两个不同频率的时钟,而阴影部分是其工作时间,我们看到时钟频率低(时钟1)的,他的工作精度是没有2好的,在检测时肯定会漏接收很多信号,而2不同,他的工作速度很高,能接收很多次电平信号。


以上虽是一个不太恰当的例子,但也是说明了,时钟对于模块的作用,可以给到不同的工作速度,但相对应的,你觉得第二个相比第一个检测波形哪个更为整齐?这就引出了其他问题,你可以让一个普通的芯片时钟频率很高并用于出波(后面的PWM),但是他的输出波形是会有幅频失真和相频失真,总之不会太理想,更高性能的芯片也是有他的极限频率的,并且高频率带来的功耗也是很大的,你可以尝试魔改时钟频率,摸摸你的芯片有多热情,问问你芯片的香味。 总之,功耗,性能,频率,这些都是相互牵制的。

我们在产品手册上5.3.1也可以看到,(f频率)是有限制的。

时钟源

系统时钟可以以HSI,HSE振荡器和PLL作为时钟源,二级时钟源一般是有固定用途的,

比如RTC(32.768KHz)时钟专门用来给RTC 时钟模块提供时钟源

时钟树

在CUBEMX中是有时钟树的,与我们手册上的图神似,很方便我们去配置

配置时钟树

1.选型及RCC配置

选择你的芯片类型

以F103ZETx为例

打开RCC,在MODE一栏我们可以看到HSE,LSI

我们一般用高速外部时钟配置系统时钟,他的来源一般是用户输入或者外部晶振,后者常选

而HSI是由8M的RC振荡器产生的,集成在芯片内部

剩下的就是PLL(锁相环倍频),它用于将我们的其实时钟频率通过倍频增大,这也正是解释了那些频率较高的时钟怎么来的

低速时钟有特殊用途,我们用到再考虑。故我们如下配置MODE

2.时钟树配置

接着打开时钟树,
系统时钟包括三种来源也可以看到,PLL也是由HSE或者HSI作为倍频输入,我们一般选择HSE,再倍频以便输出更高的频率。

在手册时钟树图的后面,我们知道:外设的时钟都是由系统时钟而来的,所以我们先配置好系统时钟

在系统时钟之后是HCLK(内部AHB时钟频率),如果我们想要72MHz,只需输入72并回车,他就会给我们配置好一种方案。但是我们之前也说过,频率是有限制的

如果你手动配置时变红了,很有可能是超过最大范围了。
CUBEMX的优点在于它可以帮你选择时钟方案,还有分频因子,实际上就是对输入的频率做除法,我们可以修改它来修改外设使用时钟频率

这些时钟都是有各种去向的,我们也可以清楚看到

其他去向不过多解释了,之后都会接触到大部分。
点击生成代码

这些都是和我们之前配置是一样的,CUBEMX配置时钟很方便。

STM32F1系列HAL库配置系统时钟相关推荐

  1. STM32F4系列HAL库配置定时器实验——输入捕获

    STM32F4系列HAL库配置定时器实验--输入捕获 输入捕获简单讲解 输入捕获模式可以用来测量脉冲宽度或者测量频率.我们以测量周期和频率为例,用一个简图来说明输入捕获的原理 假定定时器工作在向上计数 ...

  2. STM32 HAL库获取系统时钟与标准库获取系统时钟

    HAL库 SysClk = HAL_RCC_GetSysClockFreq();     HClk = HAL_RCC_GetHCLKFreq();     PClk1 = HAL_RCC_GetPC ...

  3. STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例)

    STM32CubeMX | STM32 F1系列HAL库低功耗STOP和STANDBY模式唤醒(RTC时钟唤醒+外部中断唤醒示例) 目录 STM32CubeMX | STM32 F1系列HAL库低功耗 ...

  4. STM32H7时钟树RCC分析--- HAL库配置(二)

    上一讲我们说了H7时钟树的一些基本概念,现在的话我们来用HAL库和CubeMx配置一下 再次说明,本文耗时较久,如果您想搞懂RCC初始化流程,请认真阅读,刚开始可能看不懂,但是仔细阅读之后绝对会有收获 ...

  5. HAL库配置FreeRTOS

    HAL库配置 配置时钟源 1:修改HAL库定时器时钟源. 由于HAL库内部会使用systick定时器用于系统延时功能,而FreeRTOS也需要一个定时器用于操作系统内核调度的使用,顾需修改HAL库的时 ...

  6. HAL库配置GPIO

    HAL库配置GPIO HAL库与标准库不同的特点: 使用`CubeMX`配置GPIO底层参数: 总结HAL库中GPIO的相关功能: GPIO的寄存器: 总结 HAL库与标准库不同的特点: 标准库中初始 ...

  7. 配置系统时钟(stm32)

    一.使用HSE配置系统时钟的过程 1.开启HSE,并等待HSE稳定 __IO uint32_t HSEStartUpStatus = 0; // 使能HSE,开启外部晶振 RCC_HSEConfig( ...

  8. STM32系列(HAL库)——F103C8T6通过MFRC522、RFID射频卡、门禁卡模块读取卡片ID(二)

    本文继上一篇:STM32系列(HAL库)--F103C8T6通过MFRC522.RFID射频卡.门禁卡模块读取卡片ID 本文介绍在运用RC522模块时,运用链表结构存储数据的操作 Let's go! ...

  9. 关于HAL库中系统嘀嗒时钟的简单探究

    在利用HAL库建立STM32工程时,系统嘀嗒时钟的初始化是在函数HAL_Init()中实现的: HAL_StatusTypeDef HAL_Init(void) {/* Configure Flash ...

最新文章

  1. 详解Clojure的递归(下)——相互递归和trampoline
  2. 2.session与cookie的区别?
  3. linq 实现查询字符串拼接 : And 和 OR 两种方式
  4. Linux安装gcc、gcc-c++等环境
  5. formal method 2月23日第八课的内容!schema calculus!
  6. python做的游戏可以导出吗_Python视频教程
  7. linux卸载deb安装的软件,ubuntu常用软件包deb的安装与卸载
  8. 06540计算机网络2018年自考真题,自考06540计算机网络基本原理复习资料六
  9. Openwrt平台搭建
  10. 自定义ListView实现任意View跑马灯效果
  11. 金融系列-会计基础知识
  12. mongoTemplate查询指定字段
  13. 去中心化云存储的前世今生 | 存储技术分享活动回顾
  14. Bazel Remote Caching
  15. Cognos入门教程
  16. Windows 7 SP1补丁包 (32位) V 2013.10 官方版
  17. Python 3 内置函数 - `setattr()`函数
  18. 什么是GAP(GlobalAverage Pooling)
  19. 使用element table表格实现后端排序
  20. Linux c 二叉搜索树(节点创建、插入BST)

热门文章

  1. 什么是Richard Feynman 积分技巧
  2. 数字图像处理(1)图像取样,4倍,16倍减采样,matlab实现
  3. brpc源码分析——数据报处理过程
  4. oracle 与赛门铁克,Oracle与赛门铁克认证Veritas数据中心解决方案
  5. haoi2008木棍分割解题报告
  6. [蓝桥杯python] 粘木棍:有N根木棍,需要将其粘贴成M个长木棍,使得最长的和最短的的差距最小。
  7. 关于登录,存储token,验证本地token,请求头携带token。
  8. unity3D 初学者的个人总结
  9. 边际效用递减推导需求曲线_软件需求曲线
  10. 桥接路由器总是掉线_无线路由器桥接完整教程(不会断网)【图文详解】