stm32 pwm输入捕捉模式学习笔记

来源:本站
导读:目前正在解读《stm32 pwm输入捕捉模式学习笔记》的相关信息,《stm32 pwm输入捕捉模式学习笔记》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《stm32 pwm输入捕捉模式学习笔记》的详细说明。
简介:PWM输入是输入捕获的一个特殊应用,输入捕获就是当连接到定时器的引脚上产生电平变化时对应的捕获装置会立即将当前计数值复制到另一个寄存器中。你可以开启捕获中断然后在中断处理函数中读出保存的计数值。主要用于读取pwm的频率和占空比。

与输入捕获不同的是PWM输入模式时,用到两个通道(一般用TIMx_CH1或TIMx_CH2),只给其中一个通道分配gpio时钟即可,另一个在内部使用。给一个通道分配gpio时钟后,需要设置另一个为从机且复位模式。(例如使用ch2,ch1就得设置成从机模式)。当一个输入信号(TI1或TI2)来临时,主通道捕获上升沿,从机捕获下降沿。

假设pwm从低电平开始触发,当上升沿来临时,两个通道TIM_CNT均复位开始计数,下一个下降沿来临,从机读取TIM_CNT中的值,记为CCR1,下一个上升沿来临,主通道读取TIM_CNT的值,记为CCR2。所以CCR2/f,为pwm周期,倒数即频率。CCR1/CCR2就是占空比。

下面是pwm捕获模式下的配置:

void Tim2_PWMIC_Init(void)

{

TIM_ICInitTypeDef TIM_ICInitStructure;

TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; //***通道选择,通道一为从机

TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿触发

TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //管脚与寄存器对应关系

TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //输入预分频。意思是控制在多少个输入周期做一次捕获,如果

//输入的信号频率没有变,测得的周期也不会变。比如选择4分频,则每四个输入周期才做一次捕获,这样在输入信号变化不频繁的情况下,

//可以减少软件被不断中断的次数。

TIM_ICInitStructure.TIM_ICFilter = 0x0; //滤波设置,经历几个周期跳变认定波形稳定0x0~0xF

TIM_PWMIConfig(TIM2, &TIM_ICInitStructure); //根据参数配置TIM外设信息

TIM_SelectInputTrigger(TIM2, TIM_TS_TI2FP2); //选择IC2为始终触发源

TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_Reset);//TIM从模式:触发信号的上升沿重新初始化计数器和触发寄存器的更新事件

TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable); //启动定时器的被动触发

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

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

}

//中断服务函数

void TIM2_IRQHandler(void)

{

TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);

CCR1=TIM_GetCapture1(TIM2);

CCR2=TIM_GetCapture2(TIM2);

frequency=72000000/CCR2;

duty=CCR1*100/CCR2;

}

另外主程序先要给主通道的io口分配时钟即可。

提醒:《stm32 pwm输入捕捉模式学习笔记》最后刷新时间 2024-03-14 01:08:50,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《stm32 pwm输入捕捉模式学习笔记》该内容的真实性请自行鉴别。