void InitEQEP1()
{
EQep1Regs.QUPRD=300000; //2ms 产生超时事件中断
EQep1Regs.QDECCTL.bit.QSRC=0; // QEP quadrature count mode
EQep1Regs.QEPCTL.bit.FREE_SOFT=0;
EQep1Regs.QEPCTL.bit.PCRM=01; // 最大值时复位
EQep1Regs.QEPCTL.bit.UTE=1; // Unit Timeout Enable
EQep1Regs.QEPCTL.bit.QCLM=1; // Latch on unit time out
EQep1Regs.QEPCTL.bit.QPEN=1; // QEP enable
EQep1Regs.QCAPCTL.bit.CEN=1;
EQep1Regs.QPOSMAX=4095; //4096
EQep1Regs.QEPCTL.bit.SWI=1; //初始化位置计数器(QPOSCNT=QPOSINIT)
EQep1Regs.QEINT.bit.UTO=1; //使能单位定时器
}
void speedcac()
{
DirectionQep = EQep1Regs.QEPSTS.bit.QDF;
if(EQep1Regs.QFLG.bit.UTO==1) // If unit timeout (one 100Hz period)
{
Position_k=EQep1Regs.QPOSLAT;
EQep1Regs.QCLR.bit.UTO=1; // Clear interrupt flag
}
转速信号如下: