简介

在控制,电子领域中,时常需要定时控制,延时控制或者对某件事进行计数,如洗衣机的定时洗衣等等定时控制,载入通过对外部的脉冲进行计数来测量速度等

资源介绍

STM32一共有三种定时器,总共有14个定时器。
高级定时器 TIM1、TIM8 。
通用定时器 TIM2、TIM5、TIM3、TIM4,TIM9~TIM14 , 其中2、5是32位定时器计数范围更大精度更高,3、4功能上与2、5一样都可以产生DMA请求。TIM9~TIM14相对上面两类通用定时器功能上要少一些。
基本定时器 TIM6、TIM7 没有捕获等通道所以相对以上两种定时器就比较基础一些

定时器功能特点描述

1.16位递增、递减、递增/递减自动重载计数器。

2.16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数 介于 1 到 65536 之间。3.多达 4 个独立通道,可用于:输入捕获,输出比较,PWM 生成(边沿和中心对齐模式),单脉冲模式输出4. 发生如下事件时生成中断/DMA 请求:①更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)②触发事件:计数器启动、停止、初始化或通过内部/外部触发计数③输入捕获④输出比较⑤断路输入

二.通用定时器:

  ●TIM2-TIM51.(TIM3,TIM4)16位或者(TIM2,TIM5)32位递增、递减和递增/递减自动重载计数器。2.16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数介 于 1 到 65536 之间。3.多达 4 个独立通道,可用于:输入捕获,输出比较,PWM 生成(边沿和中心对齐模式),单脉冲模式输出4.发生如下事件时生成中断/DMA 请求:①更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)②触发事件:计数器启动、停止、初始化或通过内部/外部触发计数③输入捕获④输出比较●TIM9-TIM141.16 位自动重载递增计数器(属于中等容量器件)。2.16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数 介于 1 和 65536 之间。3.多达 2个独立通道,可用于:输入捕获,输出比较,PWM 生成(边沿和中心对齐模式),单脉冲模式输出4.发生如下事件时生成中断/DMA 请求:①更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)②触发事件:计数器启动、停止、初始化或通过内部/外部触发计数③输入捕获④输出比较

三.基本定时器:

 1.16 位自动重载递增计数器 2.16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数 介于 1 和 65536 之间 3.用于触发 DAC 的同步电路 4.发生如下更新事件时会生成中断/DMA 请求:计数器上溢

模式介绍

计数模式

  1. 递增计数模式

在递增计数模式下,计数器从 0 计数到自动重载值,然后重新从 0 开始计数并生成计数器上溢事件。
2. 递减计数模式

在递减计数模式下,计数器从自动重载值开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器下溢事件。
3.中心对齐模式(递增/递减计数)

在中心对齐模式下,计数器从 0 开始计数到自动重载值 — 1,生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从
0 开始重新计数。
————————————————
版权声明:本文为CSDN博主「嵌入式开发__」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010001130/article/details/77828139
文字叙述:上面首先是时钟来源,A,内部时钟(CK_INT),来源于APB1的倍频,B,外部时钟TIMx_ETR,C,定时器时钟的级联;然后经过使能,向上/向下计数方式,形成CK_PSC,再经过PSC预分频器分频形成CK_CNT,定时器计数时钟。1)对于定时器功能,对自动重装载寄存器设定初值,然后计数器CNT寄存器向上或者向下溢出后,产生更新中断时间。2)对于输入捕获,假设通道1,先进行输入滤波,以及边沿检测,然后输出到IC1,进行预分频,就是对来的脉冲多少个脉冲检测一次,一般是不分频,一次脉冲检测一次,当捕获到一个上升沿,可以记录下此时的定时器的值,也可以置零,然后下一次边沿到来,则记下此时的值,记一个脉冲,然后可以计算它的宽度,以及脉冲的个数。3)输出比较:预装载某值到输出比较寄存器当中,当计数器的值大于了该值得时候,输出假设高电平,小于该值得时候输出低电平,这样可以形成PWM波,用自动重装载寄存器的值作为整个周期,用比较寄存器的值作为脉冲宽度,从而可以通过调节周期(也可以叫频率),也可以调节脉宽。
以上框图大致分为4个部分:

时钟来源CK_PSC可以由RCC的内部时钟分频得到定时器的TIMx_ETR引脚得到ITR0~4是由其他定时器通过TRGO输出,定时器级联得到由定时器TIMx_Ch1等引脚外部产生TI1FP1、TI2FP2,产生
时基单元


3. 功能引脚输出

通过TIMx_CH1等引脚触发一定的功能
通道引脚
通过TIMx_CH1等引脚输出PWM波等等

定时器中断



常用库函数

注意在stm32f4系列中时钟频率默认是84MHZ即定时时间与分屏之应按照这个屏率计算
如定时1s 计数值10000 分频值 8400

void Time1_Init(void)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;/* 1. 使能时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);TIM_DeInit(TIM1); //TIME1与TIME8挂在在APB2总线上
//配置定时器数值,,分屏,,计数值TIM_TimeBaseStructure.TIM_Period = (5000)-1;// 计数值0~9999 计数10000次为一秒  决定定时时间  PLL_M==8才行TIM_TimeBaseStructure.TIM_Prescaler =16800-1;//预分频值    自加1   84MHZ频率  进行8400预分频  分频后为10000HZ//TIM_TimeBaseStructure.TIM_ClockDivision = 0;//f407不支持TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//计数模式///向上技术TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);//配置定时器终端触法方式    //时间更新TIM_ITConfig(TIM1,TIM_IT_Update, ENABLE);//配置定时器中断优先级NVIC_InitStructure.NVIC_IRQChannel =  TIM1_UP_TIM10_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);//使能定时器工作TIM_Cmd(TIM1, ENABLE);
}void TIM1_UP_TIM10_IRQHandler(void)//time1与time10共享中断函数
{if(SET==TIM_GetITStatus(TIM1,TIM_IT_Update)){PFout(10)^=1;TIM_ClearITPendingBit(TIM1,TIM_IT_Update);}if(SET==TIM_GetITStatus(TIM10,TIM_IT_Update)){PFout(10)^=1;TIM_ClearITPendingBit(TIM10,TIM_IT_Update);}}

stm32定时器详解相关推荐

  1. STM32 定时器详解

    STM32 定时器详解 吃了一个猛亏,自己理解花了大半天时间,结果一看代码发现巨简单 算了,把自己理解的放上来吧 目录 STM32 定时器详解 前言 一.定时器种类和区分 二.时钟源 三.计数过程 3 ...

  2. STM32定时器详解——TIM详解

    TIM简介 1.TIM (Timer)定时器 2.定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 3.16位计数器.预分频器.自动重装寄存器的时基单元,在72MHz计数时4.钟下可以实 ...

  3. STM32定时器详解及简述

    -------------------中断简述-------------------- 中断简述:当一个事件A打断主事件运行时,会执行A事件,执行完A事件后回来继续执行主事件,当在执行A事件,又产生新 ...

  4. STM32的定时器详解(嵌入式学习)

    STM32的定时器详解 0. 前言 1. Systick定时器 概念 工作原理 时钟基准 Systick练习 2. HAL_Delay函数分析 3. 定时器 基本概念 定时器分类 定时器组成 计数器 ...

  5. Jmeter性能测试工具Timer定时器详解

    jmeter提供了很多元件,帮助我们更好的完成各种场景的性能测试,其中,定时器(timer)是很重要的一个元件,jemter提供了9种定时器,下面一一介绍: 一.定时器的作用域 1.定时器是在每个sa ...

  6. stm32位操作详解

    stm32位操作详解 STM32位操作原理 思想:把一个比特分成32位,每位都分配一个地址,这样就有32个地址,通过地址直接访问. 位操作基础 位运算 位运算的运算分量只能是整型或字符型数据,位运算把 ...

  7. STM32基础定时器详解

    目录 01.定时器介绍 02.时钟源 03.时基单元 04.计数模式 4.1.向上计数模式 4.2.向下计数模式 4.3.中央对齐(向上/向下计数模式) 05.基础定时代码 定时器最基本的功能就是定时 ...

  8. STM32 ADC详解

    目录 01.ADC简介 02.STM32的ADC外设 03.STM32ADC框图讲解 04.触发源 05.转换周期 06.数据寄存器 07.中断 08.电压转换 09.电路图设计 10.代码设计 01 ...

  9. STM32 DAC详解

    目录 01.DAC简介 02.DAC转换 03.功能说明 04.DAC输出电压 05.代码配置 上一篇介绍了<STM32ADC详解>,既然有模拟转数字的ADC模块,那么就必然有数字转模拟的 ...

最新文章

  1. php扩展swoole安装,php 安装swoole扩展
  2. 北京赛区总结,以及。。。
  3. RDLC 2010设计器的数据源无法找到静态类作为数据源
  4. python列表操作函数大全_Python列表操作函数
  5. java程序员保持天天快乐的6个习惯
  6. 信息系统项目管理师-信息系统成本管理核心知识点思维脑图
  7. 写在前面,白话 Yaf 探秘与深入
  8. C语言序列是否有序、序列中删除指定数字、序列中整数去重、有序序列合并问题
  9. 关于Vue页面JS+JQ无法调用页面方法与data
  10. 关于企业应用SAP成本管理模式与方法的一些思考
  11. 阿里云部署RSSHub踩坑笔记
  12. UDS 安全认证29服务概述
  13. 【BZOJ 4987】Tree
  14. Android 输入法键盘的隐藏和显示
  15. 简单的了解一下MySQL连接查询
  16. 三、入门Python第三课
  17. C语言家谱管理程序,C语言二叉树家谱管理系统.doc
  18. 输入现在的日期,输出明天的日期
  19. python常用re正则表达式大全,查找指定内容
  20. Mysql分组取每组排序后第一个

热门文章

  1. Matlab 读取文件夹下所有文件(*.mat *.txt等)
  2. 电脑桌面出现的同步空间如何删除?删除桌面百度网盘同步空间图标
  3. 物理实验-迈克尔逊干涉仪的使用与调整 实验报告 重庆理工大学
  4. Delphi 操作Windows系统睡眠-防止系统/电脑 进入睡眠或关闭显示器
  5. 【Codecs系列】之视频编码中的块效应、振铃效应和呼吸效应分析
  6. 易语言大漠多线程易语言大漠多线程
  7. 大神李沐被爆离职!投身大模型创业,GitHub项目已开
  8. 库兹韦尔指数 “加速回报法则 “的概念
  9. python获取图像坐标点
  10. 磺丁基醚环糊精盐内水相/桂利嗪/EGF/吲哚美辛-环糊精/黄芩苷β-环糊精包合物脂质体制备