导航:首页 > 操作系统 > 单片机强制类型转换

单片机强制类型转换

发布时间:2023-07-09 15:11:53

㈠ 51单片机数据类型转换 高分!

假如你的串口发送函数叫SendData,接收函数叫RecvData,参考如下代码

发送端:

intSendData(unsignedchar*pSendBuf,unsignedintnSendLen);
intRecvData(unsignedchar*pRecvBuf,unsignedintnBufLen);
voidmain(void)
{
floatf;
inti;
doubled;

SendData((unsignedchar*)&f,sizeof(float));
SendData((unsignedchar*)&i,sizeof(int));
SendData((unsignedchar*)&d,sizeof(double));
}

接收端:

voidmain(void)
{
floatf;
inti;
doubled;

RecvData((unsignedchar*)&f,sizeof(float));
RecvData((unsignedchar*)&i,sizeof(int));
RecvData((unsignedchar*)&d,sizeof(double));
}

宗旨就是,先取其他类型数据的地址,用&符号,然后把地址转换为unsigned char*型,就可以通过*(unsigned char)的方式或(unsigned char)[]的方式访问了,就这么简单,希望可以帮到你.

㈡ 我使用的单片机AD采集的数据储存到寄存器中的是u16(无符号16位),但是在运算中是float,怎么解决类型转换

“单片机AD采集的数据储存到寄存器中的是u16(无符号16位)”
这个是指采样得到的数字量读数,要换算后才能得到实际的模拟值。例如16位ADC的采样范围是0~3.3V,那么每个bit对应于50μV。当读数为0x0123、即十进制的291时,代表此时采样电压为14.55mV左右。
“在运算中是float的”

这要看你运算中取用数据的要求。假如你运算时直接要以mV或μV为单位进行运算,例如上面的例子,你就需要将采集的u16值0x0123转换为float型代表的14.55。这个转换过程就需要你编写函数进行转换,而不是直接强转的。

阅读全文

与单片机强制类型转换相关的资料

热点内容
安卓应用怎么常驻 浏览:676
安卓手机怎么群发小费才不会被锁 浏览:741
相机文件夹设置 浏览:855
centos7php怎么用 浏览:119
查看linux操作系统版本的命令 浏览:382
收支预算法怎么做 浏览:875
模板如何上传到服务器 浏览:372
如何同步安卓信息到新ipad 浏览:364
腾讯云轻量服务器流量警告 浏览:503
u盘备份linux 浏览:120
高压缩比活塞 浏览:92
压缩弹簧标准件 浏览:25
linux统计个数命令 浏览:292
cad转pdf居中 浏览:8
编译型语言处理过程 浏览:325
手机创文件夹复制到电脑 浏览:984
有什么直播APP可以看那种 浏览:41
程序员叫什么人 浏览:378
python画地图等高线 浏览:751
epic永劫无间是什么服务器 浏览:444