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:ISR TX --奇数结果

Guru**** 2538930 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/956569/msp430fr2355-isr-tx----odd-results

器件型号:MSP430FR2355
我有以下代码块: 

if (!strncmp (* rxMssg、"msgTXHost"、10)){
P6OUT |= BIT6;
// _DELAY_CYCLES (40000);
RadioMachine ("mssgTXClient");
P6OUT &=~BIT6;
}

以下是情况:

主机 MSP 向主机无线电发送 mssgTXHost。  然后、主对讲机将其无线输出。  客户端对讲机接收消息并将其发送到客户端 MSP。  然后、客户端 MSP 将(mssgTXClient)发送到客户端无线电、后者会将其以无线方式发送回主机无线电、然后再将其反馈回主机 MSP。  在 strncmp 的点、只启用 UCRXIE、 没有其他功能。 预期结果是 mssgTXHost 出现在客户端 MSP RX 逻辑分析仪总线线路上,mssgTXClient 出现在客户端 MSP TX 线路上。

问题:

我在逻辑分析仪上看到、mssgTXHost 在客户端 MSP RX 线路上出现、而客户端 MSP TX 线路输出 mssgTXClient。  有人能告诉我这是如何发生的?  正如我说过的、UCTXIE 未启用。  我注意到 TX 线上的消息每隔一个字符就会丢失。  此外、如果我添加延迟周期、消息会随着时间的推移而移出、并且消息中会出现所有字符。  在这两种情况下、客户端传输都会通过。  我确信这里有线索暗示我无法看到它是什么???

我的 ISR:

#pragma vector=USCI_A1_vector //无线电通信
__interrupt void RF_ISR_USCIA1 (void)
{
switch (__evo_in_range (UCA1IV、USCI_UART_UCTXIFG))
{
USCI_NONE 案例:中断;
USCI_UART_UCRXIFG 案例:
*rxMssg = UCA1RXBUF;
rxMssg++;
rxCount++;
LPM3_EXIT;
中断;
USCI_UART_UCTXIFG 案例:
LPM3_EXIT;
中断;
默认值:break;
}
}

更多信息:

开始意识到 strncmp 不像预期的那样工作...有人能告诉我如何解决这个问题:

易失性字符 RXData[20]={[0... 19]= 0xFF}、* rxMssg;

if (!strncmp (* rxMssg、"msgTXHost"、10)){

编译器发出警告:

说明资源路径位置类型
"char"类型的#169-D 参数与"const char *"类型的参数不兼容  

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

    > if(!strncmp(*rxMssg, "mssgTXHost", 10)) {

    rsMssg 是一个"char *",因此*RxMssg 是一个"char",不是要传递给 strncmp 的字符。 尝试:

    > if(!strncmp(rxMssg, "mssgTXHost", 10)) {

    我有点惊讶、它只是一个警告。

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

    是的,我已经对这个问题进行了修改...我很确定问题是更深层次的...仍然在研究它...目前没有足够的信息来提出一致的请求。

    谢谢

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

    1) 1)我看到的所有内容都是一个片段、但您对移动目标(rxMssg)执行 strncmp 似乎很奇怪。 也许您应该检查 RXData?

    2) 2)收到主机消息后、最好"毒化" Rx 缓冲区(例如、用'\0'写入第一个字节)、以便以后不会意外检查过时数据。