예제 #1
0
void myprintf(const char *format, ...)  
{  
  if(format == NULL){  
    return;  
  }  
    
  va_start(args, format);  
    
  while(*format != '\0'){  
    while(*format != '%' && *format != '\0'){  
      UsartPut(*format);  
      format++;         
    }  
  
    if(*format != '\0'){  
      format++;  
      if(*format != '\0'){  
        check_type(*format);  
        format++;  
      }else{  
        UsartPut(*(format-1));  
      }  
    }  
  }  
  
  va_end(args);  
}  
예제 #2
0
void print_int(int num, int mode, int flag)  
{  
  if(num == 0){  
    if(flag == 0){  
      UsartPut('0');  
      return;  
    }else{  
      return;  
    }  
  }  
  
  print_int(num/mode, mode, 1);  
  UsartPut(sign[ num%mode ]);  
}  
예제 #3
0
void check_type(char type)  
{  
  switch(type)
  {  
    case 'd':
    {  
      int num = va_arg(args, int);  
  
      if(num < 0){  
        UsartPut('-');  
        num = num * (-1);  
      }  
  
      print_int(num, 10, 0);  
      break;  
    }  
  
    case 'c':
    {  
      char ch = (char)va_arg(args, int);  
      UsartPut(ch);  
      break;  
    }  
    
    case 's':
    {  
      char *str = va_arg(args, char *);  
      print_str(str);  
      break;  
    }  
    
    case 'f':
    {  
      float num = (float)va_arg(args, double);  
    
      if(num < 0)  {  
        UsartPut('-');  
        num = num * (-1);  
      }  
    
      print_float(num);  
      break;  
    }  
    
    case 'p':
    {  
      int num = va_arg(args, int);  
      UsartPut('0');  
      UsartPut('x');  
      print_int(num, 16, 0);  
      break;  
    }  
    
    default:
    {  
      UsartPut('%');  
      UsartPut(type);  
    }  
  }  
}  
예제 #4
0
void print_float(float num)  
{  
  int part = (int)num/1;  
  
  print_int(part, 10, 0);  
  UsartPut('.');  
  part=num*1000000-part*1000000;  
  print_int(part, 10, 0);  
}  
예제 #5
0
void print_str(char const *str)  
{  
  if(str == NULL)  
  {  
    return;  
  }  
  
  while(*str != '\0')  
  {  
    UsartPut(*str);  
    str++;  
  }  
}  
예제 #6
0
//f-//////////////////////////////////////////////////////////////////////////
int fputc(USART_TypeDef* USARTx,int ch, FILE * f)
{
   UsartPut(USARTx, ch);
   return ch;
}