工具/软件:Code Composer Studio
我正在将两个不同的示例和一个用途合并到 Franken 的过程中:
MAP_Interrupt_enableMaster();来自 DriverLib 和其他用途:
_enable_interrupt ();
我是否做了两次同样的事情? 两者之间是否存在差异?
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
我正在将两个不同的示例和一个用途合并到 Franken 的过程中:
MAP_Interrupt_enableMaster();来自 DriverLib 和其他用途:
_enable_interrupt ();
我是否做了两次同样的事情? 两者之间是否存在差异?
我认为这两者在功能上都大致相同。 我需要进一步挖掘、以确定它们是否相同。 _enable_interrupt ()是一个内在函数,您可以在 本文档中查看汇编调用。
DriverLib 函数调用可在 driverlib 文件夹的 cpu.c 中找到、看起来是一个非常相似的调用。 下面:第一张图片来自内在函数;第二张图片来自最终由 MAP_Interrupt_enableMaster()调用的 cpu.c 函数; M4 cortex 似乎与预期不匹配、但可能有原因。
简短回答:是的、我认为它们在功能上是相同的。 但是、如果不执行适当的包括/等操作、它们就不能真正互换 因此、我通常只会在应用时坚持使用 TI-REX 中的示例代码所使用的任何实现。
这是适合您的答案、还是需要此答案来解决更复杂的问题?
谢谢。 我目前正在同时使用这两种方法! ^μ A)
//启用中断*/ MAP_UART_enableInterrupt (EUSCI_A0_BASE、 EUSCI_A_UART_receive_interrupt | EUSCI_A_UART_Transmit _interrupt); MAP_Interrupt_enableInterrupt (INT_EUSCIA0); MAP_Interrupt_enableMaster (); //初始化演示。 */ boardInit(); clockInit(); 初始化 Buttons(); /*全局启用中断。 */ __enable_interrupt ();
当您尝试合并两个示例时、会发生这种情况。 我提出这一要求是因为我想关闭串行接收代码的一部分中的中断、只是想知道这一差异、我怀疑 driverlib 最终会调用__enable_interrupt ();
DriverLib 不直接调用该内在函数、但该内在函数的 asm 几乎与 DriverLib 函数的 asm 相同。
这两种方法都不会有伤害、但我认为您只需要一种。 由于您一直在使用 DriverLib 函数、我建议使用 DriverLib 函数。 是否有一个例子、您看到它使用过类似这样的方法、或者您是否出于另一个原因决定这样做? (此外、我在前面测试了一些 DriverLib 示例、只是为了了解在没有调用的情况下会发生什么情况。 我尝试的那些仍然正常工作、这意味着 UART_enableInterrupt 等函数也可能启用主中断。 但最好至少保持冗余。)
k3500 grlib 示例实现了这一点:
/*初始化演示。 * boardInit(); clockInit(); initializeDemoButtons(); /*全局启用中断。 * _enable_interrupt ();
驱动程序库 UART 回显示例实现了这一点:
/*启用中断*/ MAP_UART_enableInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_receive_interrupt); MAP_Interrupt_enableInterrupt (INT_EUSCIA0); MAP_Interrupt_enableSlepOnIsrExit(); MAP_Interrupt_enableMaster();
由于我希望通过 grlib 程序进行 UART 通信、因此我将这两者结合在一起。 奇怪的是,另一个 UART 示例*不*使用 enableMaster()。