void Init_Other() { //**************************电机PWM初始化****************************** ftm_pwm_init(FTM0, FTM_CH0, 10000, 1000); ftm_pwm_init(FTM0, FTM_CH1, 10000, 1000); ftm_pwm_init(FTM0, FTM_CH2, 10000, 1000); ftm_pwm_init(FTM0, FTM_CH3, 10000, 1000); //********************************************************************* }
/** * @brief 打开motor端口 * * @param motorid 电机的ID号 * * @return ercd 错误码 */ static ER motor_robot_open_port(ID motorid) { MTCB *p_mtcb; ER ercd; ID motor_no; motor_no = MOTOR_NO_GET(motorid); if (!(0 <= motor_no && motor_no < MOTOR_NUM)) { return (E_ID); /* ID号错误 */ } p_mtcb = get_mtcb(motor_no); if (p_mtcb->openflag) { /* 检查是否已经打开 */ ercd = E_OBJ; } else { /** * 硬件初始化 */ ftm_pwm_init(MOTOR_MOD_GET(motorid), MOTOR_CH_GET(motorid)); p_mtcb->openflag = TRUE; ercd = E_OK; } return (ercd); }
/******************************************************************************* * Function Name : Init_ftm_motor() * Description : 初始化电机驱动 * Input : None * Output : None * Return : None * Editor :Ibrahim ***************************************************************************/ void Init_ftm_motor() { //初始化 PWM 输出 //FTM 的管脚 可在 fire_port_cfg.h //宏定义FTM0_PRECISON 改为 1000u //PWM数值反转。 ftm_pwm_init(FTM0, MOTOR1_PWM, 10000, 0); //初始化 电机 PWM ftm_pwm_init(FTM0, MOTOR2_PWM, 10000, 0); //初始化 电机 PWM ftm_pwm_init(FTM0, MOTOR3_PWM, 10000, 0); //初始化 电机 PWM ftm_pwm_init(FTM0, MOTOR4_PWM, 10000, 0); //初始化 电机 PWM ftm_pwm_init(FTM3, SERVO, 50, SERVOCENTER); //初始化 电机 PWM //IO管脚配置 //gpio_init(MOTOR1_IO,GPO,LOW); //gpio_init(MOTOR2_IO,GPO,LOW); //gpio_init(MOTOR3_IO,GPO,LOW); //gpio_init(MOTOR4_IO,GPO,LOW); /*gpio_init(MOTOR1_IO,GPO,HIGH); gpio_init(MOTOR2_IO,GPO,HIGH); gpio_init(MOTOR3_IO,GPO,HIGH); gpio_init(MOTOR4_IO,GPO,HIGH);*/ }
void main() { OLED_Init(); //初始化oled qd=1; ftm_pwm_init(FTM0,FTM_CH3,10000,0); ftm_pwm_init(FTM0,FTM_CH4,10000,0); ftm_pwm_init(FTM2,FTM_CH0,10000,0); ftm_pwm_init(FTM2,FTM_CH1,10000,0); adc_init (ADC1_SE10); adc_init (ADC1_SE11); adc_init (ADC1_SE12); adc_init (ADC1_SE13); //按键初始化 gpio_init (PTA13, GPI,HIGH);//拨码开关初始化 gpio_init (PTA19, GPI,HIGH); gpio_init (PTA24, GPI,HIGH); gpio_init (PTA25, GPI,HIGH); gpio_init (PTA26, GPI,HIGH); gpio_init (PTA27, GPI,HIGH); gpio_init (PTA28, GPI,HIGH); gpio_init (PTA29, GPI,HIGH); led_init (LED0); mpu6050_init(); lptmr_delay_ms(1000); gyro_zero=ad_ave(100); gyro_zero1=ad_ave1(100); mpu6050_read(); accel_accel=(accel_x-accel_zero)/16384.0; if(accel_accel>1) accel_accel=1; if(accel_accel<-1) accel_accel=-1; angle_fuse=180/pi*(asin(accel_accel)); accel_accel1=(accel_y-accel_zero1)/16384.0; if(accel_accel1>1) accel_accel1=1; if(accel_accel1<-1) accel_accel1=-1; angle_fuse1=180/3.1415926*(asin(accel_accel1)); pit_init_ms(PIT0, 5); //初始化PIT0,定时时间为: 5ms set_vector_handler(PIT0_VECTORn ,PIT0_IRQHandler); //设置PIT0的中断服务函数为 PIT0_IRQHandler enable_irq (PIT0_IRQn); //使能PIT0中断 uart_init(UART3, 115200); while(aa<200); //初始化 1秒 DIP_switch(); while(1) { //display[0]=angle_fuse; //display[1]=angle_fuse1; display[0]=angle_fuse3; oledplay(); if(flag==1) mode1(); else if (flag==2) mode2(); else if (flag==3) mode3(); else if (flag==4) mode4(); vcan_sendware((unsigned char *)display, 20); } }
void servo_init(void) { ftm_pwm_init(servo_FTM, servo_CH,servo_HZ,FTM1_PRECISON); }
void Motor_init(void) { MOTOR_EN; ftm_pwm_init(GO_FTM,GO_CH,MOTOR_FRE,0); ftm_pwm_init(BACK_FTM,BACK_CH,MOTOR_FRE,0); }