Здравствуйте,
решил по практиковаться в программировании STM'ок
ни как не могу запустить чтобы по человечески работал парный режим АЦП для регулярных каналов
второй АЦП смещает значения там где 58 и 7 это резистор к земле первый скан в нормальном положении а дальше все смещено на 1 вправо
volatile uint16_t adc[20] = {0,};
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
snprintf(trans_str, 127, "\n\n\nADC1 %d %d %d %d %d %d %d %d %d %d\n\nADC2 %d %d %d %d %d %d %d %d %d %d\n", (uint16_t)adc[0], (uint16_t)adc[2], (uint16_t)adc[4], (uint16_t)adc[6], (uint16_t)adc[8],(uint16_t)adc[10],(uint16_t)adc[12],(uint16_t)adc[14],(uint16_t)adc[16], (uint16_t)adc[18],(uint16_t)adc[1], (uint16_t)adc[3], (uint16_t)adc[5], (uint16_t)adc[7], (uint16_t)adc[9],(uint16_t)adc[11],(uint16_t)adc[13],(uint16_t)adc[15],(uint16_t)adc[17], (uint16_t)adc[19]);
HAL_UART_Transmit(&huart3, (uint8_t*)trans_str, strlen(trans_str), 1000);
adc[0] = 0;
adc[1] = 0;
adc[2] = 0;
adc[3] = 0;
adc[4] = 0;
adc[5] = 0;
adc[6] = 0;
adc[7] = 0;
adc[8] = 0;
adc[9] = 0;
adc[10] = 0;
adc[11] = 0;
adc[12] = 0;
adc[13] = 0;
adc[14] = 0;
adc[15] = 0;
adc[16] = 0;
adc[17] = 0;
adc[18] = 0;
adc[19] = 0;
}
.....
int main(void){
.....
HAL_ADCEx_Calibration_Start(&hadc1);
HAL_ADCEx_Calibration_Start(&hadc2);
HAL_ADC_Start(&hadc2);
while (1)
{
HAL_ADCEx_MultiModeStart_DMA(&hadc1, (uint32_t*)&adc, 10);
HAL_Delay(5000);
}
}