文章目录

初学STM32,发现他的时钟系统有点复杂(相对于之前学的51单片机来说)。这是为什么?
–51单片机的I/O口少,外设简单,所以时钟一般来说都是固定的,这也导致了51单片机应用场景的局限性。
–stm32单片机之所以时钟系统的复杂,这与它芯片本身应用的场景有关,我们知道,32一般都是多引脚且外设多,应用场合也十分广泛,例如一些低功耗、高频率的场合,这些无疑都是得益于他的时钟系统。

##1-STM32的时钟来源
stm32总共拥有5个时钟源:
①HSE,high-speed-extern(高速外部时钟)
②HSI,high-speed-inside(高速内部时钟)
③LSE,low-speed-extern(低速外部时钟)
④LSI,low-speed-inside(低速内部时钟)
⑤PLL,锁相环倍频输出时钟

HSE:外部晶振/陶瓷谐振器、精度高。ST官方推荐的外部晶振是8M,如果外接其他类型的晶振,须在stm32f4xx.h程序中修改宏,以及在system_stm32f4xx.c修改PLL
HSI:内部16MRC振荡器,启动速度比HSE快,但精度不及HSE。
LSE:外部晶振/陶瓷谐振器,一般用于实时时钟(RTC)的时钟源,功耗低且精度高。
LSI:内部32KHz振荡器,可作为停机/待机、独立看门狗、自动唤醒单元的时钟源。
PLL:分为主PLL和专用PLL。主PLL由HSE或HSI提供时钟信号,并输出两时钟(1个用于系统时钟168M,1个用于USB OTG FS时钟48M、随机数发生器<=48M、SDIO时钟<=48M);专用PLL与主PLL有相同的输入时钟,但其有专门的使能禁止和分频系数,为I2S提供时钟。
下面是stm32的时钟树,图片太大,我们分开来看。


##2-各个功能的时钟来源
###看门狗与RTC时钟

stm32内部的低速时钟(32KHz)可作为独立看门狗与RTC的时钟源,同时可以看到,RTC的时钟源有3个,另外的两个分别是LSE(32.768KHz)、(分频2-31)后的HSE。


###微控制器时钟输出MCO

MCO1有4个时钟来源:HSE、HSI、PLL、LSE
MCO2有4个时钟来源:HSE、PLL、PLL2S、SYSCLK
MCO输出时钟不得超过100MHz(最大I/O速度)


###系统与外设时钟

重点来了,敲黑板!
系统时钟SYSCLK经过分频(1-512)后供给外设使用,其时钟来源包括:HSE、HSI、主PLL
通常我们所说的168MHz其实的来源是:HSE外接8M晶振,经过8分频(/M,M系数为8),然后经过336倍频(N,N为336),在经过2分频(/P,P为2)后,即*(8/8)336/2=168M*
系统主时钟SYSCLK可直接为以太网PTP提供时钟, 也可经过分频(1-512)供给HCLK、AHB总线、内核、存储器、DMA,或者8分频后供给Cortex 系统定时器Systick;SYSCLK在经过AHB(一般不分频,保持168M)分频后再分频为APB1(4分频,因为APB1频率不得超过42M)和APB2(一般2分频,最大不得超过84M)提供时钟。APB1和APB2 各自挂载不同的外设,详细请看datasheet。


ST官方推荐的stm32外部晶振是8M,这样子的话,通常我们只需调用库函数system_stm32f4xx.c中的**void SystemInit(void)**函数即可进行时钟的配置,默认是168M系统时钟,APB1为42M,APB2为84M,如需要可自行修改。


##3-后记
PS:这里刚开始有个疑问为什么TIM14(挂载在APB1)能达到84MHz,,看了时钟树之后才发现,定时器时钟做了另外的处理的,记录下;

从STM32F4的内部时钟树可知,当APB1和APB2分频数为1的时候,TIM1、TIM8TIM11的时钟为APB2的时钟,TIM2TIM7、TIM12TIM14的时钟为APB1的时钟;而如果APB1和APB2分频数不为1,那么TIM1、TIM8TIM11的时钟为APB2的时钟的两倍,TIM2TIM7、TIM12TIM14的时钟为APB1的时钟的两倍。

因为系统初始化SystemInit函数里初始化APB1总线时钟为4分频即42M,APB2总线时钟为2分频即84M,所以TIM1、TIM8TIM11的时钟为APB2时钟的两倍即168M,TIM2TIM7、TIM12~TIM14的时钟为APB1的时钟的两倍即84M

另外,TIM_ClockDivision是在采样时使用的时钟分频器,比如输入捕获时的采样时钟或计算互补输出的死区的时钟;时钟分频就一个PSC,还有一个重装载计数值ARR,一般只有设置这两个就够了,TIM_ClockDivision在输入捕获和PWM的互补输出时设置才有意义!

【STM32】STM32f4学习之路--时钟相关推荐

  1. 【STM32】STM32f4学习之路--嘀嗒定时器

    嘀嗒定时器,作为stm32特有的系统定时器,它的出现,旨在为用户在使用OS以及延时的时候提供一个精确的定时. SysTick 是 MDK 定义了的一个结构体(在 core_m4.h 里面),里面包含 ...

  2. 嵌入式(stm32)学习之路---MIDI音乐播放器

    STM32用蜂鸣器播放MIDI音乐(可以基于这个基础上开发简单电子琴/魔音盒),经典程序代码,程序代码注释简明,易懂,便于移植开发. 无源蜂呜器引脚定义 #define BUZZERPORT GPIO ...

  3. Xamarin.Forms学习之路——黑猫时钟App

    Xamarin.Forms学习之路--黑猫时钟App 前言 环境准备 步骤 本系列参考https://github.com/xamarin/xamarin-forms-samples.先读懂代码,后续 ...

  4. 【STM32学习】实时时钟 —— RTC

    [STM32学习]实时时钟 -- RTC 零.参考 一.工作原理 1.RTC介绍 2.工作过程 二.相关寄存器 三.代码说明 1.rtc初始化 2.关于中断 3.中断配置代码(仅供参考) 3.1 秒中 ...

  5. STM32系统学习——RCC(使用HSE/HSI配置时钟)

    ** STM32系统学习--RCC(使用HSE/HSI配置时钟) ** RCC :reset clock control 复位和时钟控制器.主要讲解时钟部分,特别是要着重理解时钟树,理解了时钟树,ST ...

  6. (实验15)单片机,STM32F4学习笔记,代码讲解【RTC实时时钟实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 RTC初始化程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创] ...

  7. STM32学习总结之时钟

    学习目标: 掌握 STM32 基础知识 STM32单片机学习总结之------时钟树与时钟源 学习内容: 这个图说明了STM32的时钟走向,从图的左边开始,从时钟源一步步分配到外设时钟.从时钟频率来说 ...

  8. STM32的学习记录--单个模块开发思路

    1. 前言 很久没写STM32的学习博客了,不是因为没在搞,而且因为STM32要学习的部分太多,而且代码量太大了,有些代码还涉及到版权问题,就一直没写,最近刚好在搞一个智能设备有关WiFi模块的开发, ...

  9. 高手入门STM32总结+学习步骤

    一.入门总结 1.1为什么要把时间花在"犹豫"上? 每当我们在入门之前(ARM是这样,DSP也一样),总会有很多疑问,会有很多顾虑.我们渴望知道学习STM32前景如何?需要啥基础? ...

最新文章

  1. cenotos 卸载mysql_cenotos 6.5 NFS服务配置
  2. 数字孪生:连结现实与数字世界
  3. 解决 Error:No suitable device found: no device found for connection quot;System eth0quot;
  4. 系统消息是放客户端还是服务器,系统消息是放客户端还是服务器
  5. Python函数中参数* 和 ** 的区别
  6. ASP.NET MVC 视图(四)
  7. grub的概念,简单描述一下
  8. python3、ipython3、setup-tools、pip等环境搭建详细总结
  9. mybatis(数据库增删改查)
  10. openstack实例状态错误_CSS超炫加载动画设计、实现与实例讲解
  11. java实现文件上传下载功能_java文件上传下载功能实现代码
  12. SPC 之 I-MR 控制图
  13. 诺顿企业版10.0 简体中文版
  14. ureport2学习笔记
  15. Retinex低光照图像增强
  16. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之九(四十五)
  17. 计算机无法备份,无法备份和备份会话失败iTunes问题解决
  18. 群晖如何建php网站_群晖建博客详细教程
  19. 1324. Print Words Vertically**
  20. 嵌入式开发--智能机械臂

热门文章

  1. 【web必知必会】—— 图解HTTP(下)
  2. Oracle 11g Release 1 (11.1) 游标——显式游标
  3. 心疼啊今天在四季青买衣服的时候在试衣服的时候,竟然有个小偷把我的n73手机给偷去了,...
  4. PMP考试资料:这个项目值得去做吗
  5. android backlight
  6. HttpWatch截取网页数据的工具以及介绍
  7. java四行代码实现图片下载
  8. Python学习笔记-DNS处理模块dnspython
  9. Powershell管理系列(二十五)PowerShell操作之获取AD账号及邮箱信息
  10. 常见的IE浏览器的一些兼容问题及解决方法