新手入门
- 积分
- 17
- 金钱
- 17
- 注册时间
- 2017-10-12
- 在线时间
- 1 小时
|
5金钱
现有采集的数据是有符号带小数的16进制数,我用显示屏显示出来了有符号带小数的十进制数,怎么用串口把有符号的数发送到电脑啊?
u8 acc_x[2];
s16 acc_x_;
float LIS3DSH_acceleration_x;
acc_x[0]=Lis3dsh_ReadOnebite(0x28);//低八位数据
acc_x[1]=Lis3dsh_ReadOnebite(0x29);//高八位数据
acc_x_=(acc_x[1]<<8)+acc_x[0];//采集到的数据
LIS3DSH_acceleration_x=1.0*acc_x_/32767*2;//量程转化,数据在-2到+2之间
下一步如何用串口将数据发送出去?
while(1)
{
char buf[10];
acc_x[0]=Lis3dsh_ReadOnebite(0x28);
acc_x[1]=Lis3dsh_ReadOnebite(0x29);
acc_x_=(acc_x[1]<<8)+acc_x[0];
LIS3DSH_acceleration_x=1.0*acc_x_/32767*2;
buf[0]=acc_x_;
buf[1]=(acc_x_>>8);
USART_SendData(USART3,buf[1]);
while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==0){};
USART_SendData(USART3,buf[0]);
while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==0){};
}
}
这样发送到串口调试助手的是十六进制数,我还是不能判断十进制数到底是多少 ,求解答,谢谢
|
最佳答案
查看完整内容[请看2#楼]
使用printf函数进行格式化打印啦,printf("%d",a);如果不懂,请百度printf的使用方法,这个一定要学会,还有sprintf。
你使用的是USART3,那要把printf映射到USART3。
原子例子就有。
[mw_shl_code=c,true]//////////////////////////////////////////////////////////////////
//加入以下代码,支持printf函数,而不需要选择use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持 ...
|