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.

[参考译文] RM48L952:如何中止 SCI 运行

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/624451/rm48l952-how-to-abort-sci-operation

器件型号:RM48L952
主题中讨论的其他器件:HALCOGEN

当使用 halcogen 函数通过 sci 接收和发送字节时、所有函数都在等待 RX/TX -Ready-中断。 中止正在运行的接收/发送操作的正确方法是什么?

此致

Jan Scharnweber

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否更具体地描述您要做的事情? 有用于发送或接收单个字节的函数。 是否需要中止发送或接收过程中的字节、或者是否正在尝试从轮询循环中中止?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复!
    我正在寻找一种方法来中止函数"void sciReceive (sciBASE-t * sci、uint32 length、uint8 * data)"。

    此致
    Jan Scharnweber
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果接收到带有终止字符的未知字节数,请不要使用 sciReceive()。 我建议您使用中断将字符接收到缓冲区中、每次检查字符是否是终止字符。 接收到终止字符后、设置一个标志、以便主例程知道有一个新的命令(或数据)需要处理。 您可以在两个接收缓冲区之间执行乒乓操作、也可以使用循环缓冲区。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实际上、我始终知道要接收多少个字节。 但在某些情况下、我必须能够中止当前的接收过程并从新的接收过程开始。

    感谢您的反馈

    此致  

    Jan Scharnweber

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    然后我建议您编写自己的 sciReceive()函数,在 while 语句中检查这种特定情况。 您可以在 sci.c 中的函数之后对其建模 您可以使其返回接收到的字符数(而不是 void 函数)、以便您的程序可以检查是否接收到所有字符。