OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5119|回复: 2

uln2003驱动步进电机,在正转或反转过程中不能停止,求大神指导。

[复制链接]

7

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2017-8-16
在线时间
44 小时
发表于 2021-9-1 20:03:43 | 显示全部楼层 |阅读模式
2金钱
实验是按键实验增加的内容
.C
void Motor_Ctrl_Angle(int angle,int n)
{
        u16 j;
        for(j=0;j<64*angle/45;j++)
        {
                motor_control_F(n);

        }
}


void Motor_Ctrl_Angle_Z(int angle,int n)
{
        u16 j;
        for(j=0;j<64*angle/45;j++)
        {
                motor_control_Z(n);

        }
}

void motor_control_F(int n)
{
    D_HIGH2;
    delay_us(n);
    A_LOW2;
    delay_us(n);
    C_HIGH2;
    delay_us(n);
    D_LOW2;
    delay_us(n);
    B_HIGH2;
    delay_us(n);
    C_LOW2;
    delay_us(n);
    A_HIGH2;
    delay_us(n);
    B_LOW2;
    delay_us(n);
}


void motor_control_Z(int n)
{
    A_HIGH2;
    delay_us(n);
    D_LOW2;
    delay_us(n);
    B_HIGH2;
    delay_us(n);
    A_LOW2;
    delay_us(n);
    C_HIGH2;
    delay_us(n);
    B_LOW2;
    delay_us(n);
    D_HIGH2;
    delay_us(n);
    C_LOW2;
    delay_us(n);
       
}

void Motor_Ctrl_Off(void)
{
  GPIO_ResetBits(GPIOG, GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);
}


int main(void)
{

        vu8 key = 0;
        delay_init();
        LED_Init();                         //LED端口初始化
        KEY_Init();                      //初始化与按键连接的硬件接口
        BEEP_Init();                    //初始化蜂鸣器端口
        LED0 = 0;                        //先点亮红灯


        vu16 t ;  
        vu16 len;       
        vu16 times=0;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        uart_init(115200);          

        motor_configuration();
       

        delay_ms(1000);        

        Motor_Ctrl_Off();
       

         while(1)
        {

                key=KEY_Scan(0);        //得到键值
                   if(key)
                {                                                  
                switch(key)
                {                                 
                  case WKUP_PRES:        //控制蜂鸣器
                         // BEEP=!BEEP;
                          Motor_Ctrl_Angle(720,1800);



                          LED0=!LED0;

                          // Motor_Ctrl_Off();
                          break;
                  case KEY2_PRES:        //控制LED0翻转
                          //LED0=!LED0;

                          break;
                  case KEY1_PRES:        //控制LED1翻转         
                          LED1=!LED1;

                          Motor_Ctrl_Angle_Z(360,1800);
                          break;
                  case KEY0_PRES:        //同时控制LED0,LED1翻转
                          LED0=!LED0;
                          LED1=!LED1;
                          Motor_Ctrl_Off();
                          break;
                  }
                }else delay_ms(10);               

           }
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

821

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2105
金钱
2105
注册时间
2021-7-17
在线时间
659 小时
发表于 2021-9-2 11:39:02 | 显示全部楼层
回复

使用道具 举报

12

主题

3394

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8663
金钱
8663
注册时间
2020-5-11
在线时间
4129 小时
发表于 2021-9-2 16:43:35 | 显示全部楼层
Motor_Ctrl_Angle里面是个时间较长的循环,你得想办法跳出来.
专治疑难杂症
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-6 20:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表