如何从 uart 接收超过 5 个字节?
How to receive more than 5 bytes from uart?
- 微控制器:dsPIC30F4013
- 编译器:xc16
我正在尝试从 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:
串行监视器
抱歉我的英语不好。
经过多次尝试,我成功了。
我正在为任何需要它的人分享正确的代码。
int k;
void __attribute__((__interrupt__, auto_psv)) _U1RXInterrupt(void) {
IFS0bits.U1RXIF = 0;
array[k++] = U1RXREG;
if (k == 10) {
k = 0;
}
}
示例:
字节 1:'S':起始字节
字节 2:arrayByte[0]
字节 3:arrayByte[1]
.......
字节 11:arrayByte[9]
字节12:校验和(可能是所有发送字节总和的LSB)
如果接收到的字节是 'S'.
,接收方只会开始接收
在完全接收所有字节后,接收方必须再次计算校验和以确保没有丢失字节。
- 微控制器:dsPIC30F4013
- 编译器:xc16
我正在尝试从 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:
串行监视器
抱歉我的英语不好。
经过多次尝试,我成功了。
我正在为任何需要它的人分享正确的代码。
int k;
void __attribute__((__interrupt__, auto_psv)) _U1RXInterrupt(void) {
IFS0bits.U1RXIF = 0;
array[k++] = U1RXREG;
if (k == 10) {
k = 0;
}
}
示例:
字节 1:'S':起始字节
字节 2:arrayByte[0]
字节 3:arrayByte[1]
.......
字节 11:arrayByte[9]
字节12:校验和(可能是所有发送字节总和的LSB)
如果接收到的字节是 'S'.
,接收方只会开始接收
在完全接收所有字节后,接收方必须再次计算校验和以确保没有丢失字节。