#include "uart_driver.h"
void s3c2440_putchar(char c)
{
switch(c)
{
case '\n':
uart_putchar('\r');
break;
case '\b':
uart_putchar('\b');
uart_putchar(' ');
break;
default:
break;
}
uart_putchar(c);
}
char s3c2440_getchar(void)
{
char c = uart_getchar();
return c=='\r'?'\n':c;
}
void s3c2440_puts(const char *str)
{
while(*str)
s3c2440_putchar(*str++);
}
void s3c2440_putint_1(int num)
{
int n,m;
if(num==0)
return;
n = num%10;
m = num/10;
s3c2440_putint_1(m);
s3c2440_putchar(n+'0');
}
void s3c2440_putint(int num)
{
if(num==0)
s3c2440_putchar('0');
else
s3c2440_putint_1(num);
}
int strlen(const char *str)
{
const char *s = str;
while(*str++)
;
return str - s - 1;
}
void inverse(char *str)
{
int len,i,temp;
len = strlen(str);
for(i=0;i<len/2;i++)
{
temp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = temp;
}
}
/**********************************
void s3c2440_putint(int num)
{
char str[11];
int i = 0;
do{
str[i++] = num%10 + '0';
num/=10;
}while(num!=0);
str[i] = 0;
inverse(str);
s3c2440_puts(str);
}
**********************************/
void s3c2440_putchar_hex(char c)
{
char hex[] = "0123456789ABCDEF";
s3c2440_putchar(hex[(c>>4 & 0xF)]);
s3c2440_putchar(hex[(c>>0 & 0xF)]);
}
void s3c2440_putint_hex(int num)
{
s3c2440_putchar_hex(num>>24 & 0xFF);
s3c2440_putchar_hex(num>>16 & 0xFF);
s3c2440_putchar_hex(num>>8 & 0xFF);
s3c2440_putchar_hex(num>>0 & 0xFF);
}
int s3c2440_printf(const char *format,...)
{
char c;
int total = 0;
int *addr = (int*)&format;
while((c=*format)!=0)
{
if(c=='%')
{
format++;
switch(*format)
{
case 's':
total++;
s3c2440_puts(*(char**)(++addr));
break;
case 'd':
total++;
s3c2440_putint(*(int*)(++addr));
break;
case 'c':
total++;
s3c2440_putchar(*(char*)(++addr));
break;
case 'x':
total++;
s3c2440_putint_hex(*(int*)(++addr));
break;
default:
s3c2440_putchar('%');
s3c2440_putchar(*format);
}
}
else
{
s3c2440_putchar(c);
}
format++;
}
return total;
}
s3c2440 串口 裸机驱动 实现printf函数功能
需积分: 31 88 浏览量
2014-10-22
10:26:17
上传
评论
收藏 35KB RAR 举报
Vitas_yang_C
- 粉丝: 0
- 资源: 5
最新资源
- Python的pyqt5写的图书管理系统期末大作业源码带文档设计.zip
- pcff_interface_v1_5.off
- apk.tw_LineLite_v8a_v.2.17.1_sign.apk
- Elasticsearch实战:构建高效搜索系统的秘诀.zip
- HTML+CSS+JS网页设计:从入门到精通.zip
- 数据库课程设计:从理论到实践的全面指南.zip
- Python闭包:深入理解与应用场景解析.zip
- Win64OpenSSL-3-3-0.exe
- 课高分程设计-基于C++实现的民航飞行与地图简易管理系统-南京航空航天大学
- 航天器遥测数据故障检测系统python源码+文档说明+数据库(课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈