https://static.assets-stash.eet-china.com/album/old-resources/2009/4/7/1adff0a1-c24b-43e9-8883-ffd3ac0e5670.rar" target=_blank>
UART_Printf("LCM %d %d\r", 2, 5);
来做测试. Hello World语句输出, 但LCM的输出有问题. 主要是输出常量2,却变成512.怎么会这样,这样的输出我不知道用过多少次.
void UART_Printf(char *fmt,...)
{
va_list ap;
va_start(ap,fmt);
vsprintf(string, fmt, ap);
va_end(ap);
UART_SendStr((char *)string); //等待直到串口发送完毕
}
跟踪了一下, 在vsprintf(string, fmt, ap)之后,变量STRING的内容跟输出一样, 说明是这个函数有问题. 打开vsprintf的帮助提示, %d是定义unsigned int的输出, 把上面的2和5,先定义一个unsigned int变量,进行测试, 输出OK. 但我仅需要unsigned char类型的输出怎么办. 仔细看了一下文档, 当输出unsigned char变量时, 需要加入b前缀.这样上面的语句变成:
UART_Printf("LCM %bd %bd\r", 2, 5);
这样输出就行了.最后输出: LCM 2 5
附上我的测试项目文件,供需要的朋友应用.
文章评论(0条评论)
登录后参与讨论