STM32F407定时器一共有14个。其中分为基本定时器、通用定时器、高级定时器。具体功能如上图所示。下面介绍下输入捕获模式。
输入捕获:通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变的时候,将当前的定时器的值(TIMx_CNT)存放到对应的捕获/比较寄存器里面,完成一次捕获.
下图是定时器原理图的输入捕获部分

第一部分:设置输入捕获滤波器,用来滤波的。信号从TI1输入,通过滤波,TI1F输出此信号,正常情况信号没有抖动,TI1F信号就等于TI1输入信号。
ICF[3:0]用来设置输入采样频率的数字滤波器长度,如ICF=0011;会在捕获到上升沿时,以fCK_INT的频率连续采样八次通道1的电平,若都为高电平,则说明这是一个有效的触发,就会触发捕获中断,这样就可以滤除那些高电平脉宽低于八个采样周期的脉冲信号,达到滤波得效果,若不做滤波处理,设置ICF=0000,只要检测到跳边沿,就触发捕获。

fDTS频率根据TIMx_CR1的CKD[1:0]设置。

第二部分:设置输入捕获极性:配置边沿检测器检测上升沿还是下降沿。
第三部分:设置输入捕获映射通道:通道一信号也可以映射在通道二上,同理通道二信号也可以映射到通道一上。

第四部分:设置输入捕获分频器,就是设置检测到几次跳变沿之后触发捕获。

第五部分:捕获到有效信号开启中断。

下面是标准库中的结构体和初始化函数。

void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
typedef struct
{uint16_t TIM_Channel; //捕获通道1-4   uint16_t TIM_ICPolarity; //捕获极性uint16_t TIM_ICSelection; //映射关系uint16_t TIM_ICPrescaler; //分频系数uint16_t TIM_ICFilter;  //滤波器
} TIM_ICInitTypeDef;
TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; 捕获通道选择通道一
TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; 设置为上升沿捕获
TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;  把通道一和TI1映射在一起
TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; 设置分频系数1分频
TIM5_ICInitStructure.TIM_ICFilter = 0x00; 不使用滤波器
TIM_ICInit(TIM5, &TIM5_ICInitStructure);

还可以独立设置捕获极性

void TIM_OCxPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);

获取通道捕获数值

uint32_t TIM_GetCapture1(TIM_TypeDef* TIMx);

输入捕获配置的一般步骤
① 初始化定时器和通道对应IO的时钟。
② 初始化IO口,模式为复用:GPIO_Init();
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
③设置引脚复用映射:
GPIO_PinAFConfig();
④初始化定时器ARR,PSC
TIM_TimeBaseInit();
⑤初始化输入捕获通道
TIM_ICInit();
⑥如果要开启捕获中断,
TIM_ITConfig();
NVIC_Init();
⑦使能定时器:TIM_Cmd();
⑧编写中断服务函数:TIMx_IRQHandler();

STM32F407定时器输入捕获相关推荐

  1. 【STM32】【STM32CubeMX】STM32CubeMX的使用之七:定时器输入捕获实现超声波测距

    文章目录 0.前言 1.硬件设计 1.1.超声波模块 1.2.STM32L151 2.CubeMX配置 3.软件设计   下载工程文件:   https://gitee.com/Joseph_Coop ...

  2. STM32-通用定时器-输入捕获

    1.概述 前面,我们介绍了STM32F1的通用定时器作为PWM输出的使用方法,这一章我们向大家介绍通用定时器作为输入捕获的使用.在本章中,我们将用TIM5的通道的通道1(PA0)来做输入捕获, 捕获 ...

  3. STM32笔记 (十三)定时器输入捕获(利用定时器捕获高电平时间)

    简介 定时器的输入捕获可以用来测量脉冲宽度与PWM的输入测量,可以通过设置检测不同的跳变边沿,来实现对高低电平的计时捕获 框图 由图可知,初始化定时器进行输入捕获有以下步骤: 开启时钟,配置定时器的G ...

  4. stm32 同一个定时器输入捕获测量双通道PWM占空比

    stm32 cubemx 输入捕获 stm32 同一个定时器输入捕获测量双通道PWM占空比 . 最近在做蓝桥杯嵌入式的真题,发现在使用TIM3的通道1和2同时测量PWM1和PWM2的占空比时,硬件是不 ...

  5. STM32定时器输入捕获

    5.STM32定时器输入捕获 前言: STM32定时器输入捕获简介 STM32的输入捕获可以用于捕获脉宽, 测量时间 . 例如超声波测距模块就是需要用输入捕获功能, 通过测量输入脉冲的高电平脉宽 , ...

  6. STM32定时器-输入捕获

    定时器-输入捕获 输入捕获工作过程 一句话总结工作过程:通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的捕获/比较 ...

  7. STM32F407-高级定时器输入捕获功能

    要用到的函数如上图. 以捕获高电平为例,会出现上面两种情况:1.在一次溢出前高电平已经结束:2.在N次溢出后高电平才结束. 高电平持续时间的计算原理:以STM32F407的定时器1为例,定时器1的时钟 ...

  8. GD32定时器输入捕获例程

    官方的例程 /**\brief configure the GPIO ports\param[in] none\param[out] none\retval none*/ void gpio_conf ...

  9. STM32之通用定时器输入捕获模式

    #include "stm32f10x.h" /* RCC时钟配置 */ void RCC_config() {  ErrorStatus HSEStartUpStatus; /* ...

最新文章

  1. logback:用slf4j+logback实现多功能日志解决方案
  2. boost::fusion::copy用法的测试程序
  3. mysql 不匹配的_mysql – 如何从两个表中获取不匹配的记录
  4. C#-常用对象-思维导图
  5. # 设置当前标注样式_CAD图纸不会标注?模型空间如何标注,标注样式设置规范解析...
  6. 求数组中最大值和次大值
  7. poj 1656 Counting Black
  8. Testin 云测:一个典型的产业互联网创业样本
  9. 一个简洁美观的静态网页登陆页面(css+html)
  10. 计算机无法识别点读笔,点读笔插电脑上不识别
  11. uni-app使用多彩色图标,阿里图库
  12. C语言:约瑟夫环(简单版)
  13. java数字时钟代码,Android自定义数字时钟代码,android自定义时钟,package jp.t
  14. Visual Studio 2019重新安装问题
  15. sse——字符串数组
  16. java 编写方法和属性,Java类属性及方法的定义
  17. web测试 (四)兼容性测试
  18. Python编程学习第七课之Python的数据类型
  19. htc hd2刷android,一代神机HTC HD2成功刷入Android 6.
  20. 一个牛B程序员的奋斗

热门文章

  1. 正交采样 matlab,MATLAB数值积分(正交)
  2. 计算机和通讯技术对我们生活的改变,信息技术的发展,带来了哪些方面的改变?...
  3. 手把手教你将矩阵画成张量网络图
  4. 与设备无关的位图一、DIB 文件格式
  5. 【Docker】Get Started with Solace
  6. FIR 线性相位系统 最小相位系统 滤波器延迟
  7. 操作系统-进程调度实验报告
  8. 5秒解决:VMware Workstation 与 Hyper-V 不兼容。请先从系统中移除 Hyper-V 角色,然后再运行 VMware Workstation。
  9. NetSuite2.0 Restlet脚本 货品新增
  10. DCloud之Android原生工程配置