STM32学习和实践笔记(20):定时器

1.定时器介绍

  STM32F1的定时器一共有8个,由2个基本定时器(TIM6、TIM7)、4个通用定时器(TIM2-TIM5)和2个高级定时器(TIM1、TIM8)组成。

基本定时器的功能最为简单,类似于51单片机内定时器。

通用定时器是在基本定时器的基础上扩展而来,增加了输入捕获与输出比较等功能。重点讲这种。

高级定时器又是在通用定时器基础上扩展而来,增加了可编程死区互补输出、重复计数器、带刹车(断路)功能,这些功能主要针对工业电机控制方面,一般情况下很少使用。

1.1 通用定时器简介

  STM32F1的通用定时器包含一个 16 位自动重载计数器(CNT),该计数器由可编程预分频器(PSC)驱动。

STM32F1的通用定时器可用于多种用途,包括测量输入信号的脉冲宽度(输入捕获)或者生成输出波形(输出比较和PWM)等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。

STM32F1 的每个通用定时器都是完全独立的,没有互相共享的任何资源。

STM32F1的通用定时器TIMx (TIM2-TIM5 )具有如下功能

(1)16 位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。

(2)16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为 1~65535之间的任意数值

3)4个独立通道(TIMx_CH1-4),这些通道可以用来作为

A.输入捕获:比如计算输入的脉冲的宽度

B.输出比较

C. PWM 生成(边缘或中间对齐模式)

D.单脉冲模式输出

4)可使用外部信号(TIMx_ETR)控制定时器,且可实现多个定时器互连(可以用1个定时器控制另外一个定时器)的同步电路

5)发生如下事件时定时器都可以产生中断/DMA请求

A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)

B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)

C.输入捕获

D.输出比较

6)支持针对定位的增量(正交)编码器和霍尔传感器电路

7)触发输入作为外部时钟或者按周期的电流管理

1.2 通用定时器结构框图

详见中文参考手册的相关章节

图示1区是通用计数器的时钟来源区,用来给定时器提供计数的频率。

一共有四种时钟来源:一是内部时钟,二是外部时钟,来自外部引脚,三是内部的触发输入,一共有ITR0-ITR3共四个。四是外部输入引脚CH1-CH 3,

具体选择哪一个时钟来源,由从模式控制寄存器SMCR来决定。通常情况下,都是选择内部时钟作为通用定时器的时钟来源。

图示2区主要有触发控制器、从模式控制器和编码器接口三部分。

触发控制器主要输出一个触发信号给其它定时器或者DAC/ADC

从模式控制器的输出控制后面的预分频器。

图示3区主要有三个部分:ARR(自动重装寄存器),PSC和CNT。

预分频器和CNT计数器都是16位的。其值为1-65535.

每来一个CK_CNT,计数器就将从ARR里得到值增加或者减少。直到减到0或者超过初值,就产生中断或者事件。

图示4区和5区主要显示了从左边引脚输入捕获后到右边输出引脚的通道。

相关推荐

  1. STM32学习实践笔记26):USART配置步骤

    2024-04-25 07:48:02       9 阅读
  2. STM32学习实践笔记24):PWM输出实验:呼吸灯

    2024-04-25 07:48:02       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-25 07:48:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-25 07:48:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-25 07:48:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-25 07:48:02       20 阅读

热门阅读

  1. 基于单片机的机械臂运行轨迹在线控制系统设计

    2024-04-25 07:48:02       11 阅读
  2. 面试——数据库中的锁升级(Lock Escalation)机制

    2024-04-25 07:48:02       15 阅读
  3. Android - OkHttp 访问 https 的怪问题

    2024-04-25 07:48:02       14 阅读
  4. MyBatis与Hibernate的区别

    2024-04-25 07:48:02       17 阅读
  5. C脚本实现Wincc单按钮启动/停止

    2024-04-25 07:48:02       30 阅读
  6. 表单插件——jquery.form.js

    2024-04-25 07:48:02       15 阅读