From 10bd493563efdce4e49cc4a9baf7a680a656e63c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=90=83=E6=B2=B9=E7=82=B8=E9=B8=A1?= <1425962791@qq.com> Date: Sat, 30 Aug 2025 21:35:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9ADC=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Power_Pico/Core/Inc/adc.h | 6 +++--- Power_Pico/Core/Src/adc.c | 19 ++++--------------- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/Power_Pico/Core/Inc/adc.h b/Power_Pico/Core/Inc/adc.h index 6ada751..d6a5792 100644 --- a/Power_Pico/Core/Inc/adc.h +++ b/Power_Pico/Core/Inc/adc.h @@ -31,14 +31,14 @@ extern "C" { /* USER CODE BEGIN Includes */ #define ADC_TIMES 10 -#define ADC_CHANELS 5 +#define ADC_CHANELS 4 typedef struct { - uint8_t header[5]; + uint8_t header[6]; //2的倍数 // 0x55, 0xAA header // 0x0A adc times, 0x05 adc channels (so data lenth is times * channels * 2 bytes) // and 1byte for direct & unit, 0x0? for positive, 0x1? for negative, 0x?0 for LOW, 0x?1 for MID, 0x?2 for HIGH. - uint16_t data[ADC_TIMES][ADC_CHANELS]; // ADC 数据 () + uint16_t data[ADC_TIMES][ADC_CHANELS]; } __attribute__((packed)) ADC_Packet; extern ADC_Packet adc_packet; diff --git a/Power_Pico/Core/Src/adc.c b/Power_Pico/Core/Src/adc.c index 17a3506..0761012 100644 --- a/Power_Pico/Core/Src/adc.c +++ b/Power_Pico/Core/Src/adc.c @@ -54,7 +54,7 @@ void MX_ADC1_Init(void) hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING; hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T2_TRGO; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; - hadc1.Init.NbrOfConversion = 5; + hadc1.Init.NbrOfConversion = 4; hadc1.Init.DMAContinuousRequests = ENABLE; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; if (HAL_ADC_Init(&hadc1) != HAL_OK) @@ -66,7 +66,7 @@ void MX_ADC1_Init(void) */ sConfig.Channel = ADC_CHANNEL_5; sConfig.Rank = 1; - sConfig.SamplingTime = ADC_SAMPLETIME_144CYCLES; + sConfig.SamplingTime = ADC_SAMPLETIME_15CYCLES; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); @@ -98,15 +98,6 @@ void MX_ADC1_Init(void) { Error_Handler(); } - - /** Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. - */ - sConfig.Channel = ADC_CHANNEL_9; - sConfig.Rank = 5; - if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) - { - Error_Handler(); - } /* USER CODE BEGIN ADC1_Init 2 */ __HAL_DMA_ENABLE_IT(&hdma_adc1, DMA_IT_TC); /*开启DMA传输完成中断*/ /* USER CODE END ADC1_Init 2 */ @@ -132,14 +123,13 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) PA6 ------> ADC1_IN6 PA7 ------> ADC1_IN7 PB0 ------> ADC1_IN8 - PB1 ------> ADC1_IN9 */ GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; + GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); @@ -185,11 +175,10 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) PA6 ------> ADC1_IN6 PA7 ------> ADC1_IN7 PB0 ------> ADC1_IN8 - PB1 ------> ADC1_IN9 */ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); - HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0|GPIO_PIN_1); + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0); /* ADC1 DMA DeInit */ HAL_DMA_DeInit(adcHandle->DMA_Handle);