我有一个 UART 正在运行、在这里我大约每27ms 接收一次消息。 该 UART 将 mssg 发送到一个无线电、该无线电将其传输到第二个无线电、然后第二个无线电通过其 UART 将数据发送到另一个 MSP。 客户端(接收器) UART 有一个指向20深阵列的指针、但我的消息只有9个字节。 指针在阵列的开头初始化、并在接收到每条消息后在代码内初始化、我将其指向阵列的开头。 我的问题是在 TX 侧、我输入通过按住其中一个键(即遥控器)通过链路发送的按键、而接收器侧唯一的机制是 UART。 我的指针最终会在前九个地址内的不同地址随机停止。 我觉得我不是在某处做家政服务、但在我的生活中、我无法确定我错过了哪些地方。 有人能向我展示我可能会出什么问题吗? 一些注释...我正在运行19200、并且处于 LPM3模式。 此外、变量 radioConfiguration = F、发射器= F。 main 中的其他值是发生某种情况的机会。 您可以在 ISR 中看到、收到每条消息后、我会复位指针、清除标志等
主:
如果(!transmitter){ if (msgRcvd){ mssgRcvd = F; memcpy (noCRC、传入[1]、sizeof (noCRC)); CRC_RESULT = CRC (noCRC); if ((char)((((crc_result >> 8)& 0xFF)= incoming[7])&&((char)(((crc_result & 0xFF)= incoming[8])){ //代码仅使用指针从不在此处分配指针 } } noRxPackings++;//仅限故障排除行 PRx =传入; UCA1IFG &=~UCRXIFG; UCA1IE |= UCRXIE; } }
ISR:
USCI_UART_UCRXIFG 案例: if (radioConfiguration){ * prx = UCA1RXBUF; howMany ++; prx++; _BIC_SR_REGISTER_ON_EXIT (LPM3_BITS); } 否则{ * prx = UCA1RXBUF; prx++; if (prx >(incoming + 8)){ PRx =传入; mssgRcvd = T; UCA1IE &=~UCRXIE; UCA1IFG &=~UCRXIFG; _BIC_SR_REGISTER_ON_EXIT (LPM3_BITS); } } 中断;