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.

[参考译文] MSP430FR5972:UART_RX_Issue

Guru**** 2535590 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/581406/msp430fr5972-uart_rx_issue

部件号:MSP430FR5972

我想在控制台窗口(Tera Term或Bray的终端)中键入字符串,并想存储在任何阵列中,并在控制台窗口中传输相同的字符串。  

我可以使用UART Tx在控制台窗口上打印任何单个字符,字符串或整数,但却卡在Rx (多字节)中。  

任何人是否可以向我发送我无法在 互联网上找到的示例代码  

 

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

    如果单字节插座工作正常,那么您可能只是清除缓冲区的速度不够快。 如果您显示您的代码,我们可以查看一下。

    Dennis
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在下面提及一个字符的代码,它工作正常

    unsigned char测试;
    测试= UART_READ();//此API用于接收数据
    如果(测试=='A')
    uartPutString("working");//此API用于打印字符串
    否则
    uartPutString ("不工作");

    下面提到我尝试接收多个字符但无法正常工作的代码



    while (!(UCA0IFG和UCRXIFG));

    arr[k]= UART_READ(); //正在尝试在arr中接收[]
    K++;
    }同时(arr[k]!=0x0D); //如果从键盘按下了eetr键,数据应停止存储在arr[]中
    uartPutString (arr); //应在控制台窗口中打印相同的数据


    我使用下面提到的ISR来处理多字节接收UART


    /********************** UART中断****************************** /

    #if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
    #pragma vector=USI_A0_vector
    __interrupt void USI_A0_ISR(void)
    #Elif已定义(__GMNU__)
    void __attribute__((interrupt (USI_A0_vector))) USI_A0_ISR (void)
    #否则
    错误编译器不受支持!
    #endif

    Switch(__偶 数_in_range(UCA0IV,USI_UART_UCTXCPTIFG))

    案例USI_NONE:中断;
    案例USI_UART_UCRXIFG:
    __BIC_SR_REGISTER_ON_EXIT (LPM0_bits);//在RETI上退出LPM0
    }
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    目前我还不完全确定,但读UCA0IV没有清除RX标记? 请在用户指南中查阅-我目前无法做到。 如果是这样,您的代码将在DO循环的第一行挂起,因为在ISR中始终清除RX标志。 是否可以在没有ISR的情况下尝试? 或者,在那里,只检查是否设置了标记而不读取IV?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉Dennis,实际上我无法理解您的解释,您能否解决我的问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先在不使用休眠模式的情况下启动并禁用RX中断。 只有轮询才能工作吗?