求两相四线步进电机驱动,C语言源码,可以控制步数的。

如题所述

#include <stdio.h> #include <fcntl.h> #include <string.h> #include <sys/ioctl.h>
#define STEPMOTOR_IOCTRL_PHASE 0x13 staticintstep_fd = -1;
char *STEP_DEV="/dev/exio/0raw"; //定义一个指针指向步进电机的驱动 程序
/********* A, AB, B, BC, C CD, D, DA ***/
char stepdata[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};//各 个相位对应的值
void Delay(int t) //延时函数 { 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 opening /dev/exio/0raw device\n"); return 1; } /*
打开设备的驱动程序,由于LINUX把所有的设备都模拟成文件。 step_fd=open(STEP_DEV,0_WRONLY)实际调用的函数为:
staticint s3c2410_exio_open(structinode *inode, struct file *filp) //驱动程序中的设备打开程序 */
for (;;) {
for (i=0; i<sizeof(stepdata)/sizeof(stepdata[0]); i++) { ioctl(step_fd, STEPMOTOR_IOCTRL_PHASE, stepdata[i]); }
/*程序进入一个死循环,这样可以使电机在没有人为停止的状况下,一直的 转动下去。
*第二层for语句循环一次即电机转动一周。函数ioctl()对应函 数*s3c2410_exio_ioctl()
*而这个函数最终将调用函数do_stepmotor_run((char)arg);使步进电 机转动起来。 */
printf("Delay(100)\n"); Delay(100); }
close(step_fd); //程序结束时关闭设备 printf("Step motor start running!\n"); return 0; }本文来自百度文库,你可以搜搜,其中答案更详细的!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-22
相信我,在这里,你求不到驱动源码的
相似回答