STM32的PWM输入模式
2个ICx信号映射到同一下TIxl输入(这里是CH1及CH2)。
这两个ICx信号都为边沿有效,但极性相反。
由上面程序可知,TIM2的TIM_Channel_2被配置为上升沿触发,则TIM2的TIM_Channel_1被配为下降沿触发。
利用此模式能够测量输入到TI1上的PWM信号的长度(TIMx_CCR2寄存器)和占空比(TIMx_CCR1)数值;
在测量时,当上升沿信号触发后,TIMx_CCR2寄存器开始计数,当下降沿出现时,TIMx_CCR1寄存器也开始计数。
直到下一个上升沿信号出现时,在中断里记下TIM2_CCR1(TIM_GetCapture1(TIM2))及TIM2_CCR2(TIM_GetCapture1(TIM2))的值,然后根据这两个值算出点空比TIM_GetCapture1(TIM2)/2C1Value ,频率=系统时钟/2C1Value 。
中断程序如下所示:
void TIM2_IRQHandler(void)
{
}
在输入信号的每一次上升沿都会触发中断,在中断对IC2Value及IC1Value的值进行计算
在这个程序中,TIM2的通道2设置为上升沿触发中断,TIM2的预分频为0,因此可以得到:
输入信号的频率
输入信号的点空比 DutyCycle = (TIM_GetCapture1(TIM2) * 100) / IC2Value;
再简要解释一下:不管是用一个通道还是2个通道,都是要使用输入捕获来实现测量脉宽。
输入捕获的意思是,当计数器不断地计数时,在指定的边沿到来时刻,把计数器的内容拷贝到这个通道对应的CCR寄存器,同时计数器还会继续不断地计数。
当使用一个通道测量脉宽时,你需要先指定上升沿触发捕获,当产生捕获中断时,读出CCR寄存器的内容,再改变这个通道为下降沿捕获,当再次产生捕获中断时,再读出CCR寄存器的内容并与上次的捕获数值相减,结果就是脉宽。
当使用2个通道测量脉宽时,你只需要指定一个通道为上升沿触发捕获,另一个通道为下降沿捕获,计算方法与使用一个通道时相同,即把下降沿捕获的数值减去上升沿捕获的数值,结果就是脉宽。使用2个通道的好处是,在产生捕获中断时不必改变触发捕获的边沿。
STM32PWM输入模 相关文章:
- STM32的PWM输入模式设置并用DMA接收数据(11-09)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)