我正在尝试从UART接收数组,但是我只得到前5个字节。
我知道接收器缓冲区的深度为4个字,但是我也需要接收其他字节。也许使用循环缓冲区,但我不知道如何使用它。
有人可以帮助我获取数组中的所有字节吗?
这是我当前的代码:
void __attribute__((__interrupt__, auto_psv)) _U1RXInterrupt(void) {
IFS0bits.U1RXIF = 0;
int i = 0;
while (U1STAbits.URXDA) {
array[i] = U1RXREG;
i++;
if (i == 10) {
break;
}
}
}
我正在将每个阵列位置发送到PC:
对不起,我的英语不好。
答案 0 :(得分:0)
经过多次尝试,我取得了成功。
我正在为需要它的任何人共享正确的代码。
int k;
void __attribute__((__interrupt__, auto_psv)) _U1RXInterrupt(void) {
IFS0bits.U1RXIF = 0;
array[k++] = U1RXREG;
if (k == 10) {
k = 0;
}
}
答案 1 :(得分:0)
示例:
字节1:“ S”:起始字节
字节2:arrayByte [0]
字节3:arrayByte [1]
.......
字节11:arrayByte [9]
字节12:校验和(也许是所有发送字节之和的最低位)
仅当接收的字节为'S'时,接收方才开始接收。
接收完所有字节后,接收方必须再次计算校验和,以确保没有字节丢失。