工具/软件:Code Composer Studio
你(们)好 我将使用 TivaWare 库实现 CDC USB 器件。
用户回调函数、例如 pfnCallback、uint32_t ControlHandler (...)、uint32_t TxHandler (...)、etc.running 是否处于中断上下文中?
谢谢、Doug
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.
工具/软件:Code Composer Studio
你(们)好 我将使用 TivaWare 库实现 CDC USB 器件。
用户回调函数、例如 pfnCallback、uint32_t ControlHandler (...)、uint32_t TxHandler (...)、etc.running 是否处于中断上下文中?
谢谢、Doug
Doug、您好!
我不知道。 中断处理程序是 usbdenum.c 文件中的 USBDeviceIntHandlerInternal。 它不会更改任何回调。
如果您需要一个正常工作的单端口 CDC 示例-我有一个示例、它今天在这里共享: http://e2e.ti.com/support/microcontrollers/other/f/908/p/894599/3309448#3309448
Doug、您好!
很抱歉、如果我不清楚、我的意思是他们不需要将 PC 从蓝色中取出、并且在将 PC 用于任何其他结构/缓冲器等函数内之前、不需要"给" PC。 所有这些都是在文献目录内发生的。 回调在函数中用于来回传递数据。 重点是没有需要考虑的中断上下文(可能超出在 ISR 中使用的范围、但如果我理解正确、这并不是问题所在)。 不确定这是否有道理、我不擅长解释 USB 库的工作原理、因为我没有设计它、它的架构是... 假设是"独特"、并保留它。
你(们)好。
除非我缺少某些内容,否则在非 RTOS 环境中,只有来自调用 main()的控制线程,以及在处理中断时发生的异步控制线程。
我认为正在发生的情况是:芯片中的 USB 控制器为各种 USB 事件生成中断、还具有自己的"系统节拍"来定期运行堆栈、因此我认为回调必须在中断上下文中运行。 现在、我将假定情况如此、并使我的回调函数保持较短的状态、将传递数据和事件同步到我的"while (1)"循环、并在该"前景"过程中执行任何繁重的处理。
如果有人知道、USB 回调是否在中断上下文中运行、这仍然是一个好消息。
谢谢、Doug
Doug、您好!
对于在美国的 TI、我们今天是很好的周五假期、但我会尝试回答更多问题...
根据我的解释、最初提出的问题是、列出的 USB 回调是否始终在 usblib 实现中的中断上下文下运行。 因此、我特别关注中断上下文术语、以思考是否直接从 usblib 内的中断中调用中断、而不从"典型应用"的角度进行查看。
那么、让我们后退一步、分解库与应用。
在 USB 库中、您提到的回调并不是在中断上下文下专门执行的。 USBDeviceIntHandlerInternal 中提供了一些用于断开、挂起、恢复、低功耗等的回调。
在典型的 USB 应用中、多次使用中断来触发对 USB 缓冲器的读取/写入。 在这种情况下、您引用的回调将在中断上下文下处理。 这是在应用程序级别定义的、具体取决于您的实现。 您不必执行此操作、但大多数情况下、这是最佳方法、通常会推荐。 因此、在该设置中、是的、现在可以说回调是在中断上下文中处理的。
很抱歉、我对您所询问的内容的理解不正确、但我从来没有很清楚、我们只是从应用角度谈论这一点、因为它在实施方面存在差异。
关于文档、由于中断上下文基于应用程序、我个人看不到与此相关的文档空白、但我们可能必须同意不同意... 这是第一次出现这些问题。