📄 stepper.c
字号:
#include <stdio.h>#include <sys/time.h>#include <signal.h>#include "../include/44b.h"#define STEP_INTERVALE 0x40#define STEPER_VALUE_MIN 0x40#define STEPER_VALUE_MAX 0x1000 #define STEPER_MOTOR_ENABLE 1#define STEPER_MOTOR_DISABLE 0#define STEPER_MOTOR_CLOCKWISE 0#define STEPER_MOTOR_ANTICLOCKWISE 1 #define true 1#define false 0 #define STEPER_ENABLE 0x01#define STEPER_SINGLE 0x02#define STEPER_REVERSE 0x04 #define MIN_STEPER_PLUSE_FREQ 0x300#define MAX_STEPER_PLUSE_FREQ 0x100000#define GEN_PLUSE_HIGH() {rPDATC |= (1<<11);}#define GEN_PLUSE_LOW() {rPDATC &= (~(1<<11));}struct timeval tpstart,tpend;float timeuse;static timer_count = 0;static int steper_control_mask = 0xf8;int port_con_c, port_up_c;void stepper_control(int benable){ if(benable == STEPER_MOTOR_ENABLE) { steper_control_mask |= (1<<3); *(unsigned char *)0x0a000006 = steper_control_mask; } else { steper_control_mask &= (~(1<<3)); *(unsigned char *)0x0a000006 = steper_control_mask; }}void stepper_set_direct(int direct){ if(direct == STEPER_MOTOR_CLOCKWISE) { steper_control_mask |= (1<<2); *(unsigned char *)0x0a000006 = steper_control_mask; } else { steper_control_mask &= (~(1<<2)); *(unsigned char *)0x0a000006 = steper_control_mask; }}void stepper_init(){ port_con_c = rPCONC; port_up_c = rPUPC; // config the port c rPCONC |= (1 << 22); rPUPC |= (1 << 11);}void stepper_uninit(){ rPCONC = port_con_c; rPUPC = port_up_c;}void pulse_timer(int signo){ GEN_PLUSE_LOW(); GEN_PLUSE_HIGH();} void init_sigaction(void){ struct sigaction act; act.sa_handler=pulse_timer; act.sa_flags=0; sigemptyset(&act.sa_mask); sigaction(SIGPROF,&act,NULL); /* begin get the time */ gettimeofday(&tpstart,NULL);}void init_time(){ struct itimerval value; value.it_value.tv_sec=0; value.it_value.tv_usec=1; value.it_interval=value.it_value; setitimer(ITIMER_PROF,&value,NULL);}/* * timer application code * compile : * $arm-elf-gcc -Wl,-elf2flt -o stepper stepper.c * $cp timer /tftpboot/examples * run in target: * #cd /var * #ftp 192.168.1.180 * ftp>bin * ftp>cd /tftpboot/examples * ftp>get stepper * ftp>by * #./stepper */int main(int argc, char **argv){ stepper_init(); stepper_control(STEPER_MOTOR_ENABLE); stepper_set_direct(STEPER_MOTOR_CLOCKWISE); init_sigaction(); init_time(); while(1); stepper_uninit(); exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -