STM32 输入捕获功能

本文将介绍通过STM32的定时器输入捕获,如果对定时器不太熟悉的同学可以看下之前的文章《STM32基础定时器详解》,关于定时器的基础功能不再详解。下文将讲解timer1的捕获功能。

01、STM32捕获功能

从STM32的定时器框图中看

①部分基础定时器模块,已经在《STM32基础定时器详解》讲解过了。

②部分捕获/对比通道模块,已经在《定时器的PWM功能》讲解过了。

③部分是本文的重点,输入捕获模块。

从上图可以看出定时器1共有4个输入捕获通道。

下文以定时器1的捕获通道2为例讲解。

首先确定下对应的GPIO,从STM32F207数据手册的Alternatefunction mapping看出,定时器1通道2对应的GPIO有PA9和PE11,下文将使用PE11。

02、输入捕获过程

输入阶段采样对应的对输入TIx,去产生滤波后的信号TIxF。然后极性选择边沿检测器产生一个信号(TIxFPx),这个信号可以被用于服务模式控制器的触发输入或在作为捕获命令。在捕获寄存器前被预分频。

输出阶段产生一个中间波形,被用于参考:OCxRef(高电平有效)。链地末尾末尾决定极0性。捕获/比较通道1 主电路。

①处主要是设置输入捕获滤波器,输入阶段采样对应的对输入TIx,去产生滤波后的信号TIxF。一般应用场景不做滤波处理,设置TIMx_CCMR1的ICF[3:0]=0000,只要采集到上升沿,就触发捕获。

②处主要是设置输入捕获极性,设置TIMx_CCER的CC1P或CC1NP位,如果通道配置为输出,为0表示高电平有效,为1表示低电平有效;如果配置成输入模式,该位选择是IC1还是IC1的反相信号作为触发或捕获信号。为0,表示不反相,为1表示反相。

③处设置输入捕获映射通道,设置TIMx_CCMR1的CC1S[1:0]位,这2位定义通道的方向(输入/输出),及输入脚的选择:

0o:CC1通道被配置为输出;

01:CC1通道被配置为输入,IC1映射在Tl1上;

10: CC1通道被配置为输入,IC1映射在TI2上;

11:CC1通道被配置为输入,IC1映射在TRC上。此模式仅工作在内部触发器输入被选中时(由TIMx_SMCR寄存器的TS位选择)。

④处设置输入捕获分频器,TIMx_CCMR1的ICPS[1:0]位和TIMx_CCER的CC1E位。

TIMx_CCMR1的ICPS[1:0]这2位定义了CC1输入(IC1)的预分频系数。一旦CC1E='O(TIMx_CCER寄存器中),则预分频器复位。

00:无预分频器,捕获输入口上检测到的每一个边沿都触发一次捕获;

01:每2个事件触发一次捕获;

10:每4个事件触发一次捕获;

11:每8个事件触发一次捕获。

TIMx_CCER的CC1E位

CC1通道配置为输出:

0:关闭一OC1禁止输出。

1:开启一OC1信号输出到对应的输出引脚。

CC1通道配置为输入:

该位决定了计数器的值是否能捕获入TIMx_CCR1寄存器。

0:捕获禁止;

0:捕获使能。

最后我们还需要设置中断,使系统快速响应输入捕获信号,主要是这只TIMx_DIER寄存器,如下:

使能允许更新中断和通道2中断

03、代码配置

设置GPIO复用

1/* TIM1 channel 2 pin (PE.11) configuration*/ 2GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; 3GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF; 4GPIO_InitStructure.GPIO_Speed =GPIO_Speed_100MHz; 5GPIO_InitStructure.GPIO_OType =GPIO_OType_PP; 6GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_NOPULL; 7GPIO_Init(GPIOE, &GPIO_InitStructure); 8 9/*Connect TIM pins to AF2 */ 10GPIO_PinAFConfig(GPIOE,GPIO_PinSource11, GPIO_AF_TIM1);

设定定时基础功能

1/* Time base configuration */ 2TIM_TimeBaseStructure.TIM_Period =0XFFFF; 3TIM_TimeBaseStructure.TIM_Prescaler = (uint16_t)((SystemCoreClock) / 1000000) -1; 4TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV1; 5TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up; 6 7TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);

配置通道2

1TIM_ICInitStructure.TIM_Channel =TIM_Channel_2; 2TIM_ICInitStructure.TIM_ICPolarity =TIM_ICPolarity_Falling; 3TIM_ICInitStructure.TIM_ICSelection =TIM_ICSelection_DirectTI; 4TIM_ICInitStructure.TIM_ICPrescaler =TIM_ICPSC_DIV1; 5TIM_ICInitStructure.TIM_ICFilter =0x0; 6 7TIM_ICInit(TIM1, &TIM_ICInitStructure);

使能中断

1/* Enable the TIM1 global Interrupt*/ 2NVIC_InitStructure.NVIC_IRQChannel =TIM1_CC_IRQn; 3NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0; 4NVIC_InitStructure.NVIC_IRQChannelSubPriority =1; 5NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE; 6NVIC_Init(&NVIC_InitStructure); 7 8NVIC_InitStructure.NVIC_IRQChannel =TIM1_UP_TIM10_IRQn; 9NVIC_InitStructure.NVIC_IRQChannelSubPriority= 2; 10NVIC_Init(&NVIC_InitStructure); 11 12/* Enablethe CC2 Interrupt Request */ 13TIM_ITConfig(TIM1,TIM_IT_CC2|TIM_IT_Update, ENABLE);

使能定时器1

1/* TIM enable counter */ 2TIM_Cmd(TIM1, ENABLE);

下载代码验证测试

硬件和软件开源地址:

https://github.com/strongercjd/STM32F207VCT6

点击查看本文所在的专辑,STM32F207教程

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

STM32 PWM输出

文将介绍通过STM32的定时器输出PWM,如果对定时器不太熟悉的同学可以看下之前的文章《STM32基础定时器详解(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzIxNTg1NzQwMQ%3D%3D%26mid%3D2247