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.

[参考译文] TM4C123GH6PM:尝试读取 ADC 寄存器时、Launchpad 抛出异常

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/922045/tm4c123gh6pm-launchpad-throws-exception-when-trying-to-read-adc-register

器件型号:TM4C123GH6PM

您好!

我在使用 launchpad 板上的 TIVAware 库函数时遇到了一些问题。 最初找不到 ADC 函数、但可以找到 SYSCTL 函数、因此这不是路径问题。 但是、我通过找到源代码并获取其副本并将其放入项目源目录来解决该问题。 它现在会生成、但在第一个 ADC 函数调用中抛出异常。

在下面的函数中、注释掉的行是原始 TI 代码。 为了尝试调试这一点、我使用标准 C 代码(而不是宏)重写了它。 以蓝色突出显示的行是代码崩溃的地方。

当我尝试执行突出显示的行时、它会立即跳转到 FaultISR。 但是、如果我将该行更改为读取 ADC0_CTL_R = 1、则它接受该行并在下一个行崩溃。

为什么读取寄存器会导致异常、而写入却不会导致异常?

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

    尊敬的 Andy:

    您是否已使用正确启用 ADC  

    SysCtlPeripheralEnable (SYSCTL_Periph_ADC0); 

    这是必需的。 如果遇到故障 ISR、则可能在尝试访问外设之前未启用外设。

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

    [引用 user="Andy Worsly89"]最初找不到 ADC 函数,但可以找到 sysctl 函数,因此这不是路径问题。

    此外、这听起来不正确、您不需要按照描述的方式添加这些文件。 您是否从 Project0或另一个 TivaWare 工程中启动了工程? 如果不需要、则需要确保链接正确、以便可以使用以下 include 指令:

    #include "driverlib/adc.h" 

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

    您正确地启动了器件。 这解决了问题。

    我从空白页开始。 它查找头文件、但不查找实际函数。 我假设 sysctl 函数位于同一个库中。

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

    尊敬的 Andy:

    您可能没有将 driverlib.lib 链接到您的项目。 您需要包含 TivaWare 的包含路径、并将库文件添加到您的工程中。 确保也执行该步骤、然后您无需像所述那样手动添加文件。