TIM输入捕获

由于输入捕获与输出比较公用同一路定时器通道,所以一路通道上不能同时使用IC和OC。

测频法适用于高频信号,测周法适用于低频信号。

滤波器用来滤除输入信号的噪声。配置了从模式后,一旦接收到要捕捉的边沿,硬件自动触发从模式电路,减少软件资源的使用。一通道与二通道是交叉相连的,即边沿检测器可以生成两个触发信号,同时用于触发另一个通道,因此可以同时用两个通道捕获一个输入信号。

双通道同时捕获一个输入信号:占空比=CCR2/CCR1

#include "stm32f10x.h"                  // Device header

/**
  * 函    数:输入捕获初始化
  * 参    数:无
  * 返 回 值:无
  */
void IC_Init(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//开启定时器2的时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructrue;
	GPIO_InitStructrue.GPIO_Mode=GPIO_Mode_IPU;
	GPIO_InitStructrue.GPIO_Pin=GPIO_Pin_6;
	GPIO_InitStructrue.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructrue);//初始化PA0引脚为上拉输入

	TIM_InternalClockConfig(TIM3);//选择内部时钟源作为时钟/8MHz
	
	TIM_TimeBaseInitTypeDef TimeBaseInitStructrue;
	TimeBaseInitStructrue.TIM_ClockDivision= TIM_CKD_DIV1;//不分频
	TimeBaseInitStructrue.TIM_CounterMode= TIM_CounterMode_Up;//向上计数模式
	TimeBaseInitStructrue.TIM_Period= 65536-1;//ARR
	TimeBaseInitStructrue.TIM_Prescaler= 72-1;//分频值//PSC
	TimeBaseInitStructrue.TIM_RepetitionCounter= 0;//重复计数功能,此处不涉及
	TIM_TimeBaseInit(TIM3,&TimeBaseInitStructrue);//读取结构体
	
	/*输入捕获配置*/
	TIM_ICInitTypeDef TIM_ICInitStructrue;
	TIM_ICInit(TIM3,&TIM_ICInitStructrue);
	TIM_ICInitStructrue.TIM_Channel=TIM_Channel_1;//选择通道1
	TIM_ICInitStructrue.TIM_ICFilter=0xF;//滤波器
	TIM_ICInitStructrue.TIM_ICPolarity=TIM_ICPolarity_Rising;//上升沿触发
	TIM_ICInitStructrue.TIM_ICPrescaler=TIM_ICPSC_DIV1;//分频参数
	TIM_ICInitStructrue.TIM_ICSelection=TIM_ICSelection_DirectTI;//直连通道
	
	/*触发源与从模式*/
	TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);//触发源配置
	TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);//从模式配置
	
	TIM_Cmd(TIM3,ENABLE);//启动定时器
	
}
/**
  * 函    数:获取输入捕获的频率
  * 参    数:无
  * 返 回 值:捕获到的信号的频率
  */
uint16_t IC_GetFreq(void)
{
	return 1000000/(TIM_GetCapture1(TIM3)+1);//测周法得到频率fx = fc / N,这里不执行+1的操作也可
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值