#include "stm32f10x.h"
#include "stm32f10x_it.h"
#define prd 10000
#define Vbreak 8000
u16 cnt2,cnt3,cnt4,cnt5;
s32 CNT2,CNT3,CNT4,CNT5;
s32 V2,V3,V4,V5;
extern s32 rcnt2,rcnt3,rcnt4,rcnt5;
void get_encoder_ONE(void)//*******************计算当前实际速度V
{
s32 CNT2_temp,CNT2_last;
cnt2 = TIM2 -> CNT;
CNT2_last = CNT2;
CNT2_temp = rcnt2 * prd + cnt2;
V2 = CNT2_temp - CNT2_last;
while (V2>Vbreak)
{
rcnt2--;
CNT2_temp = rcnt2 * prd + cnt2;
V2 = CNT2_temp - CNT2_last;
}
while (V2<-Vbreak)
{
rcnt2++;
CNT2_temp = rcnt2 * prd + cnt2;
V2 = CNT2_temp - CNT2_last;
}
CNT2 = CNT2_temp;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>