STM32——时钟系统

文章目录

  • 1、STM32时钟系统概述
    • 1.1 时钟系统的概念与意义
    • 1.2 常见振荡器简介
      • 1.2.1 RC振荡器
      • 1.2.2 晶体振荡器
    • 1.3 STM32F0 时钟源介绍
  • 2、Sys Tick定时器
    • 2.1 Sys Tick寄存器
  • 3、通用定时器
    • 3.1 定时器计数模式
    • 3.2 定时器计数原理

1、STM32时钟系统概述

1.1 时钟系统的概念与意义

  • 概念
    时钟系统是由振荡器(信号源)、定时唤醒器、分频器等组成的电路。常用的信号源有晶体振荡器和RC振荡器。
  • 意义
    时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行、状态变换等动作,外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、A/D转换、定时器计数等等。因此时钟对于计算机系统是至关重要的,通常时钟系统出现问题也是致命的,比如振荡器不振,振荡不稳、停振。
    STM32——时钟系统_第1张图片

1.2 常见振荡器简介

  • 概念
    振荡器是用来产生重复电子讯号的电子元件。其构成的电路叫振荡电路,能将直流电转换为具有一定频率交流信号输出的电子电路或装置。
  • 分类
    振荡器主要分为RC、LC振荡器和晶体振荡器。RC振荡器是采用RC网络作为选频移相网络的振荡器。LC振荡器是采用LC振荡回路作为移相和选频网络的正反馈振荡器。晶体振荡器的振荡频率受石英晶体控制。

1.2.1 RC振荡器

STM32——时钟系统_第2张图片

1.2.2 晶体振荡器

STM32——时钟系统_第3张图片

1.3 STM32F0 时钟源介绍

STM32中有四个时钟源

  • HSI:高速内部时钟,RC振荡器,频率为8KHz;
  • HSE:高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围4MHz-16MHz
  • LSI:低速内部时钟,RC振荡器,频率为40KHz。独立看门狗时钟源只能是这个时钟,还可以做RTC时钟源。
  • LSE:低速外部时钟,接32.768KHz的石英晶体。这个主要是RTC的时钟源。
    STM32——时钟系统_第4张图片
    控制时钟的寄存器是RCC

2、Sys Tick定时器

  • 概念
    定时器:能够定时、计数的器件称为定时器。
    Sys Tick:系统滴答定时器,简称滴答定时器,是一个定是设备,位于Cortex-M0内核中,可以对输入的时钟进行计数,当然,如果时钟信号是周期性的,计数也就是计时。
    系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。
  • 工作原理
    滴答定时器是一个24位定时器,也就是最多能计数2^24。在使用的时候,我们一般给计数器送一个初始的计数值,计数器向下计数,每来一个时钟信号,计数初值就减一,计数值减到0的时候,就会出发一次中断。然后重新从计数初值再减一计数,循环不断。
    STM32——时钟系统_第5张图片

2.1 Sys Tick寄存器

STM32——时钟系统_第6张图片STM32——时钟系统_第7张图片
Sys Tick计数算法:假设设置的频率是48MHz,48M/1000 * 1/48MHz。

基于系统的延时函数HAL_Dealy(),计时以毫秒为单位,它的局限性:在中断服务函数中使用HAL_Delay会引起混乱,因为它是通过中断方式实现,而 Systick 的中断一般操作系统优先级是最低的,所以在中断中运行 HAL_Delay会导致死锁的现象。

3、通用定时器

STM32F051xx 系列器件包括6个通用定时器,1个基本定时器和1个高级定时器。
STM32——时钟系统_第8张图片
通用定时器功能介绍

  • 通用定时器TIMx功能
    1)定时器定时计数
    2)输入捕获
    3)输出比较
    4)PWM输出
    5)使用外部信号控制定时器和定时器互连的同步电路
  • 高级定时器TIM1功能
    1)通用定时器有的功能
    2)带死区控制和紧急刹车,可用于PWM控制电机
  • 基本定时器TIM6功能
    主要运用于定时计数以及驱动DAC

输入捕获:可以用来捕获外部事件,比如引脚的电平变化(上升沿、下降沿),并记录下变化的时间,通常可以用来测量外部信号的频率或者电平持续的时间。
STM32——时钟系统_第9张图片
输出比较: 此项功能是用来控制一个输出波形,当计数器与捕获/比较寄存器的内容相同时,输出比较功能做出相应动作,比如电平的翻转,通常用于产生PWM波形。
STM32——时钟系统_第10张图片

3.1 定时器计数模式

STM32——时钟系统_第11张图片

3.2 定时器计数原理

STM32——时钟系统_第12张图片

  • 时钟源:定时器时钟 TIMxCLK,即内部时钟 CK_INT,经 APB 预分频器后分频提供
  • 计数器时钟:定时器时钟经过 PSC 预分频器之后,即 CK_CNT,用来驱动计数器计数
  • 计数器CNT: 是一个 16 位/32的计数器
  • 自动重装载寄存器:这里面装着计数器能计数的最大数值。当计数到这个值的时候,如果使能了中断的话,定时器就产生溢出中断
  • 计时中断时间:1/(TIMxCLK/(PSC+1)) * (ARR+1)

你可能感兴趣的:(STM32——时钟系统)