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


发布评论