智能车制作

标题: 飞思卡尔 电磁组 程序求助 K60 有哪位大神看下这个简单的程序能简单的跑么? [打印本页]

作者: 喻勇全    时间: 2013-4-3 23:05
标题: 飞思卡尔 电磁组 程序求助 K60 有哪位大神看下这个简单的程序能简单的跑么?

int a; //保存ADC转换结果
int b;
int c;
int d;
int e;
int f;
int flag;
void  main()
{
FTM_PWM_init(FTM1, CH0, 10000, 50); //初始化FTM1_CH0输出频率为35kHZ,占空比为50%的PWM :FTM1_CH0对应PTA8口
      FTM_PWM_init(FTM0, CH7, 10000, 50);//初始化FTM1_CH0输出频率为35kHZ,占空比为50%的PWM :FTM1_CH0对应PTD7口  电机
      FTM_PWM_init(FTM1, CH1, 100, 50); //初始化FTM1_CH0输出频率为35kHZ,占空比为50%的PWM :FTM1_CH0对应PTA9口  舵机
  
adc_init(ADC1,SE4a); //初始化ADC1_SE4a ,ADC1_SE4a对应为PTE0
adc_init(ADC1,SE5a); //初始化ADC1_SE5a ,ADC1_SE5a对应为PTE1
adc_init(ADC1,SE6a); //初始化ADC1_SE6a ,ADC1_SE6a对应为PTE2
adc_init(ADC1,SE7a); //初始化ADC1_SE7a ,ADC1_SE7a对应为PTE3
adc_init(ADC1,SE4b); //初始化ADC1_SE4b ,ADC1_SE4b对应为PTc8
adc_init(ADC1,SE5b); //初始化ADC1_SE5b ,ADC1_SE5b对应为PTc9
while(1)
{
a = ad_mid(ADC1,SE4a,ADC_16bit); //读取 ADC1_SE4a ,16位精度
b = ad_mid(ADC1,SE5a,ADC_16bit); //读取 ADC1_SE5a ,16位精度
c = ad_mid(ADC1,SE6a,ADC_16bit); //读取 ADC1_SE6a ,16位精度
d = ad_mid(ADC1,SE7a,ADC_16bit); //读取 ADC1_SE7a ,16位精度
e = ad_mid(ADC1,SE4b,ADC_16bit); //读取 ADC1_SE4b ,16位精度
f = ad_mid(ADC1,SE5b,ADC_16bit); //读取 ADC1_SE5b ,16位精度
  
  if(a>0)                //A0   最左边
  { flag = 0 ; }
  
else if(b>0)
{ flag = 1 ; }
  
  else if(c>0)
  { flag = 2 ; }
  
  else if(c>0&&d>0)  //  中间
  { flag = 3 ; }
  
  else if(d>0)
  { flag = 4; }  
  
else if(e>0)
{ flag = 5 ; }
   else if(f>0)
  { flag = 6 ; }                  //A5  最右边

  switch(flag)       //电机与舵机控制转向
  {
           
  case 0:FTM_PWM_Duty(FTM1, CH0,30);FTM_PWM_Duty(FTM1, CH1,13); break;
   
  case 1:FTM_PWM_Duty(FTM1, CH0,30);FTM_PWM_Duty(FTM1, CH1,14); break;
   
  case 2:FTM_PWM_Duty(FTM1, CH0,30);FTM_PWM_Duty(FTM1, CH1,15); break;//高速 以最小角度恢复
   
   
   
  case 3:FTM_PWM_Duty(FTM1, CH0,30);FTM_PWM_Duty(FTM1, CH1,16); break;//直行速度MAX
   
                                       
  case 4:FTM_PWM_Duty(FTM1, CH0,30);FTM_PWM_Duty(FTM1, CH1,17); break;//高速 以最小角度恢复
   
  case 5:FTM_PWM_Duty(FTM1, CH0,30);FTM_PWM_Duty(FTM1, CH1,18); break;
   
  case 6:FTM_PWM_Duty(FTM1, CH0,30);FTM_PWM_Duty(FTM1, CH1,19); break;

   
  default:FTM_PWM_Duty(FTM1, CH0,30);FTM_PWM_Duty(FTM1, CH1,16); break;
  }
   }
  }
  //交叉线判断
  if(((a >0) || (b >0))&& ((e>0) || (f>0)))
  {
FTM_PWM_Duty(FTM1, CH0,20);FTM_PWM_Duty(FTM1, CH1,16);
     return ;
  }

作者: skywolf    时间: 2013-4-3 23:34
你试一下不就知道了么?
作者: sdlibin007@qq.c    时间: 2013-4-4 00:52
试试啊
作者: syjh7370628    时间: 2013-4-7 14:23
实践出真知,试一下,慢慢改进。
作者: 270136977    时间: 2013-4-7 16:56
程序这东西,还是试试的比较准吧




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2