做嵌入式产品时,因为printf函数默认输出的设备是显示屏,而我们开发工程师更多的时候是为了获取调试信息,而这调试信息我们希望是通过串口来发送,这时候,就需要我们自己来写一个输入输出函数了,因为大多数调试信息都是以字符形式存在的,所以下面的程序只是发送字符类型的
//首先要声明串口初始化的函数,这两个函数根据机器类型的不同的不同
void uart_put(char c);
char uart_put(void);
//发送一个字符的函数
void putchar(char c)
{
//在linux系统'\n'代表回车加换行
//在window系统'\r''\n'才代表回车加换行
//而我们的调试信息一般在window下查看,所以要替换
if(c == '\n')
{
uart_put('\r');
}
uart_put(c);
}
//发送字符串的函数
void puts(const char *p)
{
while(*p == '\0')
{
uart_put(*p);
p++;
}
}
//接收字符的函数
char getchar(void)
{
return uart_get();
}
//接收字符串的函数
char gets(char *p)
{
char c;
while((c=getchar())!= '\r')
{
//判断是否按了删除键
if(c != '\b')
{
*p = c;
//这个是字符回显功能
putchar(c);
p++;
}
if(c == '\b')
{
//如果按了删除键,就删除前面的字符
putchar('\b');
putchar(' ');
putchar('\b');
p--;
}
}
//在字符串结尾加上结束符
*p = '\0';
}