2024年3月23日发(作者:)

1、

stm32脉冲方波捕获

脉冲方波长度捕获

a)目的:基础PWM输入也叫捕获,以及中断配合应用。使用前一章的输出管脚P

B1(19脚),直接使用跳线连接输入的PA3(13脚),配置为TIM2_CH4,进行

实验。

b)对于简单的PWM输入应用,暂时无需考虑TIM1的高级功能之区别,按照目前

我的应用目标其实只需要采集高电平宽度,而不必知道周期,所以并不采用PWM

输入模式,而是普通脉宽捕获模式。

c)初始化函数定义:

void TIM_Configuration(void); //定义TIM初始化函数

d)初始化函数调用:

TIM_Configuration(); //TIM初始化函数调用

e)初始化函数,不同于前面模块,TIM的CAP初始化分为三部分——计时器基本

初始化、通道初始化和时钟启动初始化:

void TIM_Configuration(void)//TIM2的CAP初始化函数

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//定时器初始化结构

TIM_ICInitTypeDef TIM_ICInitStructure; //通道输入初始化结

//TIM2输出初始化

TIM__Period = 0xFFFF; //周期0~FFFF

TIM__Prescaler = 5; //时钟分频

TIM__ClockDivision = 0; //时钟分割

TIM__CounterMode = TIM_CounterMode_Up;//模式

1

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);//基本初始化

//TIM2通道的捕捉初始化

TIM__Channel = TIM_Channel_4;//通道选择

TIM__ICPolarity = TIM_ICPolarity_Falling;//下降

沿

TIM__ICSelection = TIM_ICSelection_DirectTI;//

管脚与寄存器对应关系

TIM__ICPrescaler = TIM_ICPSC_DIV1;//分频器

TIM__ICFilter = 0x4; //滤波设置,经历几

个周期跳变认定波形稳定0x0~0xF

TIM_ICInit(TIM2, &TIM_ICInitStructure); //初始化

TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2); //选择时钟触发源

TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);//触发方式

TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable); //启

动定时器的被动触发

TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE); //打开中断

TIM_Cmd(TIM2, ENABLE); //启动TIM2

}

f)RCC初始化函数中加入TIM时钟开启:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM3, ENABLE);

2