我有以下代码块:
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 *"类型的参数不兼容