uint16_t Get_ADC_Average(uint8_t ch,uint8_t times)
时间: 2024-01-21 18:04:17 浏览: 111
`uint16_t Get_ADC_Average(uint8_t ch,uint8_t times)`是一个用于获取ADC平均值的函数,其中`ch`表示ADC通道号,`times`表示采样次数。函数的具体实现如下所示:
```c
uint16_t Get_ADC_Average(uint8_t ch,uint8_t times)
{
uint32_t temp_val=0;
uint8_t t;
for(t=0;t<times;t++)
{
temp_val+=Get_Adc(ch);
HAL_Delay(5);
}
return temp_val/times;
}
```
该函数会调用`Get_Adc(ch)`函数获取ADC值,并将其累加到`temp_val`中。在每次获取ADC值之后,函数会延时5ms,以确保ADC转换完成。最后,函数会返回`temp_val`的平均值。
相关问题
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[8][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); }只有5个电感怎么改
如果只有5个电感需要进行模拟信号转换,可以将AD_V数组的维度从[8][5]更改为[5],同时修改AD_nit函数中的ADC初始化部分,只初始化对应的5个通道。以下是修改后的代码示例:
```c
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_V数组的维度变为了[5],表示存储了5个电感的模拟信号转换结果。同时,AD_nit函数只初始化了5个对应的ADC通道。
uint32_t ADC_Get_Average(uint8_t ch,uint8_t times)
`uint32_t ADC_Get_Average(uint8_t ch, uint8_t times)` 是一个函数,用于获取ADC(模数转换器)的平均值。
函数的参数包括 `ch` 和 `times`,其中 `ch` 表示要读取的ADC通道,`times` 表示进行多少次采样求平均值。
函数的返回值是一个 `uint32_t` 类型的无符号整数,表示ADC的平均值。
函数的实现可能包括以下步骤:
1. 设置ADC的通道为 `ch`。
2. 进行 `times` 次ADC采样,并将采样结果累加起来。
3. 将累加结果除以 `times`,得到平均值。
4. 返回平均值。
阅读全文