高级会员

- 积分
- 526
- 金钱
- 526
- 注册时间
- 2013-11-25
- 在线时间
- 0 小时
|
我想用STM32编一个测量旋转编码器角度的程序,使用串口调试助手显示角度。
想请问下,旋转编码器一周360度对应得定时器计数值是怎么计算的,是固定的么,还是有什么公式,或者和编码器的说明书上有什么指示?我在网上看了很多版本,什么说法都有,乱了。。跪求~
下面是我在网上看的一段程序:
void Get_Angle(s16*degree)
{
s32 temp;
s16 jishu;
jishu=TIM_GetCounter(TIM3);
if(jishu>=400)
{
degree[0]='-';
degree[1]=(800-jishu)*360/(899+1);
temp=(800-jishu)*(1000000/((899+1)/2))*360-degree[1]*1000000;
degree[2]=(unsigned char)temp;
}
else
{
degree[0]='+';
degree[1]=jishu*360/(899+1);
temp=jishu*(1000000/((899+1)/2))*180-degree[1]*1000000;
degree[2]=(unsigned char)temp;
}
}
899是在定时器初始化时给定的 TIM_TimeBaseStructure.TIM_Period = 899; //定时器计数自动重装值
400,800,1000000都是网上那个程序直接给定的
所以想问下,到底定时器计数值和旋转编码器的角度之间是如何换算的呢?
附timer.c
另外,求用串口接收degree数据的程序。。
|
|