在哪里可以找到适合嵌入式系统的几乎完整的实现(浮点数,宽度等)(几个嵌套的函数调用,低堆栈和ram使用,没有堆,mo系统调用)
答案 0 :(得分:0)
您是否检查过ChibiOS的chvprintf实施?它是Apache许可的,浮动支持(代价高昂)是define
的编译时选项。
它的设计考虑了微控制器。这些宏几乎都只调用提供的BaseSequentialStream结构中的函数指针,您可以根据需要替换它们。 var-args列表是您的常规stdarg.h
实现。
答案 1 :(得分:0)
对于在串行端口上传输,最快的方法是:
int32_t printfDebugSerial(const char *format, ...)
{
if (strlen(format) >200) return -1;
char tempBuff[256]; memset(tempBuff, 0, sizeof tempBuff);
va_list arg;
int32_t done;
va_start (arg, format);
done = (int32_t)vsprintf(tempBuff,format, arg);
va_end (arg);
pushMsgOnSerial((uint8_t*)tempBuff, done);
return done;
}
其中pushMsgOnSerial()
是您的主板特定功能,用于在串行端口上发送字节。