uart_driver_motor.c

来自「基于Cortex-M3的全自动焊接机」· C语言 代码 · 共 102 行

C
102
字号
#include "motor.h"
#include "globaltype.h"
#include  "pwm.h"
#include  "pwm_init.h"
extern struct placed_relate_parm palced_magor[];
extern unsigned long ulPeriod;
//工作参数设置完毕
void driver_dir(unsigned char dir,unsigned char motor_number);
void uart_driver_motor(unsigned char motor_number ,unsigned char usr_command)
{
     switch(motor_number)
     {
        case 0:
            Motor1_Enable(Start);
            driver_dir(palced_magor[0].dir,0);
            switch(palced_magor[0].dir)
            {
                case Forward://PWM4正常输出
                      PWMPulseWidthSet(PWM_BASE, motor1_pwm_forward_out, ulPeriod*3/10);//取反,低电平作为占空比以适应电路
                      PWMOutputState(PWM_BASE, motor1_pwm_forward_bit_out , true);      
                      break;
                case Reverse://PWM5正常输出
                      PWMPulseWidthSet(PWM_BASE, motor1_pwm_reverse_out, ulPeriod*3/10);//取反,低电平作为占空比以适应电路
                      PWMOutputState(PWM_BASE, motor1_pwm_reverse_bit_out , true);      
                      break;
            }
            break;
        case 1:
            Motor2_Enable(Start);
            driver_dir(palced_magor[1].dir,1);
            switch(palced_magor[1].dir)
            {
                case Forward:
                      PWMPulseWidthSet(PWM_BASE, motor2_pwm_forward_out, ulPeriod*3/10);
                      PWMOutputState(PWM_BASE, motor2_pwm_forward_bit_out , true);      
                      break;
                case Reverse:
                      PWMPulseWidthSet(PWM_BASE, motor2_pwm_reverse_out, ulPeriod*3/10);
                      PWMOutputState(PWM_BASE, motor2_pwm_reverse_bit_out , true);      
                      break;
            }
            break;
        case 2:
            Motor3_Enable(Start);
            driver_dir(palced_magor[2].dir,2);
            switch(palced_magor[2].dir)
            {
                case Forward:
                      PWMPulseWidthSet(PWM_BASE, motor3_pwm_forward_out, ulPeriod*3/10);//取反,低电平作为占空比以适应电路
                      PWMOutputState(PWM_BASE, motor3_pwm_forward_bit_out , true);      
                      break;
                case Reverse:
                      PWMPulseWidthSet(PWM_BASE, motor3_pwm_reverse_out, ulPeriod*3/10);//取反,低电平作为占空比以适应电路
                      PWMOutputState(PWM_BASE, motor3_pwm_reverse_bit_out , true);      
                      break;
            }
            break;
    }

   
}

void driver_dir(unsigned char dir,unsigned char motor_number)
{
    
    switch(motor_number)
    {
        case 0:
                switch(dir)
                {
                    case Forward:
                                  Motor1Direct(Forward);
                                  break;
                    case Reverse:
                                  Motor1Direct(Reverse);
                                  break;
                }      
                break;
        case 1:
                switch(dir)
                {
                    case Forward:
                                  Motor2Direct(Forward);
                                  break;
                    case Reverse:
                                  Motor2Direct(Reverse);
                                  break;
                }      
                break;
        case 2:
                switch(dir)
                {
                    case Forward:
                                  Motor3Direct(Forward);
                                  break;
                    case Reverse:
                                  Motor3Direct(Reverse);
                                  break;
                }      
                break;
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?