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.

[FAQ] [参考译文] [常见问题解答] SW-TM4C:如何在使用新外设时防止程序进入 FaultISR

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1020818/faq-sw-tm4c-how-to-prevent-the-program-from-going-into-faultisr-when-using-a-new-peripheral

器件型号:SW-TM4C

情况1: 为新外设或新 GPIO 端口添加函数调用导致程序进入 FaultISR

情况2:正确启用外设后、程序仍进入 FaultISR

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

    案例1的解决 方案:需要启用每个外设、包括每个单独的 GPIO 端口。 以下 TivaWare API 可用于启用正在使用的外设。  

    SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C2);

     SYSCTL_Periph_#define 的完整列表可在   TivaWare 的 driverlib 文件夹中的 sysctl.h 中找到

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

    案例2的解决方案: 使能函数写入 xxx 外设的 SYSCTL.RCGCxxx 寄存器。 它需要5个系统时钟周期、之后外设将可寻址。 建议延迟、或者更好地从外设获取就绪状态。 以下代码执行后者:

    SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C2);
    while(!(SysCtlPeripheralReady(SYSCTL_PERIPH_I2C2)));