单片机
返回首页

基于STM32时钟系统的开发及配置

2024-09-14 来源:elecfans

一、背景

最近做个项目,需要使用STM32,还是以前一样的观点,时钟就是MCU心脏,供血即时钟频率输出,想要弄明白一个MCU,时钟是一个非常好的切入点。言归正传,网上已经有太多大神详述过STM32的详细配置方法了,在此就简单介绍下STM32时钟系统,以及如何配置做个简单记录,方便以后的快速开发。


二、正文

废话不多说,上一张STM32F10xx的时钟树图:

基于STM32时钟系统的开发及配置
 

由图可知,STM32F10XX有两级时钟

第一级时钟

* 高速内部时钟(HSI)

* 锁相环时钟(PLLCLK)

* 高速外部时钟(HSE)

第二级时钟

* 低速内部时钟(LSI)

* 低速外部时钟(LSE)

又由图可知,

* HSE由外部晶振从“OSC_OUT”,“OSC_IN”两脚输入提供。

* LSE由外部晶振从“OSC32_OUT”,“OSC32_IN”两脚输入提供。

* HSI由8MHZ高速内部RC震荡电路提供。

* LSI由40kHZ低速内部RC震荡电路提供。

STM32F10XX还可通过MCO脚向外提供时钟输出。时钟来源有PLLCLK/HSI/HSE/SYSCLK,由MCO选择器来选择。

研究过时钟来源,再来研究时钟的去向,MCU自身要能正常运作,即需要一个时钟,这个时钟既是系统时钟(SYSCLK),而基本上所有外设的时钟均来自于这个系统时钟(SYSCLk)。然后由系统时钟对外提供各种外设时钟。详见图。

当然,也有例外,USB时钟必须为48MHZ,这里的USB时钟(USBCLK)由PLLCLK直接提供,RTC时钟(RTCCLK)也不是来源于系统时钟(SYSCLK),详见图。

时钟结构大体也就如此,不再深究,网上有许多更加深入的讲解,接下来说说如何去配置。用代码来说明问题:

先贴文件“system_stm32f10x.c”,此文件即库文件。里面有一个很重要的函数“SystemInit()”

解析过STM32启动代码的朋友都应该知道,这个函数跑在进入main函数之前,里面做的事情即是配置系统时钟。


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 光控音效发生器电路

  • 离子检测器电路分析

  • 基于IC555的可变PWM振荡器电路

  • 一个简单的立体声平衡指示器电路

  • 分享一个电网倾角计电路

    相关电子头条文章