TI中文支持网
TI专业的中文技术问题搜集分享网站

求一个开关按下开始 进入定时器中断 ,执行定时器中断程序让电机旋转, 按另一个按键停止程序,停止电机旋转

求一个开关按下开始 进入定时器中断 ,执行定时器中断程序让电机旋转, 按另一个按键停止程序,停止电机旋转。

ZHE wang4:

void main(void){ InitSysCtrl();//初始化系统控制

DINT;//禁止CPU中断

InitPieCtrl();//初始化PIE控制

IER = 0x0000;// IFR = 0x0000;//禁止CPU中断和清除CPU中断标志

InitPieVectTable();//初始化PIE向量表

EALLOW;//将定时器和函数写入中断向量表 PieVectTable.TINT0 = &cpu_timer0_isr; EDIS;

InitCpuTimers();//初始化定时器

ConfigCpuTimer(&CpuTimer0, 150, 10 );// 发生中断时间为100us

IER |= M_INT1;//CPU级中断使能位

InitECap();//初始化捕获引脚

InitEPwm();//初始化EPWM

EPwmSetup();

PieCtrlRegs.PIEIER1.bit.INTx7 = 1;// 第一组 第7位 是timer0

EINT; //使能全局中断 ERTM; //允许实时中断

for(;;) { Key_Scan(); switch(KeyRec) { case 1: CpuTimer0Regs.TCR.all = 0x4001; //0100 0000 0000 0001 使用只写指令设置TSS = 0 将CPU定时器使能 并重启定时器 break;

case 2: stopmotor(); break;

} }

}

求一个开关按下开始 进入定时器中断 ,执行定时器中断程序让电机旋转, 按另一个按键停止程序,停止电机旋转。

ZHE wang4:

void Key_Scan(){ unsigned int i; GpioDataRegs.GPADAT.bit.GPIO26=0; for(i=0;i<50000;i++); //键盘消抖动 if(GpioDataRegs.GPADAT.bit.GPIO20==0)//扫描方向按键是否按下 { KeyRec=1; } else { if(GpioDataRegs.GPADAT.bit.GPIO21==0) { KeyRec=2; }

} GpioDataRegs.GPADAT.bit.GPIO26=1; while((GpioDataRegs.GPADAT.bit.GPIO20==0)|(GpioDataRegs.GPADAT.bit.GPIO21==0));}

求一个开关按下开始 进入定时器中断 ,执行定时器中断程序让电机旋转, 按另一个按键停止程序,停止电机旋转。

ZHE wang4:

void Key_Scan(){ unsigned int i; GpioDataRegs.GPADAT.bit.GPIO26=0; for(i=0;i<50000;i++); //键盘消抖动 if(GpioDataRegs.GPADAT.bit.GPIO20==0)//扫描方向按键是否按下 { KeyRec=1; } else { if(GpioDataRegs.GPADAT.bit.GPIO21==0) { KeyRec=2; }

} GpioDataRegs.GPADAT.bit.GPIO26=1; while((GpioDataRegs.GPADAT.bit.GPIO20==0)|(GpioDataRegs.GPADAT.bit.GPIO21==0));}

求一个开关按下开始 进入定时器中断 ,执行定时器中断程序让电机旋转, 按另一个按键停止程序,停止电机旋转。

ZHE wang4:

这是我用键盘扫描写的 可是依旧不行 求大神  

求一个开关按下开始 进入定时器中断 ,执行定时器中断程序让电机旋转, 按另一个按键停止程序,停止电机旋转。

Hardy Hu:

你好:

建议这样做。在PWM中断里面做一个软件计数器,按键可以用IO中断或者在while(1)里面查询。

这样就可以通过这个软件计数器来进行时间控制。

赞(0)
未经允许不得转载:TI中文支持网 » 求一个开关按下开始 进入定时器中断 ,执行定时器中断程序让电机旋转, 按另一个按键停止程序,停止电机旋转
分享到: 更多 (0)