*附件:HX_DSC28034_SCI_Interrupt.zip
前言
前面我们实现了串口驱动,可以方便的进行串口收发了,现在我们来移植轻量化的标准输入输出函数库,以实现标准输入输出。在此基础上利用数学计算库就可以实现基于命令行的计算器。本芯片在DSP方面的扩展是一个特点,代码提供了数学库,可以使用。
准备
http://elm-chan.org/fsw/strf/xprintf.html下下载代码
代码移植
将下载的代码xprintf.c和xprintf.h添加到工程中
Xprintf.h中配置如下宏,这里除了浮点支持全部使能了
需要通过以下宏设置,读写接口
xdev_out(func)
xdev_in(func)
Main.c中实现接口
#include "xprintf.h"
void xprintf_putch(int ch)
{
uint8_t val = ch;
uart_write(&val, 1);
}
int xprintf_getch(void)
{
uint8_t ch;
while(uart_read(&ch, 1) == 0);
return ch;
}
Main函数中设置接口
xdev_out(xprintf_putch);
xdev_in(xprintf_getch);
测试
xdev_out(xprintf_putch);
xdev_in(xprintf_getch);
xprintf("%d\n", 1234);
xprintf("%6d,%3d%%\n", -200, 5);
xprintf("%-6u\n", 100);
xprintf("%ld\n", 12345678);
xprintf("%llu\n", 0x100000000);
xprintf("%lld\n", -1LL);
xprintf("%04x\n", 0xA3);
xprintf("%08lX\n", 0x123ABC);
xprintf("%016b\n", 0x550F);
xprintf("%*d\n", 6, 100);
xprintf("%s\n", "abcdefg");
xprintf("%5s\n", "abc");
xprintf("%-5s\n", "abc");
xprintf("%.5s\n", "abcdefg");
xprintf("%-5.2s\n", "abcdefg");
xprintf("%c\n", 'a');
for(;;)
{
char buffer[64];
char* p = buffer;
long a;
long b;
long c;
xprintf("please input int a and int b\n");
xgets(buffer,sizeof(buffer));
xatoi(&p,&a);
xatoi(&p,&b);
c = a + b;
xprintf("%d + %d = %d\n",a,b,c);
}
return 0;
}