2.4 定时器与TIM中断

2024-09-01 17:44
文章标签 2.4 中断 定时器 tim

本文主要是介绍2.4 定时器与TIM中断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 时钟与时钟树
    • stm32时钟树
    • ST公司给的外围设备配置文件 的 默认配置说明
  • 定时器
    • 什么是定时器
    • 定时器的类型


时钟与时钟树

频率:如72Mhz即为每秒72M个脉冲

  • 时钟的源头
    晶振

  • 时钟树的分支
    分频器:分频器是一种将输入时钟信号的频率降低到其整数倍的电路。
    倍频器:倍频器则是将输入时钟信号的频率提高到其整数倍的电路。
    参考CSDN文章_时钟系统

他们可以通过改变频率实现不同频率的分支。

stm32时钟树

在这里插入图片描述
St公司的配置程序:江科大

  1. 8Mhz HSI做系统时钟
  2. 再打开HSE取8Mhz 再通过图中黄色路线到锁相环(PLL)倍频9倍,待锁相环输出稳定后,(红色区域)切换锁相环输出为系统时钟 但是,如果外部晶振HSE出现问题,就不会切换,而是继续使用系统内部时钟HSI.

stm32时钟树_站内跳转

时钟树动画简介

ST公司给的外围设备配置文件 的 默认配置说明

在system_stm32f10x.c文件中提到

  • HSI 作为默认时钟源
    HSI (High Speed Internal):内部高速时钟,频率为 8 MHz。每次设备复位后,HSI 自动作为系统时钟源。
    SystemInit() 函数:在启动文件 startup_stm32f10x_xx.s 中定义的函数,用于配置系统时钟。该函数在跳转到主程序前被调用。
  • 时钟源故障处理
    如果用户选择的系统时钟源未能成功启动(例如,外部时钟源未正常工作),SystemInit() 函数将不做任何处理,系统将继续使用 HSI 作为时钟源。
    用户可以在 SetSysClock() 函数中添加代码来处理这种情况,例如重新配置时钟源或进行错误处理。
  • HSE 晶振配置
    HSE (High Speed External):外部高速时钟,通常由外部晶振提供。
    默认情况下,HSE 晶振的频率设置为 8 MHz 或 25 MHz,具体取决于所使用的 STM32F10x 产品。
    HSE_VALUE 定义在 stm32f10x.h 文件中,用于指定 HSE 的频率。
    如果使用 HSE 作为系统时钟源(直接或通过 PLL),并且使用了不同的晶振频率,需要调整 HSE_VALUE 以匹配实际使用的晶振频率。

定时器

什么是定时器

定时器就是计数器
定时器就是计数器
定时器就是计数器
动画演示_B站
在这里插入图片描述

PS: 预分频器和计数器的长度都是16bit ,216 = 65536

  • 预分频器(Prescaler)·:预分频器的值规定在0 ~ n-1(n是输入时钟频率的数值)
    它像是计数器的一个助手,规定每隔几个脉冲向计数器报告一次,让计数器加1

    1. 当预分频的值为零时,每一个脉冲计数器加一次;设定值为1时,每隔两个脉冲,计数器加1。
    2. 预分频器的作用:可以增加定时器的定时上限:
    • 当预分频器设置为0时,一个脉冲就记一次,因为计数器最多定65536下,对应65536 * (1/72M) ≈ 0.00091秒。
    • 而当预分频器设置为65535时,每72M个脉冲记一次,因为计数器还是最多定65536下,对应时间为,65536 * 65536 * (1/72M) ≈ 59.65 秒 (计数器的值预分频器处理的记一次对应的脉冲数 再乘 一个脉冲对应的时间)
    • 可见,预分配器正是通过自己额外处理时钟脉冲数来提高总时间的
  • 计数器(Counter)

    • 基本定时器只有向上计数模式。(从零开始加)
    • 通用定时器与高级定时器有向上计数、向下计数(从设定值开始减)、中央计数模式。
  • 自动重装载寄存器(Auto Reload Register):在计数器到达该寄存器设定值时清零计数器,并同时(如果配置了)
    可触发中断。

定时器的类型

类型编号总线功能
高级定时器TIM1、TIM8APB2拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能
通用定时器TIM2、TIM3、TIM4、TIM5APB1拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能
基本定时器TIM6、TIM7APB1拥有定时中断、主模式触发DAC的功能 如何理解主模式触发

STM32C8T6 只有TIM1,TIM2,TIM3,TIM4

这篇关于2.4 定时器与TIM中断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127622

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

FreeRTOS学习笔记(四)Freertos的中断管理及临界保护

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Cortex-M 中断管理1.1 中断优先级分组1.2 相关寄存器1.3 相关宏定义1.4 FreeRTOS 开关中断 二、临界段及其保护2.1 taskENTER_CRITICAL( ) 和 taskEXIT_CRITICAL( )2.2 taskENTER_CRITICAL_FROM_ISR( )

【Qt】定时器事件

定时器事件 在之前学习QTimer中实现了定时器的功能,而在QTimer背后是QTimerEvent定时器事件进行支撑的。在QObject中提供了一个timeEvent这个函数。 startTimer启动定时器killTimer关闭定时器 Qt 中在进⾏窗⼝程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使⽤定 时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执⾏某⼀

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

Cortex-A7:ARM官方推荐的嵌套中断实现机制

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版 1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A7中断向量表中仅为外部中断设置了一个中断向量可以看出。本文介绍ARM官方推荐使用的嵌套中断实现机

外部中断的边缘触发和电平触发

MCS-51单片机中的边缘触发是指当输入引脚电平由高到低发生跳变时,才引起中断。而电平触发是指只要外部引脚为低电平就引起中断。         在电平触发方式下,当外部引脚的低电平在中断服务返回前没有被拉高时(即撤除中断请求状态),会引起反复的不需要的中断,造成程序执行的错误。这类中断方式下,需要在中断服务程序中设置指令,清除外部中断的低电平状态,使之变为高电平。

【JavaScript】在循环体中了解定时器工作机制

for (var i = 0; i < 5; i++) {setTimeout(function() {console.log(i);}, 1000);}console.log(i);   如果我们约定,用箭头表示其前后的两次输出之间有 1 秒的时间间隔,而逗号表示其前后的两次输出之间的时间间隔可以忽略,代码实际运行的结果该如何描述?会有下面两种答案: A. :5 -> 5 -> 5 ->

WebAPI (一)DOM树、DOM对象,操作元素样式(style className,classList)。表单元素属性。自定义属性。间歇函数定时器

文章目录 Web API基本认知一、 变量声明二、 DOM1. DOM 树2. DOM对象3. 获取DOM对象(1)、选择匹配的第一个元素(2)、选择匹配多个元素 三、 操作元素1. 操作元素内容2. 操作元素属性(1)、常用属性(href之类的)(2)、通过style属性操作CSS(3)、通过类名(className)操作CSS(4)、通过classList操作控制CSS(5)、操作表单

【Java编程思想】线程的基本协作机制 与 线程的中断

wait/notify Java在Object类中定义了一些线程协作的基本方法,wait和notify public final void wait() throws InterruptedException;public final native void wait(long timeout) throws InterruptedException; 一个带时间参数,单位是毫秒,表示最

基于IMX6ULL的Cortex-A中断原理讲解,以及编写其中断向量表

首先借助STM32我们需要了解中断系统是如何构成的         会有一个中断源,也就是能够向CPU发出中断请求的设备或事件。中断源不分硬件和软件,也就是产生中断信号,就会执行中断服务函数         但是CPU是如何知道中断源产生后就找到对应的中断服务函数呢,这个时候就要引入中断向量表,它的主要功能是描述中断对应的中断服务函数,每个中断源都有一个唯一的中断号(也称向量号),