в gpio_stm32.hpp
inline void platform_adc_init(const PinA_t &pin)
{
GPIO_InitTypeDef i = {pin.pin, GPIO_MODE_ANALOG, GPIO_NOPULL, GPIO_SPEED_FREQ_HIGH};
HAL_GPIO_Init(pin.port, &i);
HAL_ADC_Start(pin.handle);
return;
}
inline uint32_t platform_adc_read_raw(const PinA_t &pin, uint32_t sampling)
{
ADC_ChannelConfTypeDef c = {pin.channel, ADC_REGULAR_RANK_1, sampling};
HAL_ADC_ConfigChannel(pin.handle, &c);
HAL_ADC_Start(pin.handle);
HAL_ADC_PollForConversion(pin.handle, 10);
return HAL_ADC_GetValue(pin.handle);
}
в gpio_esp32.hpp
inline void platform_adc_init(const PinA_t &pin)
{
adc1_config_width(ADC_WIDTH_BIT_12);
adc1_config_channel_atten((adc1_channel_t)pin.channel, ADC_ATTEN_DB_12);
platform_adc_calibration(pin);
return;
}
inline uint32_t platform_adc_read_raw(const PinA_t &pin, uint32_t sampling)
{
return adc1_get_raw((adc1_channel_t)pin.channel);
}
То есть в esp32 adc_init это настройка канала а не настройка adc
в stm32 adc_init это настройка именно adc, настройка канала происходит при каждом вызове platform_adc_read_raw
Самый логичный вариант- сделать отдельно настройку АЦП и отдельно настройку каналов АЦП. Плюс убрать настройку канала при каждом вызове platform_adc_read_raw
в gpio_stm32.hpp
в gpio_esp32.hpp
То есть в esp32 adc_init это настройка канала а не настройка adc
в stm32 adc_init это настройка именно adc, настройка канала происходит при каждом вызове platform_adc_read_raw
Самый логичный вариант- сделать отдельно настройку АЦП и отдельно настройку каналов АЦП. Плюс убрать настройку канала при каждом вызове platform_adc_read_raw