大家好!
我有一个正在运行的 CANopen 堆栈、我已经为其开发了 Tiva 驱动程序。 我在 Tiva Launchpad (TM4C123G)上运行它、但是、目前在不使用 Tiva 硬件 FIFO 的情况下、它可以正常工作。
我想实现硬件缓冲器、但我找不到一个好的示例。 FIFO 的配置是清零的-这是可以的、但是中断的正确处理是可以的
对我来说有点困惑。
如果我理解正确...您会在每个 FIFO 成员对象接收时获得一个 CAN 中断。 但是、重点是什么
将 FIFO 读数置于中断例程内? (如数据表第1059页所示:图17-3. FIFO 缓冲区中的报文对象)
如果每个 FIFO 成员都收到一个中断、并且您立即读取该中断、那么 FIFO 就没有机会填满。
上面的算法清楚地显示了在 ISR 内部读取消息的情况。
这对我来说毫无意义、但很显然、我在这里遗漏了一些东西...
如果您将 FIFO 读取数据放入主循环中、或者使用另一个计时器对其进行计时、那么 FIFO 就有机会填满...但此时 IRQ 的意义是什么
对于每个 FIFO 成员(也可以在 ISR 之外读取 FIFO 成员状态)。
感谢您的回答。