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.

[参考译文] CCS/MSP430F5529:保存到变量的UCA0RXBUF

Guru**** 2535750 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/581611/ccs-msp430f5529-uca0rxbuf-to-save-to-a-variable

部件号:MSP430F5529

工具/软件:Code Composer Studio

我正在使用一些示例代码,从UART读取字符并将其回写到UART屏幕。

我需要做的是保存收到的数据。  我的数据类型有问题。

UCA0RXBUF是一个const char* ,我需要保存一个char。  所以我要作以下陈述

const char* UART_Rx;             //声明变量

UART_RX = UCA0RXBUF;                   //保存收到的字符

       UART_POSTs ("UART_RX是:");
       UART_POSTs (UART_RX);
       UART_puts("\n UCA0TXBUF为:");
       UCA0TXBUF = UCA0RXBUF;                 // TX -> RXed字符

当我按“1”时,我得到以下输出

                    UART_RX是:-&

                    UCA0TXBUF为:1

显然,我保存缓冲区内容的方式是错误的。  我不知道为什么UART_RX正在打印垃圾,但当我从RX缓冲区传输到TX缓冲区时,代码工作正常。   这是从示例中得到的,因此当然会起作用。   我真的需要使用此值。  当我键入1时,我需要新代码来执行某些操作。

我做错了什么?   如何保存UCA0RXBUF的内容?
  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您不需要const char*,而只需要一个char。 根据定义的位置,您可能还需要一个volatile。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供信息。 我尝试了一个字符和一个易失字符,但我遇到了这个奇怪的错误。 我在与函数相同的文件中将变量设置为全局变量。

    易失性字符UART_RX;

    printf ("else \n");
    UART_POSTs("UART_RX是:.");
    UART_POSTs (UART_RX);
    UART_puts("\n这是UCA0TXBUF:.");
    UCA0TXBUF = UCA0RXBUF;// TX -> RXed字符
    UART_puts("\n\n");
     volatile char temp ="w";
    UART_PUST("Temp is:");
    UART_puts (临时);
    UART_puts("\n\n");

    我键入1,这就是我看到的内容。

    否则
    UART_RX是:ÿÿÿÿÿÿÿÿÿÿïÿÿÿÿ2Ðð Ω
    这是UCA0TXBUF:1.

    温度为 :Ð º C

    _________________

    当我使用字符时,我得到的就是它。

    printf ("else \n");
    UART_POSTs("UART_RX是:.");
    UART_POSTs (UART_RX);
    UART_puts("\n这是UCA0TXBUF:.");
    UCA0TXBUF = UCA0RXBUF;// TX -> RXed字符
    UART_puts("\n\n");
    字符温度="w";
    UART_PUST("Temp is:");
    UART_puts (临时);
    UART_puts("\n\n");


    >否则
    UART_RX是:ÿÿÿÿÿÿÿÿÿÿïÿÿÿÿ2Ðð Ω
    这是UCA0TXBUF:1.

    温度为:ÿÿÿÿÿÿÿÿÿÿïÿÿÿÿ2Ðð º C

    请注意,当我将temp更改为char时,它会提供相同的结果。   

    同样的结果……非常奇怪。

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

    您好Chris,

    在打印UART_RX之前,您是否可以共享完整的代码进行检查,或者只是设置一个断点,然后查看变量的值...

    此致,

    Vikas Chola

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

    "W"不是字符-它是一个2个字符的字符串:'W'和'\0'。
    'W'是一个字符。
    我不知道这是否是问题,但应该予以纠正。

    ETA:

    实际上,“w”会变成一个地址,这就是为什么你会得到奇怪的字符。