我为调试目的编写了一个小函数,它通过USB将字符串发送到终端:
void localprint(char* msg){
if(strlen(msg) > 60){
usb_sendData(msg,60);
}
else usb_sendData(msg,strlen(msg));
} 该函数适用于以下字符串:
localprint(" I'm a test" ),
消息显示在终端上。
现在我想在终端上获得adcValue
这是int
,因为我已尝试过:
char t= (char)(((int)'0')+getADCValue(9)); // getting the ADC value of 0th channel
localprint(&t);
这种做法根本不起作用,我也尝试过:
char t= (char) getADCVAlue(9);
localprint(&t);
它既不起作用也不起作用。所以我的问题是我怎么能这样做。我使用的是uC STM32f10xx和ARM gcc。 谢谢你的提示
答案 0 :(得分:2)
在不了解可能的整数范围的情况下,这样的事情会起作用:
char buffer[32];
sprintf(buffer, "%d", getADCVAlue(9));
localprint(buffer);
既然你做了0+
,我假设它是一位数,所以你可以去
char buffer[2];
buffer[0] = '0' + getADCVAlue(9);
buffer[1] = '\0';
localprint(buffer);
答案 1 :(得分:0)
John3136 的答案可以正常使用sprintf
替换一些轻量级的实现,例如来自elm-chan的xsprintf
,我发现它对嵌入式非常有帮助节目。或者,如果要使用_sbrk
,则必须为sprintf
等系统调用设置一些存根。
我无法评论来自 John3136 的解决方案,因为我没有足够的声誉。