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.

[参考译文] TM4C1290NCPDT:UART 中断不工作。

Guru**** 2535750 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1340327/tm4c1290ncpdt-uart-interrupts-not-working

器件型号:TM4C1290NCPDT

   UARTConfigSetExpClk (UART0_BASE、GetClkSpeed ()、9600、
            (uart_config_WLEN_8 | uart_config_stop_one | uart_config_par_none);
   UARTIntRegister (UART0_BASE、Debug_Uart_Interrupt);                         //寄存器中断处理程序。
   UARTEnable (UART0_BASE);
   UARTIntEnable (UART0_BASE、UART_INT_RX | UART_INT_TX | UART_INT_OE | UART_INT_FE);

但 Debut_Uart_Interrupt ()永远不会被调用。  轮询字符可以正常工作。

谢谢、Doug

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

    尊敬的 Doug:

     我没有在 NVIC 级别启用 UART0中断。  

    IntEnable (INT_UART0);

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

    尊敬的 Charles:

    UARTIntRegister ()函数调用 IntRegister ()。

    我忘了提到在代码段之后有一个 IntMasterEnable()调用。

    道格

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

    尊敬的 Doug:

     UARTIntRegister 只用于动态注册一个 ISR 矢量。 InMasterEnsble 用于在全局级别启用处理器中断。 您仍需要在 NVIC 级别启用每个单独的外设以进行中断。 您能看一下 TivaWare 中的 uart_echo 示例吗。 我目前在没有 PC 的情况下度假。 我无法粘贴代码。  

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

    尊敬的 Charles:

    我烧毁了我的第二个原型、尽管 MPU 正在运行、但 SysTick 和 UART 中断都无法运行!  因此、我认为我的硬件中一定存在会导致其无法正常运行的问题。  那么、我现在将结束这个、看看我是否可以分辨出来。

    感谢您的帮助!

    道格