用stm32测量外部编码器的脉冲个数,怎么实现?输入捕获模式可以吗?

 我来答
百度网友e9f676ee8
2012-08-26 · TA获得超过713个赞
知道小有建树答主
回答量:717
采纳率:66%
帮助的人:579万
展开全部
测量脉冲就是输入捕获
追问
测量的是脉冲个数,不是周期与脉宽
追答
那就挂在外部中断上
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sybblw
推荐于2018-03-19
知道答主
回答量:6
采纳率:0%
帮助的人:8.5万
展开全部
如用TIM2定时器对一个脉冲进行计数,则TIM2配置如下:
void TIM2_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_DeInit(TIM2); //TIM2寄存器重设为缺省值
TIM_TimeBaseStructure.TIM_Prescaler = 0x00; //TIM1时钟频率的预分频值,时钟频率=72/(时钟预分频+1) ;
TIM_TimeBaseStructure.TIM_Period = 124; //自动重装载寄存器周期值,累计125个后产生个更新或者中断;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //时间分割值
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //定时器模式 向上计数
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); // Time base configuration
TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_Inverted, 0); //配置TIM1的外部时钟模式2,预分频OFF(关闭),低电平或下降沿沿有效,不需要滤波器;
TIM_SetCounter(TIM2, 0x0);
TIM_ClearFlag(TIM2,TIM_FLAG_Update);//清除溢出中断标志位
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); //打开中断 溢出中断
}
中断函数:
void TIM2_IRQHandler(void)
{
if (TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清TIM2标志位
}
}
在主函数中在合适的地方使能TIM2就可以了,上面的程序仅供参考,临时编写的,可能有错误的。
来自:求助得到的回答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式