单片机(STM32)与上位机传输数据的方法
在进行单片机程序的开发时,常常需要与其他设备进行通信。一种情况是与其他电路板通信,比如STM32主机与STM32从机通信,STM32从机与树莓派主机通信。一种情况是与上位机通信,上位机软件进行人机交互。这个时候需要进行数据传输,传输数据有两种方式,传输整形数据与直接传输浮点数据。
1. 传输整形数据
一种方法是传输整形数据,工业中常用的Modbus就是这种方式。这里以传输16位整形数据为例,一个数据就占用两个字节,可以是正数和负数。
测试代码:
int main()
{
uint16_t me, you;
uint8_t data[100];
me = 120;
data[0] = me >> 8;
data[1] = me;
you = (uint16_t)data[0] << 8 | (uint16_t)data[1];
printf("you = %d", you);
return 0;
}
出来的结果是一样的120
那么负数怎么办呢?其实是一样的。不管是uint16_t还是int16_t,在内存中的存储都是一样的,区别不在于写,而在于怎么读。
int main()
{