完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
问题是这样的,我使用STM32+GPRS的板子在与另一家公司对接一个网络协议的时候,协议规定的错误码都是负数,可原先的串口发送函数USART_SendData(USART_TypeDef* USARTx, uint16_t Data)的数据类型是uint16,应该怎么办?
|
|
相关推荐
5个回答
|
|
1、计算机都是以补码的形式存储,正数的补码就是本身,负数的补码的是按位(最高位是符号位,符号位不取反)取反加1;
2、因此,不管发送什么数据,本质就是发送补码,比如我发送0xffff,接收端是以带符号的方式接收,那么就是-1;以无符号的方式接收就是65535; 3、故:发送时强制转换为无符号数即可;或者不需理会,函数形参类型是什么,调用时会默认转换为该类型,但有些编译器会提示警告,建议加强制转换; 比如:[C] 纯文本查看 复制代码 int i = -1;RT_SendData(uart, (uint16_t)i);//或者简单粗暴RT_SendData(uart, i); |
|
|
|
|
|
|
|
好像是signed short int 就是 int16 ,发送这个不就行了么
|
|
|
|
后来自己思考了,数据的存储是不分正负的,都是01存储,关键是看接收方以什么类型接受。
|
|
|
|
最简单方式共用体存储。
[C] 纯文本查看 复制代码 typedef union tp { struct{u8 transportData[4] }Source; int data;}T_P; 存储存到 data, 传输就传输数组transportData。 |
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2486 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2266 浏览 5 评论
3059 浏览 3 评论
2731 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2691 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
490浏览 1评论
752浏览 0评论
838浏览 0评论
529浏览 0评论
335浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-28 03:39 , Processed in 1.059691 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号