IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> SECTION1:STM32F40x系统时钟自我学习笔记 -> 正文阅读

[嵌入式]SECTION1:STM32F40x系统时钟自我学习笔记

时钟源简介

在 STM32F4 中,有 5 个重要的时钟源,分别为 HSI、HSE、LSI、LSE、PLL。其中 PLL 又分为主 PLL 和专用 PLL。上述时钟根据英文缩写可以判断时钟的高低频和内外部时钟。

时钟树解析

在这里插入图片描述

①HSE 高速外部时钟信号

  • 当使用有源晶振时,时钟从OSC_IN 引脚进入,OSC_OUT 引脚悬空;
  • 当选用无源晶振时,时钟从OSC_IN 和OSC_OUT 进入,并且要配谐振电容。
  • 当HSE 故障时,高速的内部时钟信号HSI会作为备用的系统时钟,直到HSE恢复正常,HSI=16M。

②锁相环PLL

  • HSE 或者HSI 经过PLL 时钟输入分频因子PPLM(2-63)分频后,成为VCO 的时钟输入,VCO 的时钟必须在1~2M 。
  • PLL的配置经过根据公式可得:
    • VCOCLK_IN = PLLCLK_IN / M = HSE / PLLM
    • VCOCLK_OUT = VCOCLK_IN * N = HSE/PLLM*PLLN
    • PLLCLK_OUT=VCOCLK_OUT/PLLP = HSE*PLLN/(PLLM * PLLP)
    • 如果使能了PLL,则PLLCLK即为我们需要的时钟。

③系统时钟SYSCLK

  • 系统时钟来源可以是:HSI、PLLCLK、HSE,具体的由时钟配置寄存器RCC_CFGR的SW位配置。
    可以在system_stm32f4xx.c文件中配置
#define  RCC_CFGR_SW_HSI                     ((uint32_t)0x00000000)        /*!< HSI selected as system clock */
#define  RCC_CFGR_SW_HSE                     ((uint32_t)0x00000001)        /*!< HSE selected as system clock */
#define  RCC_CFGR_SW_PLL                     ((uint32_t)0x00000002)        /*!< PLL selected as system clock */
    /* Select the main PLL as system clock source */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
    RCC->CFGR |= RCC_CFGR_SW_PLL;

    /* Wait till the main PLL is used as system clock source */
    while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL);
    {
    }

上图即配置时钟来源为PLLCLK。

④AHB 总线时钟HCLK

  • 系统时钟SYSCLK经过AHB预分频器分频之后得到时钟叫APB总线时钟,片上的大部分时钟都是由HCLK分频得到的。
  • 根据上面讲述的PLLCLK的配置,可知这里的HCLK即为PLLCLK。我们也可以通过选择RCC_CFGR_SWS_HSI或RCC_CFGR_SWS_HSE来更换系统时钟来源。

⑤APB2 总线时钟HCLK2

  • APB2的时钟频率由HCLK分频得来,分频可设。高频时钟,以F405为例,最大允许84M。

⑥APB1 总线时钟HCLK1

  • APB1的时钟频率由HCLK分频得来,分频可设。低频时钟,以F405为例,最大允许42M
  • AHB、APB1、APB2在system_stm32f4xx.c文件的配置详情见下面的代码块。
    /* HCLK = SYSCLK / 1*/
    RCC->CFGR |= RCC_CFGR_HPRE_DIV1;//AHB

#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx)      
    /* PCLK2 = HCLK / 2*/
    RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;//APB1
    
    /* PCLK1 = HCLK / 4*/
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;//APB2

A、RTC 时钟

  • RTCCLK 时钟源可以是 HSE 1 MHz、 LSE 或者 LSI时钟。
  • 通常的做法是由LSE 给RTC 提供时钟,大小为32.768KHZ。
  • LSE由外接的晶体谐振器产生,所配的谐振电容精度要求高,不然很容易不起震。

B、独立看门狗时钟

-由内部的低速时钟LSI提供,大小为32KHZ。

C、I2S 时钟

  • I2S时钟可由外部的时钟引脚I2S_CKIN输入,也可由专用的PLLI2SCLK提供。

D、PHY以太网时钟

  • F429要想实现以太网功能,除了有本身内置的MAC之外,还需要外接一个PHY芯片。
  • 当使用RMII接口时,PHY芯片只需输出一路时钟给MCU即可。
  • 如果是MII接口,PHY芯片则需要提供两路时钟给MCU。

E、USB PHY 时钟

  • 当外接USB PHY芯片时,PHY芯片需要给MCU提供一个时钟。
  • 如果当前芯片内部没有集成PHY芯片,则需要外接一个PHY芯片。

F、MCO 时钟输出

  • MCO是microcontroller clock output的缩写,是微控制器时钟输出引脚,主要作用是可以对外提供时钟,相当于一个有源晶振。

KEIL内的时钟计算

主时钟计算

  • 此处我们只计算时钟来源为PLLCLK,即系统时钟由PLL倍频而来的情况。
  • 那么SYSCLK = PLLCLK = HSE*PLLN/(PLLM * PLLP)

其他外设时钟计算

  • HCLK = SYSCLK = PLLCLK
  • HCLK1 = PLLCLK / 2
  • HCLK2 = PLLCLK / 4
  • 这个分频比一般都不会变,但是在发现按照这个默认值计算的时钟不对时,要及时的检查配置并计算实际的时钟情况。
  • APB1上的外设包括:
    • DACEN
    • CANEN(1、2)
    • I2CEN(1、2、3)
    • UART(4、5)
    • USARTEN(2、3)
    • SPIEN(2、3)
    • WWDGEN(窗口看门狗)
    • TIMEN(2、3、4、5、6、7、12、13、14)
  • APB2上的外设包括:
    -TIMEN(1、8、9、10、11)
    • SYSCFGEN
    • SPIEN(1)
    • SDIOEN(安全数字输入输出接口)
    • ADCEN(1、2、3)
    • USARTEN(1、6)

总结一句,用于记忆,即:
APB2负责AD,I/O,高级TIM,串口1、6。
APB1负责DA,USB,SPI,I2C,CAN,串口2345,普通TIM
但这句总结不够严谨,我们可以根据上图面的记录看出,APB1并不负责所有的SPI,但可以用于记录大部分的内容,开发就是如此,既要通过这种口诀记忆一般芯片的通性,又要根据手册去对比验证,这样能确保万无一失。

此文档由学习了“小峰学长生活大爆炸”的文章而来,叙述部分肯定有一些相似之处,但也有我的理解和补充,本意是为了再次加深印象和供以后查阅,如有冒犯,可联系本人。谢谢。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 12:16:06  更:2021-08-26 12:16:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 1:34:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码