Fuente antes de Cristo
# 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 * / p>
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!