打印
[技术问答]

n76e003串口打印32位数据出错

[复制链接]
1069|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 (431 Bytes )

图像 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类型的试试看,如果没问题,就是你中间折腾的那个花里胡哨的函数的问题。

使用特权

评论回复
5
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位变量中取出其中的几位。

使用特权

评论回复
6
daatyu|  楼主 | 2020-8-21 13:44 | 只看该作者
这个32位数据是发送的数据组合而成,不能直接定义数据

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

76

帖子

1

粉丝