各位,我又来问问题了。很多问题。麻烦大家了。
LPC2138做步进电机的时候,在软件仿真平台上可以控制正反转,但是烧到硬件上搭电路时却发现只能正转,控制不了反转?
调试时2个控制开关用示波器测过都能有高低电平,可是就是控制不了,等于开关没用。请问这是怎么回事?
单步调试时,总是进不去第二个while?是否程序运行时只在第一个while(控制正转),不能进入第二个while(控制反转)?可是软件上仿真又可以,有高手可以指点一二么?
谢谢!
————————————————————————————————————————源代码:
/****************************************************************************
* 文件名:Step.C
* 功能:通过按键KEY1控制电机的正转,KEY2控制电机的反转
****************************************************************************/
#include "Config.h"
#include "Target.h"
#define KEY1 (IO0PIN&(1<<20)) //定义按键1
#define KEY2 (IO0PIN&(1<<21)) //定义按键2
uint8 const step[] = {0x00,0x02,0x06,0x04,0x0C,0x08,0x09,0x01,0x03};
/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly 延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
for(; dly>0; dly--)
for(i=0; i<5000; i++);
}
/*****************************************************************
* 名称:main()
* 功能:通过按键KEY1控制电机的正转,KEY2控制电机的反转
******************************************************************/
int main(void)
{
TargetResetInit();
uint32 i=0;
PINSEL0 = 0x00000000; // 设置所有管脚连接GPIO
PINSEL1 = 0x00000000;
IO0DIR = 0x0000000f; // 设置P0.0-P0.3控制口为输出
IO0CLR=0xffffffff;
while(1)
{
i=1;
while(!KEY1)
{
IO0PIN=((IO0PIN & 0xfffffff0)|step[i]);
DelayNS(200);
i++;
if(i>8)
i=1;
}
i=7;
while(!KEY2)
{
IO0PIN=((IO0PIN & 0xfffffff0)|step[i]);
DelayNS(200);
i--;
if(i<1)
i=8;
}
}
} |