liuyu8087 发表于 2024-9-21 09:40:02

5616AD串口收发数据问题

请教各位,我现在测试5616AD的串口收发数据,但发现如果从仿真终端发一串byte数据,5616AD只能显示收到最前面的两个.这是什么回事?

我现在的需求是收发一串数据,请问这应该如何编程?

谢谢各位!

soma 发表于 2024-9-21 09:47:59

hex显示一个char吗?还2个char。没代码且描述不是很清楚。

soma 发表于 2024-9-21 09:48:00

hex显示一个char吗?还2个char。没代码且描述不是很清楚。

liuyu8087 发表于 2024-9-21 09:54:46

这是接收数据的中断的代码
void UsartInt() interrupt 4 {
        u8 i;
        if(RI){
                dataReceive=SBUF;
                RI=0;
                for(i=0;i<dataLength;i++) printf("0x%x ",dataReceive);
                printf("\nreceive data,the length is: %D;\n",dataLength);
}

liuyu8087 发表于 2024-9-21 09:58:40

这是程序显示的结果,我是发11 22 33 44 55 66这一串16进制数据,但结果显示5616AD只接收了前面两个,后面4个就没有了.还有,我是用dataReceive这个数组来接收数据,数组下标没接收到一个数据后加1,但结果是没接收到一个数据就加256,这又是哪里出了问题?
谢谢指教.

Lkck8210 发表于 2024-9-21 10:39:00

liuyu8087 发表于 2024-9-21 09:54
这是接收数据的中断的代码
void UsartInt() interrupt 4 {
        u8 i;


竟然在中断里用printf!?

liuyu8087 发表于 2024-9-21 10:42:14

Lkck8210 发表于 2024-9-21 10:39
竟然在中断里用printf!?

不能这样用吗?可否提供一个例程?谢谢!

soma 发表于 2024-9-21 10:48:04

感觉逻辑不是很好

liuyu8087 发表于 2024-9-21 10:50:26

soma 发表于 2024-9-21 10:48
感觉逻辑不是很好

请教错在哪里?
我的需求就是上位机发一串二进制数据过来,单片机可以准确接收到;同样,下位机发一串二进制数据过去,上位机也能准确接收到就可以了.

DebugLab 发表于 2024-9-21 12:45:49

https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4598
页: [1] 2
查看完整版本: 5616AD串口收发数据问题