在STM32中,有**5个时钟源,**分别为:
1、HSI (High Speed Internal):高速的内部时钟,由内置的RC振荡器产生,其频率约为8MHz,因为RC振荡器并不稳定,所以是约为8MHz,精度不高。
2、HSE (High Speed External):高速的外部时钟,由外接晶振产生,频率为8MHz
3、LSI (Low Speed Internal):低速的内部时钟,由内置的RC振荡器产生,其频率约为40kHz。独立的看门狗时钟源只能是LSI,同时LSI还可以作为RTC的时钟源
4、LSE (Low Speed External):低速的外部时钟,由外接晶振产生,频率为32.768kHz。这个主要是RTC的时钟源
5、PLL 为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2.倍频可选择为2~16倍,但其输出频率最大不得超过72MHz。就是变频的,将频率变大。

时钟

1、系统时钟 SYSCLK:他是供STM32中绝大部分部件工作的时钟源。系统时钟可选择为 PLL 输出、HSI 或者 HSE。系统时钟最大频率为 72MHz, 当然你也可以超频,不过一般情况为了系统稳定性是没有必要冒风险去超频的。CSS为时钟监视系统
2、RTC时钟 RTCCLK:这里是 RTC 时钟源,从图上可以看出,RTC 的时钟源可以选择 LSI,LSE,以及 HSE 的 128 分频。
3、独立看门狗时钟 IWDGCLK:由LSI提供时钟源
4、MCO:PA8这个引脚上可以输出相关的内部时钟,它可以选择一个时钟信号输出,可以 选择为 PLL 输出的 2 分频、HSI、HSE、或者系统时钟。这个时钟可以用来给外 部其他系统提供时钟源。
5、USB时钟 USBCLK:由PLLCLK产生的时钟,经过USB分频器产生,该时钟源只能 从 PLL 输出端获取,可以选择为 1.5 分频或者 1 分频,也就是,当需要使用 USB 模块时,PLL 必须使能,并且时钟频率配置为 48MHz 或 72MHz。
6、系统时钟往右部分是指其他所有外设了。从时钟图上可以看出,其他所有外设的时钟最 终来源都是 SYSCLK。SYSCLK 通过 AHB 分频器分频后送给各模块使用。这些 模块包括:
①、AHB 总线、内核、内存和 DMA 使用的 HCLK 时钟。
②、通过 8 分频后送给 Cortex 的系统定时器时钟,也就是 systick 了。
③、直接送给 Cortex 的空闲运行时钟 FCLK。
④、送给 APB1 分频器。APB1 分频器输出一路供 APB1 外设使用(PCLK1,最大 频率 36MHz),另一路送给定时器(Timer)2、3、4 倍频器使用。
⑤、送给 APB2 分频器。APB2 分频器分频输出一路供 APB2 外设使用(PCLK2, 最大频率 72MHz),另一路送给定时器(Timer)1 倍频器使用。 其中需要理解的是 APB1 和 APB2 的区别,APB1 上面连接的是低速外设,包括电源接口、 备份接口、CAN、USB、I2C1、I2C2、UART2、UART3 等等,APB2 上面连接的是高速外设包 括 UART1、SPI1、Timer1、ADC1、ADC2、所有普通 IO 口(PA~PE)、第二功能 IO 口等。居宁 老师的《稀里糊涂玩 STM32》资料里面教大家的记忆方法是 2>1, APB2 下面所挂的外设的时 钟要比 APB1 的高。
在以上的时钟输出中,有很多是带使能控制的,例如 AHB 总线时钟、内核时钟、各种 APB1 外设、APB2 外设等等。当需要使用某模块时,记得一定要先使能对应的时钟。后面我们讲解 实例的时候回讲解到时钟使能的方法。
STM32 时钟系统的配置除了初始化的时候在 system_stm32f10x.c 中的 SystemInit()函数中 外,其他的配置主要在 stm32f10x_rcc.c 文件中,里面有很多时钟设置函数,大家可以打开这个 文件浏览一下,基本上看看函数的名称就知道这个函数的作用。在大家设置时钟的时候,一定 要仔细参考 STM32 的时钟图,做到心中有数。这里需要指明一下,对于系统时钟,默认情况 下是在 SystemInit 函数的 SetSysClock()函数中间判断的,而设置是通过宏定义设置的。我们可 以看看 SetSysClock()函数体:
static void SetSysClock(void) { #ifdef SYSCLK_FREQ_HSE

SetSysClockToHSE();
#elif defined SYSCLK_FREQ_24MHz
SetSysClockTo24();
#elif defined SYSCLK_FREQ_36MHz
SetSysClockTo36();
#elif defined SYSCLK_FREQ_48MHz
SetSysClockTo48();
#elif defined SYSCLK_FREQ_56MHz
SetSysClockTo56();
#elif defined SYSCLK_FREQ_72MHz
SetSysClockTo72();
#endif
}
这段代码非常简单,就是判断系统宏定义的时钟是多少,然后设置相应值。我们系统默认宏定 义是 72MHz:
#define SYSCLK_FREQ_72MHz 72000000
如果你要设置为 36MHz,只需要注释掉上面代码,然后加入下面代码即可:
#define SYSCLK_FREQ_36MHz 36000000
同时还要注意的是,当我们设置好系统时钟后,可以通过变量 SystemCoreClock 获取系统时钟 值,如果系统是 72M 时钟,那么 SystemCoreClock=72000000。这是在 system_stm32f10x.c 文件 中设置的:
#ifdef SYSCLK_FREQ_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_HSE;
#elif defined SYSCLK_FREQ_36MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_36MHz;
#elif defined SYSCLK_FREQ_48MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz;
#elif defined SYSCLK_FREQ_56MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz;
#elif defined SYSCLK_FREQ_72MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz;
#else uint32_t SystemCoreClock = HSI_VALUE;
#endif
这里总结一下 SystemInit()函数中设置的系统时钟大小:
SYSCLK(系统时钟) =72MHz
AHB 总线时钟(使用 SYSCLK) =72MHz
APB1 总线时钟(PCLK1) =36MHz
APB2 总线时钟(PCLK2) =72MHz
PLL 时钟 =72MHz
以上为学习正点原子根据视频教程以及所提供的库函数版本资料整理的。

STM32时钟--基于正点原子STM32视频教程相关推荐

  1. 【STM32】基于正点原子『探索者』开发板的烧录

    项目需要一个功能,开发板范例正好有,就买了一块,不过还是有点贵 我手边没有J-Link 用的都是串口烧录 烧录时,先打开右上的开关 如果是仿真器烧录,它无法供电,需要接12V适配器或是杜邦线供电 然后 ...

  2. 基于正点原子stm32的mini板的TFTLCD显示实验

    本章将讲述TFTLCD显示实验,小白总结,如有错误,请大神指教. 一.TFTLCD 简介 1.TFT-LCD 即薄膜晶体管液晶显示器.TFT-LCD具有:亮度好.对比度高.层次感强.颜色鲜艳等特点.是 ...

  3. STM32下载程序至SRAM——基于正点原子精英STM32F103ZET6开发板

    STM32下载程序至SRAM--基于正点原子精英STM32F103ZET6开发板 如题,由于STM32的FLASH烧写寿命在1万次左右,对于本人这样的改一行代码都想下载到开发板中测试的强迫症患者,真是 ...

  4. 正点原子STM32(基于HAL库)3

    目录 高级定时器实验 高级定时器简介 高级定时器输出指定个数PWM 实验 高级定时器输出指定个数PWM原理 TIM1/TIM8 寄存器 硬件设计 课堂源码(输出指定个数PWM灯就闪几次) 程序设计 下 ...

  5. STM32学习笔记——基于正点原子例程编码器模式小结

    STM32学习笔记--基于正点原子例程编码器模式小结 最近一段时间学习了,STM32f4的编码器功能,经过自己探索和他人的热心帮助,对于编码器模式有了一定了解.STM32f4单片机提供编码器模式,以便 ...

  6. 【正点原子STM32连载】 第二十七章 RTC实时时钟实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  7. 【正点原子STM32连载】第四十五章 SD卡实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  8. 【正点原子STM32连载】 第二十五章 TFTLCD(MCU屏)实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  9. 【正点原子STM32连载】第四十章 DHT11数字温湿度传感器 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  10. 【正点原子STM32连载】第四十一章 无线通信实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

最新文章

  1. 关于RabbitMq你必须深入理解的内容
  2. cs224n上完后会会获得证书吗_斯坦福NLP组-CS224n: NLP与深度学习-2019春全套资料分享...
  3. java NIO 文章
  4. ServletContextListener在Springboot中的使用
  5. c语言sin程序怎么写_用数控铣床加工六芒星,程序应该怎么写?
  6. 用HTML简单制作一个网页
  7. 计算机二级知识普及挑战赛答案,全国计算机二级试题库
  8. 洛谷P5706 【深基2.例8】再分肥宅水(c ,c++混合版)
  9. canvas绘制网易云logo
  10. Spire.Doc 教程:如何将Word转换为PDF
  11. this.$refs使用方法
  12. win10 更新Node JS和npm
  13. The following packages have unmet dependencies
  14. 【人工智能】Google I/O 2023:让 AI 对每个人都更有帮助 Making AI more helpful for everyone
  15. 电脑桌面计算机找不到,电脑桌面没有了怎么恢复?电脑桌面没有了的恢复方法...
  16. 深度图+灰度图 可视化判断灰度图区域是否有深度
  17. 怎么实现MindMapper破解版中格式的设置
  18. 关于不定期弹出http://u.9kuku.com/的问题
  19. APB(Advanced Peripheral Bus)协议规范
  20. 计蒜客 菜鸟物流的运输网络 解题报告

热门文章

  1. .html怎么查看源代码,html的网页源代码怎么查看
  2. 量化框架backtrader之一文读懂可视化
  3. 1080p和1080i有什么区别?
  4. MySQL 5.6 免安装版(绿色版or解压版)修改编码
  5. css动漫效果库,10 个最佳 CSS 动画库
  6. 新混响预设合集 – Audio Ease Altiverb 7 New Impulse Responses
  7. MapReduce: Simplified Data Processing on Large Clusters 翻译加理解
  8. 常用Word 排版要求
  9. 技术问答-26 线程的状态 新建 准备 运行 休眠 停止
  10. 智慧医院绩效管理方案