This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR2355:经过一段运行时间后、板载 RX UART 与阵列未对齐

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/906701/msp430fr2355-rx-uart-on-board-after-some-run-time-gets-misaligned-with-array

器件型号:MSP430FR2355

我有一个 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);
}
}
中断; 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Steve、

    如果您使用的是主动模式而不是 LPM3、会发生什么情况? 与 LPMx 相关的启动时间会影响这些类型的时间关键型任务。

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 James。。。。

    此问题已得到解决。。

    谢谢

    Steve