www.pudn.com > 9200-DS1307.rar > printfk.c


#include "printfk.h" 
#include  
#include  
 
extern void AT91F_DBGU_Printk(char *buffer); 
 
void uprintf(char *fmt,...) 
{ 
    va_list ap; 
    char string[256]; 
 
    va_start(ap,fmt); 
    vsprintf(string,fmt,ap); 
    AT91F_DBGU_Printk(string); 
    va_end(ap); 
} 
 
//*---------------------------------------------------------------------------- 
//* \fn    AT91F_DBGU_Frame 
//* \brief This function is used to send a string through the DBGU channel 
//*---------------------------------------------------------------------------- 
void AT91F_DBGU_Frame(	char *buffer) 
{ 
	unsigned char len; 
 
	for (len =0; buffer[len] != '\0'; len++){} 
	AT91F_US_SendFrame((AT91PS_USART)AT91C_BASE_DBGU, buffer,len,0,0); 
 
} 
//*---------------------------------------------------------------------------- 
//* \fn    AT91F_DBGU_getc 
//* \brief This function is used to receive a character to the DBGU channel 
//*---------------------------------------------------------------------------- 
char AT91F_DBGU_getc(void) 
{ 
	while (!AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_DBGU)); 
	return AT91F_US_GetChar((AT91PS_USART) AT91C_BASE_DBGU); 
} 
 
//*---------------------------------------------------------------------------- 
//* \fn    AT91F_DBGU_scanf 
//* \brief Get a string to USART manage Blackspace and echo 
//*---------------------------------------------------------------------------- 
void AT91F_DBGU_scanf(char * type,unsigned int * val) 
{//* Begin 
    unsigned int read = 0; 
    char buff[10]; 
    unsigned int nb_read =0; 
 
    while( (read != 0x0D) & (nb_read != sizeof(buff)) ) { 
        //* wait the USART Ready for reception 
	 while((AT91C_BASE_DBGU->DBGU_CSR  & AT91C_US_RXRDY) == 0 ) ; 
        //* Get a char 
	read = AT91C_BASE_DBGU->DBGU_RHR ; 
        buff[nb_read]= (char)read; 
        //* Manage Blackspace 
        while((AT91C_BASE_DBGU->DBGU_CSR & AT91C_US_TXRDY) ==0)  {} 
        if ((char)read == 0x08) { 
            if ( nb_read != 0 ) { 
              nb_read--; 
              AT91C_BASE_DBGU->DBGU_THR = read; 
            } 
        } 
        else { 
          //* echo 
          AT91C_BASE_DBGU->DBGU_THR = read; 
          nb_read++; 
        } 
    } 
    //* scan the value 
    sscanf(buff,type,val); 
}//* End