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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/756207/tm4c123gh6pm-problem-with-adc

器件型号:TM4C123GH6PM

#define PWM_FREQUENCY 55

#include
#include
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/pwm.h"
#include "driverlib/adc.h"
uint32_t sysclock;
uint32_t input_value;
uint32_t i;
int sample_val[100]、pinVal、pinVal1;
extern uint32_t ulADC0Value[100];




//PG1是 PWM 引脚
void main()


    PE5上的// 600kHz 信号

 // 浮点 PWM_FREQ;
 // 浮点 CPU_FREQ;
 // 浮点 PWM_WORD;



 // PWM_FREQ = 1434;//
  // cpu_FREQ = 120000000;
  // PWM_WORD =(1/PWM_FREQ)*CPU_FREQ;
   //sysclock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |SYSCTL_MAIN |SYSCTL_USE_PLL |SYSCTL_CFG_VCO_480)、CPU_FREQ);


   SysCtlPWMClockSet (SYSCTL_PWMDIV_64);
   SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);
   SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
   GPIOPinTypePWM (GPIO_Porte _BASE、GPIO_PIN_5);
   GPIOPinConfigure (GPIO_PE5_M0PWM5);
   PWMGenConfigure (PWM0_BASE、PWM_GEN_2、PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_DB_NO_SYNC);
   PWMGenPeriodSet (PWM0_BASE、PWM_GEN_2、200);//针对200kHz 进行设置
   PWMPulseWidthSet (PWM0_BASE、PWM_OUT_1、200);// 50%占空比
   PWMGenEnable (PWM0_BASE、PWM_GEN_2);
   PWMOutputState (PWM0_BASE、PWM_OUT_5_BIT、TRUE);

   uint32_t PWMClock = SysCtlClockGet ()/64;
   uint32_t 负载=(PWMClock/PWM_FREQUENCY)- 1;

   PWMGenPeriodSet (PWM1_base、PWM_GEN_0、负载);
    //while (1){}




   PE3上的//ADC 采样

     SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHz);


      GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_3);


       SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
       ADCClockConfigSet (ADC0_BASE、ADC_CLOCK_SRC_PLL | ADC_CLOCK_RATE_FULL、266);
       ADCSequenceDisable (ADC0_BASE、1);

       ADCSequenceConfigure (ADC0_BASE、1、ADC_TRIGGER_PWM0*3、0);
       ADCSequenceStepConfigure (ADC0_BASE、1、0、ADC_CTL_CH0);
       ADCSequenceStepConfigure (ADC0_BASE、1、1、ADC_CTL_CH0);
       ADCSequenceStepConfigure (ADC0_BASE、1、2、ADC_CTL_CH0);
       ADCSequenceStepConfigure (ADC0_BASE、1、3、ADC_CTL_CH0 | ADC_CTL_IE | ADC_CTL_END);
                  ADCSequenceEnable (ADC0_BASE、1);

                  while (1)
                  {
                                ADCIntClear (ADC0_BASE、1);
                                ADCProcessorTrigger (ADC0_BASE、1);

                                while (!ADCIntStatus (ADC0_BASE、1、false))
                                {


                                }

                                ADCSequenceDataGet (ADC0_BASE、1、&ulADC0Value[100]);
                               // uint32_t pinVal;//用于保持 pinRead 的变量
                                PinVal= GPIOPinRead (GPIO_Porte _BASE、GPIO_PIN_3);
                               pinVal1= GPIOPinRead (GPIO_Porte _BASE、GPIO_PIN_4);
                                int a=0;

                                对于(a=1;a<=1;a++){

                             uint32_t res=a;

                                }




/*对于(i=0;i<100;i++){
int a=GPIOPinRead (GPIO_Porte _BASE、GPIO_PIN_3);

uint32_t adc_val[]=
}*/






我遇到错误、我没有低估错误、我无法理解。

说明   资源   路径   位置   类型
#10010 null:链接期间遇到错误;"ADC_Sampling2.out"未构建   ADC_Sampling2.          C/C++问题
"="">processors.wiki.ti.com/.../10234"> 空:未解析的符号仍为   ADC_Sampling2          C/C++问题
gmake:***[ADC_Sampling2.out]错误1   ADC_Sampling2          C/C++问题
gmake:目标"全部"不会由于错误而重新生成。    ADC_Sampling2.          C/C++问题
未解析的符号 ulADC0Value、首先在./project.obj   adc_Sampling2中引用          C/C++问题

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

    您已将变量 ulADC0Value 声明为外部变量、但从未定义过它。 如果您只删除了"extern "关键字、则代码将进行编译和链接。 如果以后需要从外部引用该数组,则需要声明和定义。

    extern uint32_t ulADC0Value[100];
    uint32_t ulADC0Value[100];
    

    第一行将标签声明为外部标签、以便可以从不同的文件引用它。 第二种方法实际上会导致编译器/链接器分配存储空间。 您可以有许多.c 文件具有"extern "行、但只有一个.c 文件实际创建变量。