33
1466
7140
版主
result = __REV16 (((uint16_t*)str)[counter]); // 这里只有一次读取数据 counter += sizeof (uint16_t);
使用特权
138
973
2973
初级工程师
231
678
0
实习生
17
451
1372
2
3
382
1192
助理工程师
106
1432
4658
中级工程师
工行ATM 发表于 2016-12-8 16:40 但是。。。拆开看起来不爽。。。
27
958
5581
高级工程师
1
51
初级技术员
john_lee 发表于 2016-12-9 10:09 我教你一个正规的方法:你的 MCU 是 Cortex-M3,你应该直接把两个字节的数据“一次”取出,然后使用 CMSIS ...
190
1614
4967
7
127
391
资深技术员
LearningASM 发表于 2016-12-9 11:19 试一下__REV16 result = __REV16((u16)(str[counter]));counter += 2;
工行ATM 发表于 2016-12-9 12:44 这个代码不起作用。。
4
92
286
中级技术员
john_lee 发表于 2016-12-9 15:44 你这个写法只取了一字节数据,然后扩展为两字节(高字节为 0),然后 _REV16,结果是 result 低字节为 0, ...
john_lee 发表于 2016-12-9 15:47 贴结果来看,最好附带反汇编。光说一句不起作用算什么意思。
result = ((uint16_t*)usart_receive_temp)[modbus_rx_num]; // 取数据 printf ("%d\n", result); // 输出字节交换前数据 result = __REV16 (result); printf ("%d\n", result); // 输出字节交换后数据
发表回复 本版积分规则 回帖后跳转到最后一页
时间类勋章
等级类勋章
发帖类勋章
人才类勋章
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号