HI3531ARM调试printf的实现
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++);
}
}
最新文章
- JavaScript权威指南 - 数组
- postgresql 设置只读用户
- 通过SQL Server 2008数据库复制实现数据库同步备份
- LightOJ Beginners Problems 部分题解
- 【leetcode】Rotate Image(middle)
- CART:分类与回归树
- Effective C++笔记:构造/析构/赋值运算
- android 开发工具(android studio)
- 近期十大优秀jQuery插件推荐
- 记录一次linux线上服务器被黑事件
- js+css3 动画数字累加
- Moderate 加入空格使得可辨别单词数量最多 @CareerCup
- 【转】CodeGear RAD 2007 SP4
- 在android中,如何去掉webview读取网页后点击网页上的按钮出现的方框
- .35-浅析webpack源码之babel-loader入口文件路径读取
- 非正则表达式检验邮箱格式是否合法(Java代码实现)
- phpcms栏目点击选中
- git 的安装及使用
- Tomcat定义虚拟主机案例
- 模仿jQuery的ajax的封装