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