芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

芯片解密STM32F103的无刷电机驱动板

芯片解密STM32单片机源程序如下:

  1. #include "includes.h"  

  2. void Motor_Ctr(void);

  3. void send_wave_data(u16 send_data)
  4. {
  5.         usart1_send_byte(0xAA);
  6.         usart1_send_byte(send_data>>8);
  7.         usart1_send_byte(send_data);
  8. }



  9. void Motor_start_param_initial()
  10. {
  11.         MotorCtr.motor_start_delay=MAX_START_DELAY;   //电机启动参数初始化,30ms,相当于60000/6/2/30=166圈/分钟       
  12.         MotorCtr.start_step_cn=0;
  13.        
  14.         #ifdef  NO_HOLZER_SENSOR                                            //无霍尔传感器
  15.        
  16.                 MotorCtr.Holzer_sensor=0;
  17.                 MotorCtr.No_Holzer_sensor_start_count=0;
  18.                 MotorCtr.start_holl_value=2;
  19.         #else                                                //有霍尔传感器
  20.        
  21.                 MotorCtr.Holzer_sensor=1;
  22.                 MotorCtr.Holzer_sensor_start_count=0;
  23.         #endif               
  24. }       


  25. //电机控制初始化函数
  26. void MotorCtr_ini(void)
  27. {
  28.         MotorCtr.sample_ok=0;            //电机采样参数初始化
  29.         MotorCtr.motor_voltage=0;
  30.         MotorCtr.motor_current=0;
  31.        
  32.         MotorCtr.speed_val=0;                        //电机速度参数初始化设定值
  33.         MotorCtr.speed_set=0;                       
  34.         MotorCtr.speed_time_cnt=0;
  35.         MotorCtr.speed_time_ok=0;       
  36.                
  37.         MotorCtr.holl_overtime_cnt=0;
  38.         MotorCtr.holl_cnt=0;
  39.         MotorCtr.sum_holl_time=0;                          
  40.         MotorCtr.sample_ok_cn=0;               
  41.         MotorCtr.stall_time_cn=0;       
  42.        
  43.         MotorCtr.motor_dir= NONE_DIR;                                  //电机转动控制初始化,顺时钟
  44.         MotorCtr.motor_run_state = MOTOR_IDLE;
  45.        
  46.         Motor_start_param_initial();
  47.        
  48.        
  49.         MotorCtr.motor_run_state=MOTOR_START;
  50.         MotorCtr.motor_dir= FORWARD_DIR;         
  51.         //MotorCtr.motor_dir= REVERSE_DIR;                 
  52.         TIM_Cmd(TIM4, ENABLE);                                          //使能TIM4,开始计时间

  53. }


  54. void MOTOR_CMD_process()
  55. {
  56.         if(Usart2Data.Usart_Rx_Data_OK)
  57.         {
  58.                
  59.                 if(Usart2Data.Usart_Rx_Cmd_H==CMD_ORDER)
  60.                 {
  61.                         if(Usart2Data.Usart_Rx_Cmd_L&MOTOR_START)
  62.                         {
  63.                                 Motor_start_param_initial();

  64.                                 MotorCtr.motor_run_state=MOTOR_START;
  65.                                 if(Usart2Data.Usart_Rx_Cmd_L&FORWARD_DIR)
  66.                                 {
  67.                                         MotorCtr.motor_dir= FORWARD_DIR;                 
  68.                                 }
  69.                                 if(Usart2Data.Usart_Rx_Cmd_L&REVERSE_DIR)
  70.                                 {
  71.                                         MotorCtr.motor_dir= REVERSE_DIR;                 
  72.                                 }
  73.                                 TIM_Cmd(TIM4, ENABLE);                                          //使能TIM4,开始计时间
  74.                                
  75.                         }
  76.                         else if(Usart2Data.Usart_Rx_Cmd_L&MOTOR_STOP)
  77.                         {
  78.                                 MotorCtr.motor_run_state=MOTOR_STOP;
  79.                                 stop_motor();
  80.                                 TIM_Cmd(TIM4, DISABLE);                                          //使能TIM4,开始计时间
  81.                         }                                       
  82.                 }       
  83.                 else if(Usart2Data.Usart_Rx_Cmd_H==CMD_DATA_SPEED)
  84.                 {
  85.                                         MotorCtr.pwm_duty_set=Usart2Data.Usart_Rx_Cmd_L*MIN_START_PWM_DUTY/SPEED_DUTY_NUM;   //速度档位1-10档
  86.                 }
  87.                 else if(Usart2Data.Usart_Rx_Cmd_H==CMD_DATA_ANGLE)
  88.                 {
  89.                                        
  90.                 }
  91.                                                                        
  92.                 Usart2Data.Usart_Rx_Data_OK=0;
  93.         }       
  94. }



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信