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.

[参考译文] MSP432P401R:通过 UART 发送

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/969993/msp432p401r-transmit-over-uart

器件型号:MSP432P401R

我正在尝试通过 UART 发送一些字符。 当我在没有调试器的情况下运行程序时、消息的最后一个字符到达 PC、但如果我逐步执行该操作、则所有字符都位于目标上。 我的代码非常简单:

void WiFiPrint (char *msg)

   uint32_t i;
   状态= 0;
   
   memset (niz、0、sizeof (uint8_t)*15);

   for (i=0;i < strlen (msg);i++)
   {

       niz[i]= msg[i];
       while (((UCA2IFG 和 EUSCI_A_UART_TRANSITE_INTERRUPT_FLAG));
       MAP_UART_transmitData (EUSCI_A2_base、msg[i]);
   }

空 EUSCIA2_IRQHandler (空)

   uint32_t status = MAP_UART_getEnabledInterruptStatus (EUSCI_A2_base);
   MAP_UART_clearInterruptFlag (EUSCI_A2_base、status);

   如果(!status)
       返回;

   IF (STATUS & EUSCI_A_UART_Transmit _INTERRUPT)
   {
       __no_operation();
    }

在以两种方式执行循环后、数组 niz 填充来自消息的所有字符、因此执行循环。

哪里出了问题?

此致、

Djordje Radovanovic

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

    > while (((UCA2IFG 和 EUSCI_A_UART_TRANSITE_INTERRUPT_FLAG));

    该测试是向后的、因此除非您单步执行、否则会使发送器溢出。 尝试:

    > while (!(!(UCA2IFG 和 EUSCI_A_UART_TRANSITE_INTERRUPT_FLAG));

    如果您使用此代码、则不应启用传输中断。