27 基本定时器

27.1 定时器分类

STM32F1 系列中,除了互联型的产品,共有8 个定时器,分为基本定时器,通用定时器和高级定时器。

基本定时器:TIM6 和TIM7 是一个16 位的只能向上计数的定时器,只能定时,没有外部IO。

通用定时器TIM2/3/4/5 是一个16 位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,每个定时器有四个外部IO。

高级定时器TIM1/8 是一个16位的可以向上/下计数的定时器,可以定时,可以输出比较,可以输入捕捉,还可以有三相电机互补输出信号,每个定时器有8 个外部IO。

27.2 基本定时器功能框图讲解

27.2.1 定时器时钟源
定时器时钟源TIMxCLK(即内部时钟CK_INT),经APB1 预分频器后分频提供,如果APB1 预分频系数等于1,则频率不变,否则频率乘以2,库函数中APB1 预分频的系数是2,即PCLK1=36M,所以定时器时钟TIMxCLK=36*2=72M。

27.2.2 预分频器
定时器时钟经过PSC 预分频器之后,即CK_CNT,用来驱动计数器计数。PSC 是一个16 位的预分频器,可以对定时器时钟TIMxCLK 进行0~65535 之间的任何一个数进行分频。具体计算方式为:CK_CNT=TIMxCLK/(PSC+1)。
27.2.3 计数器
计数器CNT 是一个16 位的计数器,只能往上计数,最大计数值为65535。当计数达到自动重装载寄存器的时候产生更新事件,并清零从头开始计数。
27.2.4 自动重装载寄存器
自动重装载寄存器ARR 是一个16 位的寄存器,这里面装着计数器能计数的最大数值。当计数到这个值的时候,如果使能了中断的话,定时器就产生溢出中断。
27.2.5 定时时间的计算
定时器的定时时间等于计数器的中断周期乘以中断的次数。计数器在CK_CNT 的驱动下,计一个数的时间则是CK_CLK 的倒数,等于:1/(TIMxCLK/(PSC+1)),产生一次中断的时间则等于:1/CK_CLK * (ARR+1)。如果在中断服务程序里面设置一个变量time,用来记录中断的次数,那么就可以计算出我们需要的定时时间等于:1/CK_CLK * (ARR+1)*time。

27.3 定时器初始化结构体详解
在HAL 库函数头文件stm32f1xx_hal_tim.h 中对定时器外设建立了四个初始化结构体,基本定时器只用到其中一个即TIM_TimeBaseInitTypeDef。

基本定时器初始化结构体有5 个成员,只需设置其中两个就可以。

typedef struct {
uint32_t Prescaler; // 预分频器
uint32_t CounterMode; // 计数模式
uint32_t Period; // 定时器周期
uint32_t ClockDivision; // 时钟分频
uint32_t RepetitionCounter; // 重复计算器
} TIM_TimeBaseInitTypeDef;

(1) Prescaler:定时器预分频器设置,时钟源经该预分频器才是定时器时钟,它设定TIMx_PSC寄存器的值。可设置范围为0 至65535,实现1 至65536 分频。
(2) CounterMode:定时器计数方式,可是在为向上计数、向下计数以及三种中心对齐模式。基本定时器只能是向上计数,即TIMx_CNT 只能从0 开始递增,并且无需初始化。
(3) Period:定时器周期,实际就是设定自动重载寄存器的值,可设置范围为0 至65535。
(4) ClockDivision:时钟分频,设置定时器时钟CK_INT 频率与数字滤波器采样时钟频率分频比,基本定时器没有此功能,不用设置。
(5) RepetitionCounter:重复计数器,属于高级控制寄存器专用寄存器位,利用它可以非常容易控制输出PWM 的个数。这里不用设置。

STM32F103 基本定时器 (P2MDA-KM4)相关推荐

  1. STM32F103基本定时器使用

      STM32F103单片机中定时器分为3种,高级定时器.通用定时器.基本定时器.   基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动.它们可以作为通用定时器提 ...

  2. STM32F103通用定时器使用

      STM32F103单片机中定时器分为3种,高级定时器.通用定时器.基本定时器.   通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成.它适用于多种场合,包括测量输入信号的脉冲长度( ...

  3. STM32F103高级定时器使用

      STM32F103单片机中定时器分为3种,高级定时器.通用定时器.基本定时器.   高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动.它适合多种用 ...

  4. STM32F103利用定时器编程实现输出一路PWM波形

    目录 一.PWM简介 二.STM32F1 PWM介绍 三.PWM输出配置步骤 四.实现代码 五.实现效果 六.参考资料 一.PWM简介 PWM是 Pulse Width Modulation 的缩写, ...

  5. STM32F103 - CubeMX 的使用实例详细(04.5)- STM32F103的 - 定时器设定详细解释 - 定时器相关的HAL接口函数 - 定时器的中断

    前言:本文介绍STM32 定时器中断控制的HAL 接口定义: 1 该驱动接口能实现的主要功能: 1.1 有哪些驱动 /**   ************************************ ...

  6. STM32 - CubeMX 的使用实例详细(04.1)- STM32F103的 - 定时器设定详细解释 - PWM波的产生 - 频率占空比的设定 - 软件代码分析

    前言:本文详细条例STM32 103定时器的设定 1 定时器简介 中等容量的STM32F103xx增强型系列产品包含1个高级控制定时器.3个普通定时器,以及2个看门 狗定时器和1个系统嘀嗒定时器. 下 ...

  7. STM32F103 TIM4定时器

    1.通用定时器(TIM) 通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成. 它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM). 使用定时 ...

  8. STM32F103高级定时器死区时间计算

    官方数据手册的说明不容易看懂,举的例子与我的应用场合也不一致,我使用的是72MHz的晶振,讲一讲我的死区时间是怎么算出来的. DT死区时间: TDTS为系统时钟周期时长: TDTG为系统周期时长乘以倍 ...

  9. STM32F103高级定时器死区时间的计算

    看了一些网上讲死区时间计算的教程,觉得讲述的不是很清楚,所以在此用我自己理解的方式讲述一遍,如有错误,请读者赐教. 死区时间的设置:由寄存器"TIM1和TIM8刹车和死区寄存器TIMX_BD ...

最新文章

  1. [原创]Gerrit中文乱码问题解决方案分享
  2. SWT让耗时的操作后台运行
  3. 互联网协议 — OAuth2 第三方授权协议
  4. Andoird --- Json 经典异常:org.json.JSONException: Unterminated string at character
  5. Vue.js 目录结构
  6. Cover the Tree(2020多校第二场C)
  7. poj 3660(floyd 变形)
  8. 图像处理-图像增强(三)
  9. redis 首次请求_Redis主从复制
  10. leetcode刷题:最大子序积
  11. SylixOS内存错误排查方法
  12. Bailian2796 Bailian3681 数字求和【入门】
  13. 数字货币交易系统_符合数字货币市场的量化交易系统
  14. 图片夹_【第8期】EHS大咖答疑解惑吊运事故的罪魁祸首之一:钢丝绳夹!不看不知道!...
  15. eve-ng:加载c7200 dynamips镜像
  16. java导出ppt_POI之PPT导出最简单实例
  17. k线图的分析小技巧以及买入卖出信号
  18. 中国足球有救了,因为这两个人已经成为中超新时代教练的一股清流
  19. 大数据时代的智能运维
  20. [转]常用网络协议分析工具

热门文章

  1. linux命令教程第六期
  2. SQL SERVER数据库备份与复制(4):让SQL SERVER自动备份方法一
  3. html中怎么写一个简单的tab,html中的tab功能如何实现?
  4. 高中信息技术html语言,高中信息技术《Python语言》模块试卷
  5. 热搜排序 半衰期的应用
  6. mysql VS oracle
  7. 有没有好用的文档翻译工具推荐?
  8. 网络:万维网(WWW)
  9. 通用Mapper的example实例使用
  10. oracle将其他字段类型改为clob类型方法