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 正常工作、请提供帮助。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/580189/tm4c123gh6pm-trying-to-get-adc-working-please-help

器件型号:TM4C123GH6PM

我正在尝试对声纳传感器的 PE3进行采样、但我的代码从未进入 ISR。 我已使用"adc_read_fxn"处理程序更新了矢量表、但始终会以"没有可用于"0xfffffe" 错误的源"结束。 如果有任何帮助,将不胜感激。  

#include "sonar_init.h"

float distInch;
volatile unsigned int proflag=0;

void sonarInit (void)
{

//SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHz);

SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
SysCtlPeripheralReset (SYSCTL_Periph_ADC0);
ADCSequenceDisable (ADC0_BASE、3);

ADCSequenceConfigure (ADC0_BASE、3、ADC_TRIGGER_PROCESSOR、0);

ADCSequenceStepConfigure (ADC0_BASE、3、0、ADC_CTL_CH0 | ADC_CTL_IE | ADC_CTL_END);

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_3);
ADCIntRegister (ADC0_BASE、3、&ADC_READ_Fxn);
ADCIntEnable (ADC0_BASE、3);\
ADCIntClear (ADC0_BASE、3);
ADCSequenceEnable (ADC0_BASE、3);

IntMasterEnable();

}

void main (void)
{
sonarInit();

while (1){
if (proflag=0){
ADCProcessorTrigger (ADC0_BASE、3);
proflag=1;
}
}



void adc_read_fxn (void)
{
ADCIntClear (ADC0_BASE、3);
while (!ADCIntStatus (ADC0_BASE、3、false));
uint32_t rawADC;
ADCSequenceDataGet (ADC0_BASE、3、&rawADC);
distInch=rawADC*102.4;
proflag=0;
}

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

    您好!

    我可以看到您对 SysCtlClockSet 函数进行了注释-尝试先启用它并将时钟频率设置为等于16MHz 或更大= ADC 精确地需要16MHz 的时钟才能运行。 (包括 PLL 的时钟块具有特殊分频器、使 ADC 具有所需的16MHz。)

    此外、请查看 Tiva 示例、在启用时钟之前、如果需要使用浮点运算、则需要启用浮点单元-我看到您在中断中使用浮点运算。

    另外、请查看 Project Properties (自行查找)-有一个设置在 main 函数处添加断点-因此、在将程序加载到闪存并运行后、它将在 main 处停止。 确保没有故障中断。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tyler、
    您是否可能错过了下面的条目? 我不确定何时需要它、但我在这里的代码中有它。

    IntEnable (INT_ADC0SS3);

    此致
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、Bruno、您答对了。 需要 IntEnable (INT_ADCSS3)在处理器 NVIC 级别启用相应的中断通道。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    即使启用了此功能、我也无法使其正常工作...还有什么可能丢失的东西?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否将调试声明为预定义符号、编译器选项?

    是否已将目标文件添加到项目中并正确配置?

    尝试从 Tiva 导入示例项目、编译/链接并验证所有内容是否正常、然后查看项目属性并与您的项目进行比较。  

    您对原始过帐代码进行了哪些修改? 现在设置了什么系统时钟频率?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我感谢这里的所有答复,我仍在处理这个问题,但又出现了另一个问题,必须给予优先考虑。