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/RM42L432:使用 Hercules SCI 发送和接收整数

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/589597/ccs-rm42l432-sending-and-receiving-integers-using-hercules-sci

器件型号:RM42L432

工具/软件:Code Composer Studio

我只想从串行端口接收一个整数、在整数中加2、然后通过串行通信将其发回  

这是我的 sciNotification 代码、  

void sciNotification (sciBASE-t * sci,无符号标志)


DAT = dat + 2;
sciSend (sci、sizeof (dat)、(int*)和(dat));
sciReceive (sci、sizeof (dat)、(int*)&dat);

当我使用 CCS 的内置终端在串行传输时发送一个数字时、输出结果被反转、即如果我通过终端发送1111作为输入、输出为3111、并且我无法发送包含未定义数字数量的整数。 我在观看此 TI 教程 www.youtube.com/watchhowever 时、它仅处理串行字符通信、而不是整数。   

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

    嵌入式系统的基本原理之一是、我们仅处理二进制和十六进制数据。 终端窗口实用程序以及更常见的 PC 应用程序通常在其显示例程中使用 ASCII 数据。 另外请记住、RM42器件是小端字节序器件、因此在处理 ASCII 或字符串数据时、您需要考虑适当的字节顺序。

    如果我们考虑您正在执行的特定函数、则您将在 SCI 上发送'1'-'1'-1'。 这是十六进制的0x41、0x41、0x41、0x41。 其中输入到终端窗口并发送的第一个字节将是接收到的第一个字节、因此它将是最重要的数字。 当您收到它时、您为新的十六进制值0x43添加2、该十六进制值恰好是 ASCII 3、然后得到其余的 ASCII 值。 我想,你然后按照你收到它们的顺序将它们发回,或者按'3'-'1'-'1'-'1'的顺序将它们发回。 为了正确地对表示为字符串的传入数字执行数学运算、您需要将字符串转换为十六进制值、执行数学运算、然后转换回字符串以发回并在 PC 世界中正确表示。