我升级完全测试C程序使用不同的C编译器的德州仪器(TI)MSP430微控制器,从Quadravox,AQ430开发工具改变为VisualGDB C编译器。
该方案与零次失误,零个警告与VisualGDB编译。 中断服务例程,定时器,UART控制等似乎都工作。 sprintf的某些用途,但是,不工作。 例如:
unsigned int duration;
float msec;
msec = (float)duration;
msec = msec / 125.0;
sprintf(glb_response,"break: %3.1f msec",msec);
这将返回: break: %3.1f msec
这是预期: break: 12.5 msec
我已经了解了以下内容(维基百科):
编译器选项--printf_support = [全文| 最小| nofloat]允许你使用更小,功能的printf / sprintf的有限的,变的,做出这样的选择在构建时。
有效值为:
全面:支持所有格式说明。 这是默认的。
nofloat:不包括打印浮点值的支持。 支持除%F,%克,%G,%e和%E所有格式说明。
最小:支持整数,char或字符串值的无宽度或精度标志的印刷。 具体而言,只有%%,%d,%O,%C,%s和%×格式说明支持
我需要printf的全力支持。 我知道我的产品MSP430将支持这一点,因为这个C程序已经服役多年。
我的问题是,我无法弄清楚1)如果VisualGDB必须设置为全printf的保障手段和2)如果是这样,这里并设置它。
任何和所有的意见和答案将不胜感激。