/*=====================================================================================================*/
void System_Init( void )
{
  SystemInit();
  LED_Config();
  KEY_Config();
  RS232_Config();
  I2C_Config();
  Motor_Config();
  nRF24L01_Config();

  PID_Init(&PID_Yaw);
  PID_Init(&PID_Roll);
  PID_Init(&PID_Pitch);

  PID_Pitch.Kp = +3.5f;
  PID_Pitch.Ki = +0.004f;
  PID_Pitch.Kd = +4.0f;

  PID_Roll.Kp  = +3.5f;
  PID_Roll.Ki  = +0.004f;
  PID_Roll.Kd  = +4.0f;

  PID_Yaw.Kp   = +0.0f;
  PID_Yaw.Ki   = +0.0f;
  PID_Yaw.Kd   = +0.25f;

  Delay_10ms(2);
}
/*=====================================================================================================*/
void System_Init(void)
{
	SystemInit();

	LED_Config();
	KEY_Config();
	RS232_Config();
	Motor_Config();
	PWM_Capture_Config();
	Sensor_Config();
	nRF24L01_Config();

	PID_Init(&PID_Yaw);
	PID_Init(&PID_Roll);
	PID_Init(&PID_Pitch);

	PID_Pitch.Kp = +1.5f;
	PID_Pitch.Ki = +0.002f;
	PID_Pitch.Kd = +1.0f;

	PID_Roll.Kp  = +1.5f;
	PID_Roll.Ki  = +0.002f;
	PID_Roll.Kd  = +1.0f;

	PID_Yaw.Kp   = +0.0f;
	PID_Yaw.Ki   = +0.0f;
	PID_Yaw.Kd   = +0.0f;

	Delay_10ms(2);
}
/*====================================================================================================*/
int main( void )
{
  static uint8_t i = 0;
  static uint8_t RecvData = 0;
  static int8_t State = ERROR;

  GPIO_Config();
  RS232_Config();

  LED_R = 0;

  printf("\r\nHello World!\r\n\r\n");

  while(1) {
    LED_G = !LED_G;
    State = RS232_RecvDataWTO((int8_t*)&RecvData, 1, 200);
    if(State == ERROR) {
      printf("Timeout ... %d\r\n", i);
      i = (i == 255) ? 0 : i + 1;
    }
    else if(RecvData == 0x0D)  // if press enter
      RS232_SendStr((int8_t*)"\r\n");
    else
      RS232_SendData((int8_t*)&RecvData, 1);
  }
}
Beispiel #4
0
/*====================================================================================================*/
int main( void )
{
  int32_t Temp = 0;

  GPIO_Config();
  TEMP_Config();
  RS232_Config();

  Delay_1ms(1);

  RS232_SendStr("\r\nHello World!\r\n\r\n");

  while(1) {
    LED_1_Toggle();
    LED_2_Toggle();
    LED_3_Toggle();
    LED_4_Toggle();
    Delay_100ms(5);

    RS232_SendStr("Chip Temp : ");
    Temp = (TEMP_GetTemp()*25);
    RS232_SendNum(Type_D, 5, Temp);
    RS232_SendStr(" deg\r\n");
  }
}
/*====================================================================================================*/
int main( void )
{
  SystemInit();
  GPIO_Config();
  RS232_Config();
  NRF24L01_Config();

#if (NRF_MODE == NRF_MODE_FTLR)
  NRF24L01_Init(NRF_MODE_FTLR);

  while(1) {
    LED_G = !LED_G;
    NRF_FTLR();
  }
#endif

#if (NRF_MODE == NRF_MODE_FRLT)
  NRF24L01_Init(NRF_MODE_FRLT);

  while(1) {
    LED_R = !LED_R;
    NRF_FRLT();
  }
#endif
}
/*=====================================================================================================*/
int main( void )
{
  s16 i = 0;
  u8 TrData[4][16] = {0};

	SystemInit();
  System_SetVectorTable(IAP_FLASH_SIZE);
	GPIO_Config();
	RS232_Config();

  while(1) {
    PAO(1)  = LED_R;
    PAO(2)  = LED_R;
    PAO(3)  = LED_R;
    PAO(4)  = LED_R;
    PAO(5)  = LED_R;
    PAO(6)  = LED_R;
    PAO(7)  = LED_R;
    PAO(8)  = LED_R;
    PAO(11) = LED_R;
    PAO(12) = LED_R;
    PAO(15) = LED_R;
    PBO(0)  = LED_R;
    PBO(1)  = LED_R;
    PBO(3)  = LED_R;
    PBO(4)  = LED_R;
    PBO(5)  = LED_R;
    PBO(6)  = LED_R;
    PBO(7)  = LED_R;
    PBO(8)  = LED_R;
    PBO(9)  = LED_R;
    PBO(10) = LED_R;
    PBO(11) = LED_R;
    PBO(12) = LED_R;
    PBO(13) = LED_R;
    PBO(14) = LED_R;
    PBO(15) = LED_R;

    LED_R = ~LED_R;
    Delay_10ms(10);
    if(KEY_BO == 1) {
      LED_G = ~LED_G;
      Delay_10ms(10);
    }
    if(KEY_WU == 1) {
      LED_B = ~LED_B;
      Delay_10ms(10);
    }

    i++;
    if(i == 1024)  i = -1024;

    NumToChar(Type_I, 5, TrData[0], i);
    RS232_Print(USART1, (u8*)"CH1,");
    RS232_Print(USART1, TrData[0]);
    RS232_Print(USART1, (u8*)"\r\n");
	}
}
void system_init(void)
{
	LED_Config();
	KEY_Config();
	RS232_Config();
	Motor_Config();
	PWM_Capture_Config();
	Sensor_Config();
	nRF24L01_Config();

#if configSD_BOARD
	SDIO_Config();
#endif

	PID_Init(&PID_Yaw);
	PID_Init(&PID_Roll);
	PID_Init(&PID_Pitch);

	PID_Pitch.Kp = +4.0f;
	PID_Pitch.Ki = 0;//0.002f;
	PID_Pitch.Kd = +1.5f;

	PID_Roll.Kp = +4.0f;
	PID_Roll.Ki = 0;//0.002f;
	PID_Roll.Kd = 1.5f;

	PID_Yaw.Kp = +5.0f;
	PID_Yaw.Ki = +0.0f;
	PID_Yaw.Kd = +15.0f;

	Delay_10ms(10);

	Motor_Control(PWM_MOTOR_MIN, PWM_MOTOR_MIN, PWM_MOTOR_MIN, PWM_MOTOR_MIN);


#if configFLIGHT_CONTROL_BOARD
	/* nRF Check */
	while ( nRF_Check()== ERROR );

	/* Sensor Init */
	while(Sensor_Init() == ERROR);
#endif

	Delay_10ms(10);

	/* Lock */
	LED_R = 0;
	LED_G = 1;
	LED_B = 1;

	sys_status = SYSTEM_INITIALIZED;

}
/*=====================================================================================================*/
void QCopterFC_Init( void )
{
  u8 Sta = ERROR;

  SystemInit();

  LED_Config();
  KEY_Config();
  RS232_Config();
  Motor_Config();
  Sensor_Config();
  nRF24L01_Config();

  PID_Init(&PID_Yaw);
  PID_Init(&PID_Roll);
  PID_Init(&PID_Pitch);

  PID_Pitch.Kp = +1.5f;
  PID_Pitch.Ki = +0.002f;
  PID_Pitch.Kd = +1.0f;

  PID_Roll.Kp  = +1.5f;
  PID_Roll.Ki  = +0.002f;
  PID_Roll.Kd  = +1.0f;

  PID_Yaw.Kp   = +0.0f;
  PID_Yaw.Ki   = +0.0f;
  PID_Yaw.Kd   = +0.0f;

  RF_SendData.Packet = 0x00;

  /* Throttle Config */
  if(KEY == KEY_ON) {
    LED_B = 0;
    BLDC_CtrlPWM(BLDC_PWM_MAX, BLDC_PWM_MAX, BLDC_PWM_MAX, BLDC_PWM_MAX);
  }
  while(KEY == KEY_ON);
  LED_B = 1;
  BLDC_CtrlPWM(BLDC_PWM_MIN, BLDC_PWM_MIN, BLDC_PWM_MIN, BLDC_PWM_MIN);

  /* nRF Check */
  while(Sta == ERROR)
    Sta = nRF_Check();

  Delay_10ms(10);

  /* Sensor Init */
  if(Sensor_Init() == SUCCESS)
    LED_G = 0;

  Delay_10ms(10);
}
/*====================================================================================================*/
int main( void )
{
  HAL_Init();
  GPIO_Config();
  RS232_Config();

  printf("\r\nHello World!\r\n\r\n");

  while(1) {
    LED_G_Toggle;
    Delay_100ms(1);
  }
}
/*====================================================================================================*/
void System_Init( void )
{
  /* System Setup */
  SystemInit();

  /* Device Config */
  GPIO_Config();
  RS232_Config();
  Sensor_Config();

  LED_R = LED_ON;

  Sensor_Init();
  AHRS_Init(&NumQ, &AngE);

  LED_R = LED_OFF;
}
Beispiel #11
0
/*====================================================================================================*/
int main( void )
{
  GPIO_Config();
  RS232_Config();

  Delay_1ms(1);

  RS232_SendStr("\r\nHello World!\r\n\r\n");

  while(1) {
    LED_1_Toggle();
    LED_2_Toggle();
    LED_3_Toggle();
    LED_4_Toggle();
    Delay_100ms(5);
  }
}
/*====================================================================================================*/
int main( void )
{
  uint16_t ADC_Data = 0;

  GPIO_Config();
  ADC_Config();
  RS232_Config();

  while(1) {
    LED_R_Toggle;
    LED_G_Toggle;
    LED_B_Toggle;
    Delay_100ms(1);

    ADC_Data = ADC_ReadData();
    printf("ADC Read = %d\r\n", ADC_Data);
	}
}
/*=====================================================================================================*/
int main( void )
{
  SystemInit();
  GPIO_Config();
  ADC_Config();
  RS232_Config();

  while(1) {
    LED_G = ~LED_G;
    ADC_Average(ADC_AveTr);

    RS232_SendStr(USART3, (u8*)"ADC_1 = ");
    RS232_SendNum(USART3, Type_D, 5, ADC_AveTr[0]);
    RS232_SendStr(USART3, (u8*)"\r\n");
    RS232_SendStr(USART3, (u8*)"ADC_2 = ");
    RS232_SendNum(USART3, Type_D, 5, ADC_AveTr[1]);
    RS232_SendStr(USART3, (u8*)"\r\n\r\n");
  }
}
Beispiel #14
0
/*====================================================================================================*/
int main( void )
{
  u8 i = 0;

  SystemInit();
  GPIO_Config();
  RS232_Config();

  while(1) {
    LED = !LED;

    i++;

    RS232_SendStr((u8*)"i = ");
    RS232_SendNum(Type_D, 3, i);
    RS232_SendStr((u8*)"\r\n");

    if(i==255)  i = 0;

    Delay_100ms(1);
  }
}
/*=====================================================================================================*/
int main( void )
{
  u16 ADC_AVE[2] = {0};

  SystemInit();
  GPIO_Config();
  ADC_Config();
  RS232_Config();

  while(1) {
    LED_G = !LED_G;
    Delay_100ms(1);
    ADC_Average(ADC_AVE, 128);
    RS232_SendStr((u8*)"\f");
    RS232_SendStr((u8*)"ADC_I = ");
    RS232_SendNum(Type_D, 4, ADC_AVE[0]);
    RS232_SendStr((u8*)"\r\n");
    RS232_SendStr((u8*)"ADC_V = ");
    RS232_SendNum(Type_D, 4, ADC_AVE[1]);
    RS232_SendStr((u8*)"\r\n");
  }
}
int main( void )
{
  u32 ReadID = 0;

	SystemInit();
	GPIO_Config();
  I2C_Config();
	RS232_Config();

  Delay_1ms(10);

  LED_B = 0;

  while(ReadID != (MT9V022_ID<<8 | MT9V022_ID)) {
    ReadID = MT9V022_Init();
    LED_R = ~LED_R;
    Delay_100ms(1);
  }

  while(1) {
    LED_G = ~LED_G;
    Delay_100ms(1);
	}
}
/*=====================================================================================================*/
int main( void )
{
  u8 TrData[8] = {0};

	SystemInit();
	GPIO_Config();
	ADC_Config();
	RS232_Config();

  while(1) {
    LED_G = ~LED_G;
    ADC_Average(ADC_AveTr);

    TrData[0] = (u8)(ADC_AveTr[0]);
    TrData[1] = (u8)(ADC_AveTr[0]>>8);
    TrData[2] = (u8)(ADC_AveTr[1]);
    TrData[3] = (u8)(ADC_AveTr[1]>>8);
    TrData[4] = (u8)(0);
    TrData[5] = (u8)(0);
    TrData[6] = (u8)(0);
    TrData[7] = (u8)(0);
    RS232_VisualScope(USART3, TrData, 8);
	}
}
int main( void )
{
  u32 i = 0;
  u8 ReadBuf[128] = {0};
  u8 TrData[8][32] = {0};
  u8 WriteData[50] = "ABCDEFG";

  SystemInit();
  GPIO_Config();
  RS232_Config();

  LED_R = 1;
  LED_G = 1;

  // SD Card Init Info
  RS232_SendStr(USART3, (u8*)" \r\n");
  RS232_SendStr(USART3, (u8*)"----------------------\r\n");
  RS232_SendStr(USART3, (u8*)"----------------------\r\n");
  RS232_SendStr(USART3, (u8*)" SDIO SD FatFs demo\r\n");
  RS232_SendStr(USART3, (u8*)"----------------------\r\n");
  RS232_SendStr(USART3, (u8*)"----------------------\r\n\r\n");
  RS232_SendStr(USART3, (u8*)" SD Init ... ");
  while(SD_Init() != SD_OK) {
    RS232_SendStr(USART3, (u8*)"Failed!!\r\n");
    while(1) {
      LED_R = ~LED_R;
      Delay_100ms(2);
    }
  }
  RS232_SendStr(USART3, (u8*)"OK!!\r\n\r\n");

  RS232_SendStr(USART3, (u8*)"-----SD Init Info-----\r\n");

  RS232_SendStr(USART3, (u8*)" Capacity : ");
  NumToChar(Type_D, 5, TrData[0], SDCardInfo.CardCapacity>>20);
  RS232_SendStr(USART3, TrData[0]);
  RS232_SendStr(USART3, (u8*)" MB\r\n");

  RS232_SendStr(USART3, (u8*)" CardBlockSize : ");
  NumToChar(Type_D, 5, TrData[1], SDCardInfo.CardBlockSize);
  RS232_SendStr(USART3, TrData[1]);
  RS232_SendStr(USART3, (u8*)"\r\n");

  RS232_SendStr(USART3, (u8*)" CardType : ");
  NumToChar(Type_D, 5, TrData[2], SDCardInfo.CardType);
  RS232_SendStr(USART3, TrData[2]);
  RS232_SendStr(USART3, (u8*)"\r\n");

  RS232_SendStr(USART3, (u8*)" RCA : ");
  NumToChar(Type_D, 5, TrData[3], SDCardInfo.RCA);
  RS232_SendStr(USART3, TrData[3]);
  RS232_SendStr(USART3, (u8*)"\r\n");
  RS232_SendStr(USART3, (u8*)"----------------------\r\n");
  RS232_SendStr(USART3, (u8*)"\r\n");

  // Wait
  while(KEY != 1){
    LED_G = ~LED_G;
    Delay_100ms(2);
  }

  // Read Directory File
  RS232_SendStr(USART3, (u8*)"----------------------\r\n");
  RS232_SendStr(USART3, (u8*)" SD_Card Read Directory File\r\n");
  RS232_SendStr(USART3, (u8*)"----------------------\r\n\r\n");

  res = f_mount(&FatFs, "", 1);
  res = f_opendir(&dirs, "0:/");
  res = f_readdir(&dirs, &finfo);
  while(res!= FR_OK) {
    RS232_SendStr(USART3, (u8*)" FatFs failed!!\r\n");
    while(1) {
      LED_R = ~LED_R;
      Delay_100ms(2);
    }
  }
  RS232_SendStr(USART3, (u8*)" File name : \r\n");

  while(finfo.fname[0]) {
    f_readdir(&dirs, &finfo);
    if(!finfo.fname[0])
      break;
    RS232_SendStr(USART3, (u8*)" ... ");
    RS232_SendStr(USART3, (u8*)finfo.fname);
    RS232_SendStr(USART3, (u8*)"\r\n");
  }

  // Wait
  while(KEY != 1){
    LED_G = ~LED_G;
    Delay_100ms(2);
  }

  // Write File
  RS232_SendStr(USART3, (u8*)" f_open ... ");
  res = f_open(&file,"SDCard_K.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE);
  if(res==FR_OK)
    RS232_SendStr(USART3, (u8*)"OK!!\r\n");
  else
    RS232_SendStr(USART3, (u8*)"failed!!\r\n");

  RS232_SendStr(USART3, (u8*)" f_write ... ");
  res = f_write(&file, WriteData, 20, (UINT *)&i); 
  if(res==FR_OK)
    RS232_SendStr(USART3, (u8*)"OK!!\r\n");
  else
    RS232_SendStr(USART3, (u8*)"failed!!\r\n");

  file.fptr = 0;

  RS232_SendStr(USART3, (u8*)" f_read ... ");
  res = f_read(&file, ReadBuf, 100, (UINT *)&i);
  if(res==FR_OK)
    RS232_SendStr(USART3, (u8*)"OK!!\r\n");
  else
    RS232_SendStr(USART3, (u8*)"failed!!\r\n");

  f_close(&file);

  RS232_SendStr(USART3, ReadBuf);

  while(1) {
    LED_G = ~LED_G;
    Delay_100ms(2);
  }
}
int main( void )
{
  u32 i = 0;
  u8 FileNum = 0;
  u8 ReadBuf[128] = {0};
  u8 WriteData[50] = "ABCDEFG";

  SystemInit();
  GPIO_Config();
  RS232_Config();
  R61581_Config();
  R61581_Init();

  LED_R = 1;
  LED_G = 1;
  LED_B = 1;
  LED_Y = 1;

  LED_R = 0;
  LCD_Clear(BLACK);

  // SD Card Init Info
  #define Axis_X 10
  #define Axis_Y 0
  LCD_PutStr(Axis_X, Axis_Y+16*0, (u8*)"-----------------------", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X, Axis_Y+16*1, (u8*)" SDIO SD Fatfs demo",     ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X, Axis_Y+16*2, (u8*)"-----------------------", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X, Axis_Y+16*3, (u8*)" SD Init ... ", ASCII1608, WHITE, BLACK);
  RS232_SendStr(USART2, (u8*)" \r\n");
  RS232_SendStr(USART2, (u8*)"----------------------\r\n");
  RS232_SendStr(USART2, (u8*)"----------------------\r\n");
  RS232_SendStr(USART2, (u8*)" SDIO SD FatFs demo\r\n");
  RS232_SendStr(USART2, (u8*)"----------------------\r\n");
  RS232_SendStr(USART2, (u8*)"----------------------\r\n\r\n");
  RS232_SendStr(USART2, (u8*)" SD Init ... ");
  while(SD_Init() != SD_OK) {
    LCD_PutStr(Axis_X+8*13, Axis_Y+16*3, (u8*)"Failed!!", ASCII1608, WHITE, BLACK);
    RS232_SendStr(USART2, (u8*)"Failed!!\r\n");
    while(1) {
      LED_R = ~LED_R;
      Delay_100ms(2);
    }
  }
  LCD_PutStr(Axis_X+8*13, Axis_Y+16*3, (u8*)"OK!!", ASCII1608, WHITE, BLACK);
  RS232_SendStr(USART2, (u8*)"OK!!\r\n\r\n");

  LCD_PutStr(Axis_X,      Axis_Y+16*5,  (u8*)"---- SD Init Info -----", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X,      Axis_Y+16*6,  (u8*)" Capacity : ", ASCII1608, WHITE, BLACK);
  LCD_PutNum(Axis_X+8*12, Axis_Y+16*6,  Type_D, 5, SDCardInfo.CardCapacity>>20, WHITE, BLACK);
  LCD_PutStr(Axis_X+8*17, Axis_Y+16*6,  (u8*)" MB", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X,      Axis_Y+16*7,  (u8*)" CardBlockSize : ", ASCII1608, WHITE, BLACK);
  LCD_PutNum(Axis_X+8*17, Axis_Y+16*7,  Type_D, 5, SDCardInfo.CardBlockSize, WHITE, BLACK);
  LCD_PutStr(Axis_X+8*22, Axis_Y+16*7,  (u8*)" ", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X,      Axis_Y+16*8,  (u8*)" CardType : ", ASCII1608, WHITE, BLACK);
  LCD_PutNum(Axis_X+8*12, Axis_Y+16*8,  Type_D, 5, SDCardInfo.CardType, WHITE, BLACK);
  LCD_PutStr(Axis_X+8*17, Axis_Y+16*8,  (u8*)" ", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X,      Axis_Y+16*9,  (u8*)" RCA : ", ASCII1608, WHITE, BLACK);
  LCD_PutNum(Axis_X+8*7,  Axis_Y+16*9,  Type_D, 5, SDCardInfo.RCA, WHITE, BLACK);
  LCD_PutStr(Axis_X+8*12, Axis_Y+16*9,  (u8*)" ", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X,      Axis_Y+16*10, (u8*)"-----------------------", ASCII1608, WHITE, BLACK);
  RS232_SendStr(USART2, (u8*)"-----SD Init Info-----\r\n");
  RS232_SendStr(USART2, (u8*)" Capacity : ");
  RS232_SendNum(USART2, Type_D, 5, SDCardInfo.CardCapacity>>20);
  RS232_SendStr(USART2, (u8*)" MB\r\n");
  RS232_SendStr(USART2, (u8*)" CardBlockSize : ");
  RS232_SendNum(USART2, Type_D, 5, SDCardInfo.CardBlockSize);
  RS232_SendStr(USART2, (u8*)"\r\n");
  RS232_SendStr(USART2, (u8*)" CardType : ");
  RS232_SendNum(USART2, Type_D, 5, SDCardInfo.CardType);
  RS232_SendStr(USART2, (u8*)"\r\n");
  RS232_SendStr(USART2, (u8*)" RCA : ");
  RS232_SendNum(USART2, Type_D, 5, SDCardInfo.RCA);
  RS232_SendStr(USART2, (u8*)"\r\n");
  RS232_SendStr(USART2, (u8*)"----------------------\r\n");
  RS232_SendStr(USART2, (u8*)"\r\n");

  Delay_100ms(1);
  //////////////////// Wait
  while(KEY_S2 != 1){
    LED_G = ~LED_G;
    Delay_100ms(5);
  }
  LED_G = 0;
  LCD_Clear(BLACK);

  // Read Directory File
  LCD_PutStr(Axis_X, Axis_Y+16*0, (u8*)"-----------------------", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X, Axis_Y+16*1, (u8*)" SD_Card Read Directory", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X, Axis_Y+16*2, (u8*)"-----------------------", ASCII1608, WHITE, BLACK);
  RS232_SendStr(USART2, (u8*)"----------------------\r\n");
  RS232_SendStr(USART2, (u8*)" SD_Card Read Directory File\r\n");
  RS232_SendStr(USART2, (u8*)"----------------------\r\n\r\n");

  res = f_mount(&FatFs, "", 1);
  res = f_opendir(&dirs, "0:/");
  res = f_readdir(&dirs, &finfo);
  while(res!= FR_OK) {
    LCD_PutStr(Axis_X, Axis_Y+16*3, (u8*)" Fatfs failed!!", ASCII1608, WHITE, BLACK);
    RS232_SendStr(USART2, (u8*)" FatFs failed!!\r\n");
    while(1) {
      LED_R = ~LED_R;
      Delay_100ms(2);
    }
  }
  LCD_PutStr(Axis_X, Axis_Y+16*3, (u8*)" File name : ", ASCII1608, WHITE, BLACK);
  RS232_SendStr(USART2, (u8*)" File name : \r\n");

  while(finfo.fname[0]) {
    f_readdir(&dirs, &finfo);
    if(!finfo.fname[0])
      break;
    if(FileNum<11) {
      LCD_PutStr(Axis_X,     Axis_Y+16*(3+FileNum), (u8*)" ... ", ASCII1608, WHITE, BLACK);
      LCD_PutStr(Axis_X+8*5, Axis_Y+16*(3+FileNum), (u8*)finfo.fname, ASCII1608, WHITE, BLACK);
    }
    else if((FileNum>=11) && (FileNum<22)) {
      LCD_PutStr(Axis_X+200,     Axis_Y+16*(3+FileNum-11), (u8*)" ... ", ASCII1608, WHITE, BLACK);
      LCD_PutStr(Axis_X+8*5+200, Axis_Y+16*(3+FileNum-11), (u8*)finfo.fname, ASCII1608, WHITE, BLACK);
    }
    else {
      FileNum = 0;
      break;
    }
    FileNum++;
    RS232_SendStr(USART2, (u8*)" ... ");
    RS232_SendStr(USART2, (u8*)finfo.fname);
    RS232_SendStr(USART2, (u8*)"\r\n");
  }

  Delay_100ms(1);
  //////////////////// Wait
  while(KEY_S2 != 1){
    LED_B = ~LED_B;
    Delay_100ms(5);
  }
  LED_B = 0;
  LCD_Clear(BLACK);

  // Write File
  LCD_PutStr(Axis_X, Axis_Y+16*0, (u8*)"-----------------------", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X, Axis_Y+16*1, (u8*)" SD_Card Write Data",     ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X, Axis_Y+16*2, (u8*)"-----------------------", ASCII1608, WHITE, BLACK);
  RS232_SendStr(USART2, (u8*)"-----------------------\r\n");
  RS232_SendStr(USART2, (u8*)" SD_Card Write Data File\r\n");
  RS232_SendStr(USART2, (u8*)"-----------------------\r\n\r\n");

  LCD_PutStr(Axis_X, Axis_Y+16*3, (u8*)" f_open ... ", ASCII1608, WHITE, BLACK);
  RS232_SendStr(USART2, (u8*)" f_open ... ");
  res = f_open(&file,"SDCard_K.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE);
  if(res==FR_OK) {
    LCD_PutStr(Axis_X+8*12, Axis_Y+16*3, (u8*)"OK!!", ASCII1608, WHITE, BLACK);
    RS232_SendStr(USART2, (u8*)"OK!!\r\n");
  }
  else {
    LCD_PutStr(Axis_X+8*12, Axis_Y+16*3, (u8*)"failed!!", ASCII1608, WHITE, BLACK);
    RS232_SendStr(USART2, (u8*)"failed!!\r\n");
  }

  LCD_PutStr(Axis_X, Axis_Y+16*4, (u8*)" f_write ... ", ASCII1608, WHITE, BLACK);

  RS232_SendStr(USART2, (u8*)" f_write ... ");
  res = f_write(&file, WriteData, 20, &i); 
  if(res==FR_OK) {
    LCD_PutStr(Axis_X+8*13, Axis_Y+16*4, (u8*)"OK!!", ASCII1608, WHITE, BLACK);
    RS232_SendStr(USART2, (u8*)"OK!!\r\n");
  }
  else {
    LCD_PutStr(Axis_X+8*13, Axis_Y+16*4, (u8*)"failed!!", ASCII1608, WHITE, BLACK);
    RS232_SendStr(USART2, (u8*)"failed!!\r\n");
  }

  file.fptr = 0;

  LCD_PutStr(Axis_X, Axis_Y+16*5, (u8*)" f_read ... ", ASCII1608, WHITE, BLACK);
  RS232_SendStr(USART2, (u8*)" f_read ... ");
  res = f_read(&file, ReadBuf, 100, &i);
  if(res==FR_OK) {
    LCD_PutStr(Axis_X+8*12, Axis_Y+16*5, (u8*)"OK!!", ASCII1608, WHITE, BLACK);
    RS232_SendStr(USART2, (u8*)"OK!!\r\n");
  }
  else {
    LCD_PutStr(Axis_X+8*12, Axis_Y+16*5, (u8*)"failed!!", ASCII1608, WHITE, BLACK);
    RS232_SendStr(USART2, (u8*)"failed!!\r\n");
  }

  f_close(&file);

  LCD_PutStr(Axis_X, Axis_Y+16*7, (u8*)" Read String : ", ASCII1608, WHITE, BLACK);
  LCD_PutStr(Axis_X+8*1, Axis_Y+16*8, (u8*)ReadBuf, ASCII1608, WHITE, BLACK);
  RS232_SendStr(USART2, ReadBuf);

  while(1) {
    LED_Y = ~LED_Y;
    Delay_100ms(2);
  }
}