HI3531ARM调试printf的实现

简介: <p>void UART_Putc(char c)<br> {<br>     if (c == '\n')<br>   *(unsigned int *)(UART0_ADDR  + 0X00) =  '\r';<br>     delay_x(0x800);<br>  *(unsigned int *)(UART0_ADDR  + 0X00) = c;<br>  <br>

void UART_Putc(char c)
{
    if (c == '\n')
  *(unsigned int *)(UART0_ADDR  + 0X00) =  '\r';
    delay_x(0x800);
 *(unsigned int *)(UART0_ADDR  + 0X00) = c;
 
}
unsigned int val_i=0;
void UART_Print(const char *str,...)
{
    va_list unnamed_p;
    char *sval;
    unsigned int tmp=0;
    va_start( unnamed_p, str);


    while (*str)
 {
     //
     if(*str=='%')
     {
       switch(*++str)
       {
           case 'd'://输出十进制
               break;
           case 'c'://输出字符
               break;
           case 's'://输出字符串
               for(sval = va_arg(unnamed_p,char*);*sval;sval++)
               {
                   UART_Putc(*sval);
               }
               str++;
               break;
           case 'X'://输出16十进制
           case 'x'://输出16十进制
               val_i = va_arg(unnamed_p,unsigned int);
               //
               UART_Putc('0');delay_x(0X800);
               UART_Putc('x');delay_x(0X800);
               for(i=0;i<8;i++)
               {
                   delay_x(0X800);
                   tmp = val_i>>(4*(7-i));
                   val_i = val_i&(~(0xff<<(4*(7-i))));
                   //
                   if(tmp<10)
                       UART_Putc('0'+tmp);
                   else
                       UART_Putc('A'+tmp-10);
                   //
               }
               //
               str++;
               break;
          default://输出字符
               break;
         
       }
     }
     //
  UART_Putc(*str++);
  
 }
}

相关文章
|
5月前
|
NoSQL Linux C语言
Linux GDB 调试
Linux GDB 调试
74 10
|
8月前
|
Linux Android开发
Linux(6)CH9434 SPI调试笔记
Linux(6)CH9434 SPI调试笔记
311 0
|
8月前
|
NoSQL Java Unix
linux专题:GDB详细调试方法与实现
linux专题:GDB详细调试方法与实现
257 0
|
NoSQL Docker 容器
core 文件与gdb 调试
core 文件与gdb 调试
50 0
|
Linux 项目管理 开发者
Linux内核基础篇——printk调试
Linux内核基础篇——printk调试
|
NoSQL Linux C语言
【linux】“gdb“调试方法与技巧
【linux】“gdb“调试方法与技巧
|
存储 Linux
Linux下实现自己的printf函数
Linux下实现自己的printf函数
162 0
|
NoSQL 网络协议 数据可视化
ARM深入理解-hypervisor调试方法二(QEMU+GDB调试ARM程序)
ARM深入理解-hypervisor调试方法二(QEMU+GDB调试ARM程序)
Linux Command printf 输出
Linux Command printf 输出
|
NoSQL C语言
gdb core调试
原文链接 http://blog.163.com/lanka83/blog/static/32637615200801793020182/http://blog.csdn.net/taina2008/archive/2007/08/09/1733464.
1091 0