STM32F407定时器输入捕获
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定时器输入捕获相关推荐
- 【STM32】【STM32CubeMX】STM32CubeMX的使用之七:定时器输入捕获实现超声波测距
文章目录 0.前言 1.硬件设计 1.1.超声波模块 1.2.STM32L151 2.CubeMX配置 3.软件设计 下载工程文件: https://gitee.com/Joseph_Coop ...
- STM32-通用定时器-输入捕获
1.概述 前面,我们介绍了STM32F1的通用定时器作为PWM输出的使用方法,这一章我们向大家介绍通用定时器作为输入捕获的使用.在本章中,我们将用TIM5的通道的通道1(PA0)来做输入捕获, 捕获 ...
- STM32笔记 (十三)定时器输入捕获(利用定时器捕获高电平时间)
简介 定时器的输入捕获可以用来测量脉冲宽度与PWM的输入测量,可以通过设置检测不同的跳变边沿,来实现对高低电平的计时捕获 框图 由图可知,初始化定时器进行输入捕获有以下步骤: 开启时钟,配置定时器的G ...
- stm32 同一个定时器输入捕获测量双通道PWM占空比
stm32 cubemx 输入捕获 stm32 同一个定时器输入捕获测量双通道PWM占空比 . 最近在做蓝桥杯嵌入式的真题,发现在使用TIM3的通道1和2同时测量PWM1和PWM2的占空比时,硬件是不 ...
- STM32定时器输入捕获
5.STM32定时器输入捕获 前言: STM32定时器输入捕获简介 STM32的输入捕获可以用于捕获脉宽, 测量时间 . 例如超声波测距模块就是需要用输入捕获功能, 通过测量输入脉冲的高电平脉宽 , ...
- STM32定时器-输入捕获
定时器-输入捕获 输入捕获工作过程 一句话总结工作过程:通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的捕获/比较 ...
- STM32F407-高级定时器输入捕获功能
要用到的函数如上图. 以捕获高电平为例,会出现上面两种情况:1.在一次溢出前高电平已经结束:2.在N次溢出后高电平才结束. 高电平持续时间的计算原理:以STM32F407的定时器1为例,定时器1的时钟 ...
- GD32定时器输入捕获例程
官方的例程 /**\brief configure the GPIO ports\param[in] none\param[out] none\retval none*/ void gpio_conf ...
- STM32之通用定时器输入捕获模式
#include "stm32f10x.h" /* RCC时钟配置 */ void RCC_config() { ErrorStatus HSEStartUpStatus; /* ...
最新文章
- logback:用slf4j+logback实现多功能日志解决方案
- boost::fusion::copy用法的测试程序
- mysql 不匹配的_mysql – 如何从两个表中获取不匹配的记录
- C#-常用对象-思维导图
- # 设置当前标注样式_CAD图纸不会标注?模型空间如何标注,标注样式设置规范解析...
- 求数组中最大值和次大值
- poj 1656 Counting Black
- Testin 云测:一个典型的产业互联网创业样本
- 一个简洁美观的静态网页登陆页面(css+html)
- 计算机无法识别点读笔,点读笔插电脑上不识别
- uni-app使用多彩色图标,阿里图库
- C语言:约瑟夫环(简单版)
- java数字时钟代码,Android自定义数字时钟代码,android自定义时钟,package jp.t
- Visual Studio 2019重新安装问题
- sse——字符串数组
- java 编写方法和属性,Java类属性及方法的定义
- web测试 (四)兼容性测试
- Python编程学习第七课之Python的数据类型
- htc hd2刷android,一代神机HTC HD2成功刷入Android 6.
- 一个牛B程序员的奋斗
热门文章
- 正交采样 matlab,MATLAB数值积分(正交)
- 计算机和通讯技术对我们生活的改变,信息技术的发展,带来了哪些方面的改变?...
- 手把手教你将矩阵画成张量网络图
- 与设备无关的位图一、DIB 文件格式
- 【Docker】Get Started with Solace
- FIR 线性相位系统 最小相位系统 滤波器延迟
- 操作系统-进程调度实验报告
- 5秒解决:VMware Workstation 与 Hyper-V 不兼容。请先从系统中移除 Hyper-V 角色,然后再运行 VMware Workstation。
- NetSuite2.0 Restlet脚本 货品新增
- DCloud之Android原生工程配置