初级会员

- 积分
- 79
- 金钱
- 79
- 注册时间
- 2015-7-27
- 在线时间
- 6 小时
|

楼主 |
发表于 2015-7-27 14:11:27
|
显示全部楼层
我也不知道该怎么问了,现在呢我可以正常的测出pwm的脉宽和频率,就是想要理解定时器作为pwm输入捕获的一个过程。我的理解是假设将定时器2的CH1设置为pwm捕获模式,设置上升沿为有效边沿,那么在此输入通道检测到一个上升沿后,会将TIM2_INT计数器的值赋值给TIM_CCR1,然后硬件自动清零TIM2_INT,然后在检测到CH1下降沿的时候,将TIM2_INT的值赋给TIM2_CCR2。那么脉冲宽度就是TIM2_CCR2,周期就是TIM_CCR1。不知道我这样理解的对不对。下面是我测周期和占空比的函数
void TIM2_Interrupt(void)
{
u16 counter;
if(TIM_GetFlagStatus(TIM2,TIM_FLAG_CC1) != RESET)
{
  eriod =1000/( TIM_GetCapture1(TIM2)/72);
printf("%f\n",Period);
TIM_ClearFlag(TIM2,TIM_FLAG_CC1);
}
if(TIM_GetFlagStatus(TIM2,TIM_FLAG_CC2) != RESET)
{
counter = TIM_GetCapture1(TIM2);
printf("%f%%\n",TIM_GetCapture2(TIM2)/counter*100);
TIM_ClearFlag(TIM2,TIM_FLAG_CC2);
}
} |
|