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:UART 问题

Guru**** 2548090 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/743199/msp430fr2355-uart-issues

器件型号:MSP430FR2355
主题中讨论的其他器件:MSP430WARE

您好!

      我将使用 CCS v8.2以及 UART MSP430Ware -v:3.80.05.04的驱动程序。 我的应用是接收 40个字节并解析接收到的字节。 我所面临的问题是无法使用单步调试、并且无法接收所有字节(即缺少一些字节)。 下面是代码片段、我还找到了接收所有字节的分辨率、例如比较单字节。

#if defined (__TI_Compiler_version__)|| defined (__IAR_systems_icc_)
#pragma vector=USCI_A0_vector
__interrupt
#elif defined (__GNU__)
__attribute__(INTERRUPT (USCI_A0_Vector)))
#endif
void EUSC_A0_ISR (void
)
switch (__evo_in_range (UCA0IV、USCI_UART_UCTXCPTIFG))
{
USCI_NONE 案例:中断;
USCI_UART_UCRXIFG 案例:
//RXData = UCA0RXBUF;//EUSCI_A_UART_receiveData (EUSCI_A0_BASE);
//while (!(UCA0IFG&UCTXIFG));
RXData= UCA0RXBUF;
// UCA0TXBUF=RXData; //用于回路
u0_Rx_buff [u0_Rx_buff _cntr]=RXData;
/*如果完成此比较(RXData=')'),代码将正常工作*/
/*如果 完成此比较(u0_Rx_buff [u0_Rx_buff _cntr-1]='),则代码挂起*/
if (RXData=')')//if (u0_Rx_buff [u0_Rx_buff _cntr-1]=')
{
EUSCI_A_UART_transmitData (EUSCI_A0_BASE、"P");
}
u0_Rx_buff _cntr++;

中断;
案例 USCI_UART_UCTXIFG:中断;
案例 USCI_UART_UCSTTIFG:中断;
案例 USCI_UART_UCTXCPTIFG:break;
}
} 

我不知道在比较数组时有什么问题。 请提出任何建议。

B.R.

古拉夫

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果 u0_Rx_buff _cntr 为0、会发生什么情况?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Keith、
    我忘记在 IF 条件中添加 u0_Rx_buff _cntr=0。 缓冲区计数器复位并可用于接收下一个40字节数据。
    B. R.
    古拉夫