#include "headfile.h" //#include "common.h" #include "math.h" //#include "cmath" extern unsigned int AD_L[8]; extern int AD[8]; extern int chazhi[10]; extern float sensor_to_one[8]; extern unsigned int max_v[8]; void AD_nit(); void Max_ADC(void); void Max_ADC_H(void); //void Read_AD(void); //void Read_AD_H(void); //void Analyse_ADC(void); void Find_Max(void); void Read_ADC(void); //float absf(int a,int b); int ADC_2(void); void Computer_Display2(void); uint16_t ad_valu[8][5]; int16_t min[2][3], max[2][3]; uint16_t AD_L[8]; int16_t AD[8]; uint16_t AD_Round[8]; uint16_t AD_V[5]; uint16_t adsum[8]; uint16_t AD_sum[8]; uint16_t ad_valu1[8]; float sensor_to_one[8]; uint16_t max_v[8], min_v[8]; int16_t centre = 4000; int16_t chazhi[10]; int16_t move = 0; float Previous_Error[12]; float Previous_Error1[12]; void AD_nit() { adc_init(ADC0, ADC_CH_10, ADC_SAMPLETIME_55POINT5, ADC_RES_12BIT); adc_init(ADC0, ADC_CH_11, ADC_SAMPLETIME_55POINT5, ADC_RES_12BIT); adc_init(ADC0, ADC_CH_12, ADC_SAMPLETIME_55POINT5, ADC_RES_12BIT); adc_init(ADC0, ADC_CH_13, ADC_SAMPLETIME_55POINT5, ADC_RES_12BIT); adc_init(ADC0, ADC_CH_15, ADC_SAMPLETIME_55POINT5, ADC_RES_12BIT);为什么AD_L[8]会出现错误
时间: 2024-04-16 09:28:35 浏览: 150
AD_L[8]出现错误可能是因为它在代码中重复定义两次。在给变量命名时,要确保每个变量只被定义一次。在上述代码中,AD_L[8]被定义了两次。
首先,在头文件headfile.h中,我们可以看到以下代码:
```c
extern unsigned int AD_L[8];
```
这表示AD_L[8]是一个外部变量,在其他文件中已经定义过了。
然后,在当前文件中,我们又看到了以下代码:
```c
uint16_t AD_L[8];
```
这表示在当前文件中再次定义了AD_L[8],导致了重复定义的错误。
要解决这个问题,可以删除当前文件中的AD_L[8]的定义,只保留头文件中的声明即可。修改后的代码如下:
```c
#include "headfile.h"
//#include "common.h"
#include "math.h"
//#include "cmath"
extern unsigned int AD_L[8];
extern int AD[8];
extern int chazhi[10];
extern float sensor_to_one[8];
extern unsigned int max_v[8];
void AD_nit();
void Max_ADC(void);
void Max_ADC_H(void);
//void Read_AD(void);
//void Read_AD_H(void);
//void Analyse_ADC(void);
void Find_Max(void);
void Read_ADC(void);
//float absf(int a,int b);
int ADC_2(void);
void Computer_Display2(void);
uint16_t ad_valu[8][5];
int16_t min[2][3], max[2][3];
// uint16_t AD_L[8]; // 删除重复定义的行
int16_t AD[8];
uint16_t AD_Round[8];
uint16_t AD_V[5];
uint16_t adsum[8];
uint16_t AD_sum[8];
uint16_t ad_valu1[8];
float sensor_to_one[8];
uint16_t max_v[8], min_v[8];
int16_t centre = 4000;
int16_t chazhi[10];
int16_t move = 0;
float Previous_Error[12];
float Previous_Error1[12];
void AD_nit()
{
adc_init(ADC0, ADC_CH_10, ADC_SAMPLETIME_55POINT5, ADC_RES_12BIT);
adc_init(ADC0, ADC_CH_11, ADC_SAMPLETIME_55POINT5, ADC_RES_12BIT);
adc_init(ADC0, ADC_CH_12, ADC_SAMPLETIME_55POINT5, ADC_RES_12BIT);
adc_init(ADC0, ADC_CH_13, ADC_SAMPLETIME_55POINT5, ADC_RES_12BIT);
adc_init(ADC0, ADC_CH_15, ADC_SAMPLETIME_55POINT5, ADC_RES_12BIT);
}
```
这样就修复了AD_L[8]重复定义的问题。
阅读全文