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.

[参考译文] TM4C123GH6PM:如何从 UART 获取1个字节(或奇数字节)的中断?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/596086/tm4c123gh6pm-how-to-get-an-interrupt-from-uart-for-1-byte-or-odd-bytes-at-all

器件型号:TM4C123GH6PM

该器件在 UART 中具有16字节 RX FIFO。 用于 UART 接收的最小 FIFO 中断级别是1/8 (表示2个字节)。 因此、接收到1个字节(或奇数个字节)时无法获取中断。 如何从 UART FIFO 中获取奇数字节?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查找接收超时中断。 TI 已将其与接收中断进行奇怪的分离。

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

    您可以禁用 FIFO 模式、以便为接收到的每个字节生成中断。 使用 UARTFIFODisable()禁用 FIFO。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为超时是更灵活的解决方案、因为我不会错过 FIFO 功能。 遗憾的是、我不知道如何使用内置 UART 超时、因此我自己通过单独的计时器实现了该超时。

    保留在 FIFO 中的项目我 在超时后手动读取。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    接收超时的使用方式与接收字符完全相同。 中断的通用结构

    接收超时或接收字符
    FIFO 为空

    当然、您仍然需要处理读取时清除但这不是新的寄存器。

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

    [引用 user="Pavel Mychko"]不幸的是,我不知道如何使用内置 UART 超时[/quot]

    您现在可能已经解决了这一问题、但这只是启用 UART 中断上的超时标志的问题:

    UARTIntEnable (UART0_BASE、UART_INT_RT | UART_INT_RX);

    只需添加_RT 宏、只要您的 UART 保持"一段时间而不接收任何内容"、就会触发该中断。 这种"某个时间"在硬件中是自动的、一般而言、它反映了新字节在给定波特率下进入的时间量。

    布鲁诺

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