Red de conocimiento informático - Conocimiento sistemático - Fuente antes de Cristo

Fuente antes de Cristo

# include & ltstdio.h & gt# include & ltfcntl.h & gt# include & ltstring.h & gt# include & ltsys/ioctl

# define motor paso a paso _ io ctrl _. PHASE 0x 13 staticintstep _ FD =-1;

char * STEP _ DEV = "/DEV/exio/0 raw "; //Definir un puntero que apunta al controlador del motor paso a paso.

/******** A, AB, B, BC, C CD, D, DA ***/

char stepdata[]={0x10, 0x30 , 0x20, 0x60, 0x40, 0xc0, 0x80, 0x 90 }; //El valor correspondiente a cada fase

Void Delay(int t) //Función de retardo { int I;

for(;t>0;t-)

for(I = 0;i<400;i++);}

/******** ****** *********************************** ***** ******/

int main(intargc, char **argv) {

int I = 0;

if((step_fd=open (STEP_DEV, O_WRONLY))< 0){ printf("Error al abrir /dev/exio/0raw dispositivo\n "); return } /*

Abra el controlador del dispositivo porque LINUX simula todos los dispositivos como archivos. step_fd=open(STEP_DEV, 0_WRONLY) La función real llamada es:

static int s3c 2410 _ exio _ open (struct inode * inode, struct file * filp) // abridor de dispositivo en el controlador * /

for(;;) {

for(I = 0;i<sizeof(datos de paso)/sizeof(datos de paso[0]);i++) { ioctl(step_fd, STEPMOTOR_IOCTRL_PHASE, datos de paso [I]);}

/*El programa entra en un bucle infinito para mantener el motor girando sin parada manual.

*El segundo nivel para la instrucción se repite una vez, es decir, el motor gira una vez. La función ioctl() corresponde al número de función * S3C2410 _ EXIO _ ioctl().

*Y esta función eventualmente llamará a la función do_step motor_run((char)arg); */

printf(" Delay(100)\ n "); delay(100);}

Cerrar (paso _ FD); //Apaga el dispositivo al final. del programa printf("¡El motor paso a paso comienza a funcionar! \n "); Retorno 0;} Este artículo proviene de la biblioteca de Baidu, puede buscarlo, ¡la respuesta es más detallada!