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.

[参考译文] MSP430FR5994:不在 UART 终端中打印整数值。

Guru**** 2391225 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1041883/msp430fr5994-integer-values-are-not-printing-in-uart-terminal

器件型号:MSP430FR5994

您好!

我正在尝试在 UART 终端打印传感器值、我可以在调试模式下使用 print 打印这些值。 但是、我想在 UART 终端中打印这些值以进行实时监控。

我能够打印字符"A"和字符串、但我无法在终端中打印整数传感器值。 我正在代码中使用驱动程序库。

时钟设置为:

     //将 DCO 频率设置为1MHz
   CS_setDCOFreq (CS_DCORSEL_0、CS_DCOFSEL_0);
   //将外部时钟频率设置为32.768KHz
   cs_setExternalClockSource (32768、0);
   //set ACLK=LFXT
   CS_initClockSignal (CS_ACLK、CS_LFXTCLK_select、CS_Clock_divider);
   //set SMCLK = DCO、分频器为1
   CS_initClockSignal (CS_SMCLK、CS_DCOCLK_select、CS_Clock_divider);
   //set MCLK = DCO、分频器为1
   CS_initClockSignal (CS_MCLK、CS_DCOCLK_select、CS_Clock_divider);
   //Start XT1、无超时
   CS_TurnOnLFXT (CS_LFXT_DRIVE_0);

   EUSCI_A_UART_initParam param ={0};
   param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK;// EUSCI_A_UART_CLOCKSOURCE_SMCLK;// EUSCI_A_UART_CLOCKSOURCE_ACLK;
   param.clockPrescalar = 8;// 115200-8 9600-3;
   param.firstModReg = 0;
   param.secondModReg = 214;//115200-214;9600-92;
   param.parity = EUSCI_A_UART_NO_parity;
   param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST;
   param.numerofStopBits = EUSCI_A_UART_Oe_STOP_BIT;
   param.uartMode = EUSCI_A_UART_MODE;
   param.oversaming= EUSCI_A_UART_LOW_FREQUENCY BAUDRATE_generation;

请告诉我哪里出错了。

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

    由于您能够打印字符串、因此您的时钟和 UART 配置看起来正常。

    对于打印整数,您是否尝试过类似这样的操作?

    #include 
    
    int main (内部 main)() 
    int value = 10 printf ("value =%d\n"value); return (0);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我在调试模式下尝试过这种方法。 它工作正常。 现在、我需要在 UART 终端中打印该内容。

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

    如何打印整数? 是否需要二进制或 ASCII 数据?

    您是否有打印字符串的系统?

    您向我们展示了错误的代码。 向我们展示如何打印整数。

    我很确定*是*打印整数,但终端将二进制值解释为控制字符。

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

    您好、Selvakumaran、

    您是否仍需要帮助?

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

    您好、Keith、

    我可以打印终端中的整数、您可以打印终端中的字符串。 我使用此代码行在终端中打印整数。

          STR[Index]=(temp / 100)+ 48;
          Indexx1++;
          STR[Index]=(temp /10)+ 48;
          Indexx1++;
          STR[Index]=(温度% 10)+ 48;

    谢谢、

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

    您可能希望允许使用减号。

    如果温度超过100、这可能不起作用、请手动尝试。