From d1011ec1bf14daecb684e718cb971f66aa3b04f1 Mon Sep 17 00:00:00 2001 From: MacRsh <1063220965@qq.com> Date: Mon, 22 May 2023 23:33:36 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E5=86=85=E9=83=A8=E6=B8=A9?= =?UTF-8?q?=E5=BA=A6=E4=BC=A0=E6=84=9F=E5=99=A8=E5=92=8C=E5=86=85=E9=83=A8?= =?UTF-8?q?=E5=8F=82=E8=80=83=E7=94=B5=E5=8E=8B=E8=AF=BB=E5=8F=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bsp/wch/driver/drv_adc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/bsp/wch/driver/drv_adc.c b/bsp/wch/driver/drv_adc.c index 753fbb2..41b1f08 100644 --- a/bsp/wch/driver/drv_adc.c +++ b/bsp/wch/driver/drv_adc.c @@ -65,11 +65,17 @@ mr_err_t ch32_adc_channel_configure(mr_adc_t adc, mr_uint16_t channel, mr_state_ { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIOx = GPIOB; - } else + } else if (channel <= 15) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIOx = GPIOC; } + else if(channel <= 17) + { + ADC_TempSensorVrefintCmd(ENABLE); + } + else + return -MR_ERR_INVALID; if (state == MR_ENABLE) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; @@ -93,6 +99,9 @@ mr_uint32_t ch32_adc_read(mr_adc_t adc, mr_uint16_t channel) struct ch32_adc *hw = (struct ch32_adc *)adc->device.data; mr_uint32_t data = 0; + if (channel >17) + return 0; + ADC_RegularChannelConfig(hw->hw_adc.Instance, channel, 1, ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(hw->hw_adc.Instance, ENABLE); while (! ADC_GetFlagStatus(hw->hw_adc.Instance, ADC_FLAG_EOC));