⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stepper.c

📁 该源码是创维特ARM7 JX44B0X板的例子程序
💻 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 + -