[技术问答] n76e003串口打印32位数据出错

[复制链接]
1376|5
 楼主| daatyu 发表于 2020-8-20 15:31 | 显示全部楼层 |阅读模式
本帖最后由 daatyu 于 2020-8-20 15:34 编辑

n76e003串口1打印数据输出:12 34 56 78,第二次输出00 00 56 78,这就不对了

uint8_t Txbuf[4];
uint32_t Txdata;
Txbuf[0] = 0x12;
Txbuf[1] = 0x34;
Txbuf[2] = 0x56;
Txbuf[3] = 0x78;
  
for (i = 0; i < 4; i++)
Send_Data_To_UART1(Txbuf);


Txdata = MAKELONG(Txbuf[0],Txbuf[1],Txbuf[2],Txbuf[3]);
Send_Data_To_UART1(TBYTE3(Txdata));
Send_Data_To_UART1(TBYTE2(Txdata));
Send_Data_To_UART1(TBYTE1(Txdata));
Send_Data_To_UART1(TBYTE0(Txdata));
图像 3.png
gaoyang9992006 发表于 2020-8-20 21:07 | 显示全部楼层
你直接发呢?别整的这么花里胡哨的。
gaoyang9992006 发表于 2020-8-20 21:09 | 显示全部楼层
void  Send_Data_To_UART1(UINT8 c);
你看这个发送原型的定义,参数是个UINT8,你干嘛合成32位的又弄了个不知道啥的函数处理然后发的。。。。无法理解。你到底在干啥。
gaoyang9992006 发表于 2020-8-20 21:09 | 显示全部楼层
你直接发送uint8类型的试试看,如果没问题,就是你中间折腾的那个花里胡哨的函数的问题。
gaoyang9992006 发表于 2020-8-20 21:14 | 显示全部楼层
如果你直接打印32位的,你可以定义一个函数。
比如
uint32_t Txdata;

Send_Data_To_UART1((Txdata&0xFF000000)>>24)
Send_Data_To_UART1((Txdata&0x00FF0000)>>16)
Send_Data_To_UART1((Txdata&0x0000FF00)>>8)
Send_Data_To_UART1((Txdata&0x000000FF))
或者利用共用体也可以很方便的从32位变量中取出其中的几位。
 楼主| daatyu 发表于 2020-8-21 13:44 | 显示全部楼层
这个32位数据是发送的数据组合而成,不能直接定义数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

78

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部