OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2848|回复: 3

stm32 数组元素如何更改大小端?

[复制链接]

9

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-3-24
在线时间
37 小时
发表于 2021-1-22 09:22:47 | 显示全部楼层 |阅读模式
最近实验发现一种情况,我在向上位机发送负数数据的时候,会出现数组元素有大小端交换的问题。
int16_t    adc[5]={0xff01,0xff02,0xff03,0xff04,0xff05};

之后,在发送指令中如下:

                  for(i=0;i<5;i++)
                        A_B_C.B=adc;
                     for(i=0;i<10;i++)            
                           Send_Stings(USART1,A_B_C.C);
将数组adc中的元素发到上位机去。
(其中,
union  A         
{
    u8  C[50];
    int16_t  B[25];
};
union  A   A_B_C;)  是我定义的一个联合体,用来发送数组元素。)
但是我在串口里得到的数据却不对劲。具体如图所示。   

   对于这个问题 ,我想知道,能不能有解决大小端交换的问题。应为项目中的数组比较大,所以想请教各位哥哥们。



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2021-1-22 12:42:02 | 显示全部楼层
不知道你具体的问题是什么, 但如果说问的是大小端之间的转换可以用以下的方法
for (int i=0; i<sizeof(abc)/2;  i++)
    abc[i]=__REV16(abc[i]);
回复 支持 1 反对 0

使用道具 举报

4

主题

98

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3879
金钱
3879
注册时间
2018-5-25
在线时间
898 小时
发表于 2021-1-22 10:33:46 | 显示全部楼层
上传数据不是这么干的吧,你得自己定义数据格式,比如想传输0X1234,那么0X12 和0X34哪个在前,哪个在后,是你自己定义的,不是说直接把16进制的0X1234就直接传过去
回复 支持 反对

使用道具 举报

9

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-3-24
在线时间
37 小时
 楼主| 发表于 2021-1-22 13:38:29 | 显示全部楼层
edmund1234 发表于 2021-1-22 12:42
不知道你具体的问题是什么, 但如果说问的是大小端之间的转换可以用以下的方法
for (int i=0; i

多谢,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 03:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表