1、TIM简介

•TIM(Timer)定时器

•定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断

•16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s(1/(72/2^16*2^16))  [2^16=65536]的定时

•不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能

•根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型

2、定时器类型

类型

编号

总线

功能

高级定时器

TIM1、TIM8

APB2

拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能

通用定时器

TIM2、TIM3、TIM4、TIM5

APB1

拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能

基本定时器

TIM6、TIM7

APB1

拥有定时中断、主模式触发DAC的功能

高级定时器主要应用:三相无刷电机驱动设计。

STM32F103C8T6定时器资源:TIM1、TIM2、TIM3、TIM4

3、基本定时器结构图

实际分频系数=预分频器的值+1

UI(更新中段)触发中断    U↓(更新事件)不触发中断,但触发内部其他电路工作

硬件自己操作不需要中断,把更新事件通过主模式映射到TRGO,然后通过TRGO直接触发DAC

 4、通用定时器结构图

5、高级定时器

6、定时器中断基本结构

运行控制:控制寄存器的一些位,启动停止、向上或向下计数等。主要控制时基单元

内外时钟源选择:时基单元左边的图块。

7、预分频器时序图

•计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)

预分频缓存器(影子寄存器)作用:当突然改变分频值,必须等到更新事件之后,预分频寄存器的值才会被传到缓冲寄存器里面,才能生效。

8、计数器时序

•计数器溢出频率:CK_CNT_OV = CK_CNT / (ARR + 1)  = CK_PSC / (PSC + 1) / (ARR + 1)

其中当更新中断标志为1,申请中断,然后响应后,手动清0;

溢出时间取频率倒数。

9、计数器无预装时序

 10、计数器有预装时序

 11、RCC时钟树

以72MHZ为界限,左边都是时钟产生的电路,右边是时钟分配的电路

其中外部比内部RC振荡器稳定

定时器中断(内部时钟)

12、主函数

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Timer.h"uint16_t Num;
int main(void)
{OLED_Init();Timer_Init();while (1){OLED_ShowNum(1, 1, Num, 5);OLED_ShowNum(2,1,TIM_GetCounter(TIM2),5);}
}void TIM2_IRQHandler ()
{if (TIM_GetITStatus(TIM2,TIM_IT_Update)==SET )//获取中断标志位{Num++;TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清楚TIM2中断标志位}
}

Timer.c

#include "stm32f10x.h"                  // Device headervoid Timer_Init(void)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启APB1时钟函数TIM_InternalClockConfig(TIM2);//选择时基单元的时钟TIM_TimeBaseInitTypeDef TIM_TimeBaseStructInit;TIM_TimeBaseStructInit.TIM_ClockDivision=TIM_CKD_DIV1 ;//选择1分频,主要作用,滤波处理TIM_TimeBaseStructInit.TIM_CounterMode=TIM_CounterMode_Up;//向上计数TIM_TimeBaseStructInit.TIM_Period = 1000 -1;//周期,ARR自动重装器的值(同PSC取值范围0~65535)TIM_TimeBaseStructInit.TIM_Prescaler= 7200 -1;//PSC预分频器的值TIM_TimeBaseStructInit.TIM_RepetitionCounter=0;//重复计数器的值(高级定时器才有用)TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructInit);//初始化时基单元TIM_ClearFlag(TIM2,TIM_IT_Update);//清除标志位,防止一上电就进入中断TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//开启更新中断到NVICNVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//优先级分组NVIC_InitTypeDef NVIC_Initstructure;NVIC_Initstructure.NVIC_IRQChannel= TIM2_IRQn ;//中断通道NVIC_Initstructure.NVIC_IRQChannelCmd= ENABLE;NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority= 2;NVIC_Initstructure.NVIC_IRQChannelSubPriority= 1; NVIC_Init(&NVIC_Initstructure);//启动定时器TIM_Cmd(TIM2,ENABLE);}//中断函数//void TIM2_IRQHandler ()
//{
//  if (TIM_GetITStatus(TIM2,TIM_IT_Update)==SET )//获取中断标志位
//  {
//      TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清楚TIM2中断标志位
//  }
//}

13、Proteus仿真

4. 定时器(TIM)(定时器计数)相关推荐

  1. STM32F4 定时器TIM(1)定时器控制输出【使用库函数】

    高级时钟控制定时器TIM1&TIM8简介: STM32F4的高级控制定时器包含一个自动重装载计数器,计数器的输入是一个被预分频的系统时钟. 这个定时器有多种用途,包括车辆输入信号长度(输入捕获 ...

  2. STM32学习笔记(四)丨TIM定时器及其应用(定时中断、内外时钟源选择)

    本篇文章包含的内容 一.TIM 定时器 1.1 TIM 定时器简介 1.2 TIM 定时器类型及其工作原理简介 1.2.1 基本定时器工作原理及其结构 1.2.2 通用定时器工作原理及其结构 1.2. ...

  3. STM32单片机:定时器TIM输出PWM波

    学习32单片机过程中使用的工具:MDK Keil5 + 正点原子精英版(STM32F103ZET6)+ STM32CubeMX + HAL开发 一.PWM的产生原理 关于PWM的产生原理网上有很多教程 ...

  4. STM32学习笔记(六)丨TIM定时器及其应用(输入捕获丨测量PWM波形的频率和占空比)

    本篇文章包含的内容 一.输入捕获 1.1 输入捕获简介 1.2 输入捕获通道的工作原理 1.3 输入捕获的主从触发模式 1.4 输入捕获和PWMI结构 二.频率的测量方法 2.1 测频法 2.2 测周 ...

  5. 嵌入式接口之TIM定时器与NVIC的STM32模板库函数的一些解释

    文章目录 前言 定时基本方法 STM32的时钟 STM的定时器TIM 通用定时器的结构 时基单元 例子讲解 TIM_TimeBaseInit TIM_TimeBaseInitTypeDef TIM_C ...

  6. 【STM32】定时器TIM触发ADC采样,DMA搬运到内存(超详细讲解)

    TIM+ADC+DMA原理 一般情况下,当我们需要进行采样的时候,需要用到ADC.例如:需要对某个信号进行定时采样(也就是隔一段时间,比如说2ms). 本文提供的解决方案是:使用ADC的定时器触发AD ...

  7. stm32初学之定时器TIM的基本定时功能以及介绍

    文章目录 前言 一.定时器基本介绍以及定时器原理图 1.定时器基本介绍 2.定时器原理图 3.定时器配置 二.定时器计算 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一.定时器基本介绍以及定 ...

  8. STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结

    STM32定时器配置(TIM1.TIM2.TIM3.TIM4.TIM5.TIM8)高级定时器+普通定时器,定时计数模式下总结 文章结构: --> 一.定时器基本介绍 --> 二.普通定时器 ...

  9. 4.基于STM32CubeMX使用TIM定时器

    1.基础定时器 基础定时器相关函数 HAL_TIM_Base_Init(TIM_HandleTypeDef *htim); 定时器初始化,设置各种参数和连续定时模式 HAL_TIM_Base_MspI ...

  10. 【STM32】TIM定时器

    介绍: 定时器由可编程预分频器驱动的16位自动装载计数器构成. 定时器最基本功能:定时 定时发送 USART 数据 定时采集 AD 数据等 定时器与 GPIO 结合 测量输入信号脉冲宽度 产生输出波形 ...

最新文章

  1. 赠书 | 2021年中国数字政府发展指数排名出炉!你的家乡名列第几?
  2. Spartan-6的I/O时钟缓冲器
  3. 牛客网【每日一题】4月17日题目精讲 华华给月月准备礼物
  4. 求100以内质数或者更多
  5. jq php异步上传图片,php+jquery Ajax异步上传图片(ajaxSubmit)实例_PHP教程
  6. STC单片机 命名规则,最小系统 图示
  7. CSS:淘宝商品展示样式
  8. Java 封装、继承、多态的理解
  9. 锂电池一级保护 二级保护
  10. 怎么制作GIF高清动态表情包
  11. 愚人节将至,怎么恶搞最过瘾
  12. 0x0000050蓝屏srvsys_蓝屏代码0x00000050的原因及解决方法
  13. vba传值调用_VBA传递参数步骤
  14. 财报季 | 涂鸦智能Q2营收翻倍,股价却再创新低,高瓴资本开始亏钱
  15. 凉了7年的快播,登上排行榜第一
  16. keil 的bug日记
  17. 零差云控(zeroerr)erob80 I型开箱
  18. 哇嘎显示等待无服务器,vagaa不能用了【处理技巧】
  19. Win7 下安装 VC6 和SP5
  20. windows XP 注册表

热门文章

  1. 非常好看notepad++主题和字体
  2. 【Unity】Mac安装Unity后启动黑屏
  3. 腾讯安全发布《数据安全解决方案白皮书》
  4. 计算机专业怎么选高考312,新高考312模式高中生该如何选科
  5. OGC标准介绍 18
  6. Linux使用scp拷贝多个文件到远程服务器
  7. 某知名OA高版本getshell思路(附部分脚本)
  8. 【记录-EXCEL不同表数据匹配】
  9. android 3d flip动画,3D Flip Board
  10. HTML弹出对话框页面