更改ADC缓存对齐

This commit is contained in:
不吃油炸鸡
2025-08-30 21:35:36 +08:00
parent ac38b21e1b
commit 10bd493563
2 changed files with 7 additions and 18 deletions

View File

@@ -31,14 +31,14 @@ extern "C" {
/* USER CODE BEGIN Includes */ /* USER CODE BEGIN Includes */
#define ADC_TIMES 10 #define ADC_TIMES 10
#define ADC_CHANELS 5 #define ADC_CHANELS 4
typedef struct { typedef struct {
uint8_t header[5]; uint8_t header[6]; //2的倍数
// 0x55, 0xAA header // 0x55, 0xAA header
// 0x0A adc times, 0x05 adc channels (so data lenth is times * channels * 2 bytes) // 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. // 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; } __attribute__((packed)) ADC_Packet;
extern ADC_Packet adc_packet; extern ADC_Packet adc_packet;

View File

@@ -54,7 +54,7 @@ void MX_ADC1_Init(void)
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING; hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T2_TRGO; hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T2_TRGO;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 5; hadc1.Init.NbrOfConversion = 4;
hadc1.Init.DMAContinuousRequests = ENABLE; hadc1.Init.DMAContinuousRequests = ENABLE;
hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
if (HAL_ADC_Init(&hadc1) != HAL_OK) if (HAL_ADC_Init(&hadc1) != HAL_OK)
@@ -66,7 +66,7 @@ void MX_ADC1_Init(void)
*/ */
sConfig.Channel = ADC_CHANNEL_5; sConfig.Channel = ADC_CHANNEL_5;
sConfig.Rank = 1; sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_144CYCLES; sConfig.SamplingTime = ADC_SAMPLETIME_15CYCLES;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{ {
Error_Handler(); Error_Handler();
@@ -98,15 +98,6 @@ void MX_ADC1_Init(void)
{ {
Error_Handler(); 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 */ /* USER CODE BEGIN ADC1_Init 2 */
__HAL_DMA_ENABLE_IT(&hdma_adc1, DMA_IT_TC); /*开启DMA传输完成中断*/ __HAL_DMA_ENABLE_IT(&hdma_adc1, DMA_IT_TC); /*开启DMA传输完成中断*/
/* USER CODE END ADC1_Init 2 */ /* USER CODE END ADC1_Init 2 */
@@ -132,14 +123,13 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
PA6 ------> ADC1_IN6 PA6 ------> ADC1_IN6
PA7 ------> ADC1_IN7 PA7 ------> ADC1_IN7
PB0 ------> ADC1_IN8 PB0 ------> ADC1_IN8
PB1 ------> ADC1_IN9
*/ */
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 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.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
@@ -185,11 +175,10 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
PA6 ------> ADC1_IN6 PA6 ------> ADC1_IN6
PA7 ------> ADC1_IN7 PA7 ------> ADC1_IN7
PB0 ------> ADC1_IN8 PB0 ------> ADC1_IN8
PB1 ------> ADC1_IN9
*/ */
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); 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 */ /* ADC1 DMA DeInit */
HAL_DMA_DeInit(adcHandle->DMA_Handle); HAL_DMA_DeInit(adcHandle->DMA_Handle);