前段时间在一个DSP上做音视频解码,没有操作系统 ,调试的时候又不能用仿真器狂打断点,不然同步逻辑跟时间相关不好调试,逼得自己写了个串口printf,现在把它整理出来。原来觉得printf的可变参数多神秘,这下算又搞清楚一些了。
#define
swap(x, y)
{
asm( " swap %1, %0 "
: " +r " ( * (x)), " +r " ( * (y)));
}
unsigned char printf_buffer[ 50 ] = { 0 };
#define MOD(x, y) ((x) - (y) * ((unsigned long)(x) / (unsigned long)(y)))
unsigned char alphabet[] = {
' 0 ' , ' 1 ' , ' 2 ' , ' 3 ' , ' 4 ' , ' 5 ' , ' 6 ' , ' 7 '
{
asm( " swap %1, %0 "
: " +r " ( * (x)), " +r " ( * (y)));
}
unsigned char printf_buffer[ 50 ] = { 0 };
#define MOD(x, y) ((x) - (y) * ((unsigned long)(x) / (unsigned long)(y)))
unsigned char alphabet[] = {
' 0 ' , ' 1 ' , ' 2 ' , ' 3 ' , ' 4 ' , ' 5 ' , ' 6 ' , ' 7 '