Ejemplo n.º 1
0
//串口1接收中断服务例程
void isr_uart1_re(void)
{
    uint_8 ch;
    uint_8 flag = 1;
    
    DISABLE_INTERRUPTS;
    
    ch = uart_re1(UART_1, &flag);
    if (0 == flag)
    {
        uart_send1(UART_1, ch);
    }
 
    ENABLE_INTERRUPTS;
}
Ejemplo n.º 2
0
//-------------------------------------------------------------------------*
//函数名: uart0_isr                                                        *
//功  能: 串口0数据接收中断例                                              *
//说  明: 无                                                               *
//-------------------------------------------------------------------------*
void uart0_isr(void)
{ uint8 ch = 0;
  static uint8 send_data_flag = 0;
  uart_re1 (UART0, &ch);
   if(Stop_flag == true)
 {
    if(send_data_flag = 0 && ch == 0xaa)send_data_flag = 1;
    else if(send_data_flag = 1 && ch == 0x4a)send_data_flag = 2;
    else if(send_data_flag = 2 && ch == 0x06)send_data_flag = 3;
    else if(send_data_flag = 3 && ch == 0xbb)
    {
      send_data_flag = 0;
      Send_flag = true;
    }
   else send_data_flag = 0;
 }
 
 if(ch == 0xee)print_pixel_data();
 
}
Ejemplo n.º 3
0
//int GlobleRec[10];
void uart1_isr(void)
{
    uint8 ch;
    static uint8 data_flag = 0;
    //static uint8 i = 0;
    //static uint8 axis[4] = {0};
    static uint8 rec0[4]={0};
    //static uint8 send0[6]={0};
    static bool data_finish = true;
    static bool rev_data_fish = true;
    static uint8 revise_flag = 0;
    static uint8 buff_counter=0;
 
    
    //接收一个字节数据并回发
    uart_re1 (UART1, &ch);
    CH=ch;
    

   if(ch>0x60 &&ch<0x80)//判断接受字节为此范围数据则是遥控器信号
   {
//////////////////////////////接收目标位置坐标//////////////////////////////////
//    if(data_flag == 2)
//    {
//        axis[i] = ch;
//        i++;
//    }
//    if(i >= 4)
//    {
//        data_finish = false;
//        axistemp = *(int32 *)axis;
//        Axis_x = axistemp % 1000;
//        Axis_y = axistemp / 1000 % 1000;
//        symbolBit = axistemp / 1000000;
//        //Axis_y = *(int16 *)(axis + 2);
//        if(symbolBit == 1)Axis_y = -Axis_y;
//        if(symbolBit == 2)Axis_x = -Axis_x;
//        if(symbolBit == 3){Axis_y = -Axis_y;Axis_x = -Axis_x;}
//        i = 0;
//        data_flag = 0;
//        isrcounter++;
//        Axis_update = true;
//    }
//    else
//    {
//        data_finish = true;
//    }
//    
//    if(data_flag == 0 && Start_flag == true)
//    {
//        if(ch == Axis_First_Frame) data_flag = 1;
//        else           data_flag = 0;
//    }
//    else if (data_flag == 1 )
//    {
//        if(ch == Axis_End_Frame) data_flag = 2;
//        else           data_flag = 0;
//    }
////////////////////////////////////////////////////////////////////////////////    
//////////////////////////初始化参数接收////////////////////////////////////////
//  rev_data_fish = true;
//  if(Initial_flag == false)
//  {
//    if(revise_flag == 2)
//    {
//        revise_data[j] = ch;
//        j++;
//    }
//    if(j >= 82  && revise_data[80]== 0xD3 && revise_data[81]== 0xDA)
//    {
//        rev_data_fish = false;
//        c_revise_y = *(float *)revise_data;
//        c_revise_x = *(float *)(revise_data + 4 * 1);
//        Kp3 = *(float *)(revise_data + 4 * 2);
//        Ki3 = *(float *)(revise_data + 4 * 3);
//        Kd3 = *(float *)(revise_data + 4 * 4);
//        
//        Kp2 = *(float *)(revise_data + 4 * 5);
//        Ki2 = *(float *)(revise_data + 4 * 6);
//        Kd2 = *(float *)(revise_data + 4 * 7);
//        
//        Kp4 = *(float *)(revise_data + 4 * 8);
//        Ki4 = *(float *)(revise_data + 4 * 9);
//        Kd4 = *(float *)(revise_data + 4 * 10);
//        
//        Kx = *(float *)(revise_data + 4 * 11);
//        Kix = *(float *)(revise_data + 4 * 12);
//        Kdx = *(float *)(revise_data + 4 *13);
//        
//        Ky = *(float *)(revise_data + 4 * 14);
//        Kiy = *(float *)(revise_data + 4 * 15);
//        Kdy = *(float *)(revise_data + 4 * 16);
//        
//        Kp1 = *(float *)(revise_data + 4 * 17);
//        Ki1 = *(float *)(revise_data + 4 * 18);
//        Kd1 = *(float *)(revise_data + 4 * 19);   
//        j = 0;
//        revise_flag = 0;
//        Initial_flag = true;
//        
//        uart_send1 (UART1, Initial_Ok);
//        uart_send1 (UART1, Initial_Ok);
//        uart_send1 (UART1, Initial_Ok);//初始化完成
//        LED3_OFF;
//    }
//
//    
//        
//    
//    
//    if(revise_flag == 0 )
//    {
//        if(ch == Revise_First_Frame) revise_flag = 1;
//        else           revise_flag = 0;
//    }
//    else if (revise_flag == 1 )
//    {
//        if(ch == Revise_End_Frame) revise_flag = 2;
//        else           revise_flag = 0;
//    }
//  }
////////////////////////////////////////////////////////////////////////////////    
//////////////////////////判断发送数据命令//////////////////////////////////////
// if(Stop_flag == true)
// {
//    if(send_data_flag = 0 && ch == 0xaa)send_data_flag = 1;
//    else if(send_data_flag = 1 && ch == 0x4a)send_data_flag = 2;
//    else if(send_data_flag = 2 && ch == 0x06)send_data_flag = 3;
//    else if(send_data_flag = 3 && ch == 0xbb)
//    {
//      send_data_flag = 0;
//      Send_flag = true;
//    }
//   else send_data_flag = 0;
// }
////////////////////////////////////////////////////////////////////////////////    
//////////////////////////////控制命令//////////////////////////////////////////
    if(data_flag == 0 && revise_flag == 0 && data_finish == true && rev_data_fish == true)
    {
        switch( ch )
        {
        case 0x70 :
            Stop_flag = true;
            POWER_OFF;
            break;//停止
        case 0x6F :
            Landing   = true;
            break;//缓慢降落
        case 0x6D :
            Start_flag  = true;
            break;//握手信号
        case 0x6c :
            Backup_landing  = true;
            break;
        case FreeMode ://6e
            Fly_Mode = FreeMode;
            break;
        case 0x6b:
            startMotion = true;
            break;
        case 0x69:
          send_data =true;//开始发数据
          break;
        case 0x67:
          send_data = false;//停止发数据
          break;

        }
    }
   }
   
   else   //其余为舵机控制信号
   {  
        //接收数据缓冲区
        for(int i=0;i<3;i++)
        rec0[i]=rec0[i+1];//接收数据更新
        rec0[3]=ch;

        if(255==rec0[0])
        {
          if(rec0[1]>95)
          {
            rec0[1]=rec0[1];
          }
          if(rec0[2]>95)
          {
            rec0[2]=rec0[2];
          }
          if(253==rec0[3])
          {
            re_X=rec0[1];
            re_Y=rec0[2];
          }
          else if(252==rec0[3])
          {
            re_X=rec0[1];
            re_X=-re_X;
            re_Y=rec0[2];
          }
          else if(251==rec0[3])
          {
            re_X=rec0[1];
            re_Y=rec0[2];
            re_Y=-re_Y;
          }
          else if(250==rec0[3])
          {
            re_X=rec0[1];
            re_Y=rec0[2];
            re_X=-re_X;
            re_Y=-re_Y;
          }
          for(int j=0;j<4;j++)//读取数据后缓冲区清零
          {
              rec0[j]=0;
          }
          signal_target=true;
        }
//        if(255==rec0[0]&&254==rec0[5])
//        {
//          if(0!=rec0[1])
//          {
//            re_X=rec0[1];
//          }
//          else
//          {
//            re_X=-rec0[2];
//          }
//          if(0!=rec0[3])
//          {
//            re_Y=rec0[3];
//          }
//          else
//          {
//            re_Y=-rec0[4];
//          }
//          for(int j=0;j<6;j++)//读取数据后缓冲区清零
//          {
//             rec0[j]=0;
//          }
//          signal_target=true;
//          
//        }
//        else if(253==rec0[0])
//        {
//            targetlosetime++;
//            if(targetlosetime==10)
//            {
//              //signal_target=false;
//              targetlosetime=0;
//            }
//        }

//        send0[0]=255;
//        if(PointX>=0)
//          {
//            send0[1]=(uint8)PointX;
//          }
//          else
//          {
//            send0[2]=(uint8)-PointX;
//          }
//        if(PointY>=0)
//          {
//            send0[3]=(uint8)PointY;
//          }
//          else
//          {
//            send0[4]=(uint8)-PointY;
//          }
//        send0[5]=254;
//        
//          uart_send1 (UART1, send0[buff_counter]);
//          buff_counter++;
//          if(buff_counter==6)buff_counter=0;
   }
  
   
        
}