📄 judge_dir.c
字号:
if(1==motor3_exe_step)//如果是启动阶段
{
switch(DirStep)
{
case 0: /* 第0步 */
if ( !GPIOPinRead(Motor_Enco_PORT3, Motor3_Enco_A)) /* A相为低电平 */
{
TimerLoadSet(TIMER1_BASE, TIMER_A, timerloadvalue); /* 复位定时器1 */
DirStep ++; /* 下一步 */
}
break;
case 1: /* 第1步 */
if ( !GPIOPinRead(Motor_Enco_PORT3, Motor3_Enco_B)) /* B相低电平 */
{
Dir_T1 = TimerValueGet(TIMER1_BASE, TIMER_A); /* 读出第一个A相下降沿和
B相下降沿之间的时间 */
TimerLoadSet(TIMER1_BASE, TIMER_A, timerloadvalue);
DirStep ++;
}
break;
case 2: /* 第2步 */
if ( !GPIOPinRead(Motor_Enco_PORT3, Motor3_Enco_A)) /* A相低电平 */
{
Dir_T2 = TimerValueGet(TIMER1_BASE, TIMER_A); /* 读出B相下降沿和第二个
//可以考虑关B相中断 暂时先不关中断,这样实时性都满足 SPEED1下降沿之间的时间 */
//那就什么实时性问题都不存在了
DirStep = 0;
if (Dir_T1 > Dir_T2)
{
//这个赋值不合适
palced_magor[2].dir = 1; /* A相在前 */
}
else
{
palced_magor[2].dir = 0; /* B相在前*/
}
}
break;
default:
DirStep = 0;
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -