![]() |
1
0
我想你可以把它看作一个两字节的缓冲区。 第一个字节是“传输缓冲区”,软件可以直接写入(当它为空时)。第二个字节是移位寄存器,它从“传输缓冲区”读取字节并将它们移位到导线上。
当停止位在线路上被驱动时,您可以获得中断,因为停止位不是移位寄存器中数据的一部分。所有数据都已移出。就MCU而言,停止位是“元数据”。 感觉就像我只是用不同的语言重述了你说的话。但这对我来说是有道理的,所以不确定哪一部分让你感到困惑。 |
![]() |
2
0
这似乎是一个理解问题。你为什么这么认为 “当最后一个字符 是 移出” 意味着寄存器不是空的?这意味着 确切地 你甚至用示波器注意到了这一点。
仅在模式10中是如此。
您将使用模式10b来指示FIFO为空,并允许您加载缓冲区以在没有字符间间隙的情况下流式传输数据。 例如,在禁用UART或进入低功率模式或发布软件重置之前,您可以使用模式01b来指示所有数据都已传输。或者,如果您需要在字符输出和其他I/O事件之间进行精确的定时/同步,例如,您可能正在与某个带有芯片选择控件的设备通信,该控件需要一直保持到完成。
在大多数情况下,您希望使用模式10b,加载FIFO直到
|
![]() |
Community wiki · C中有哪些耗时的操作? 1 年前 |
![]() |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
![]() |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
![]() |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |