国外机械做的好的网站,wordpress 媒体文件发布,网页制作与网站建设在线作业,微信代运营合同模板时钟配置HSI主频配置64M 勾选打开8个通道的ADC 使能连续转换模式 添加DMA DMA模式选择循环模式 使能DMA连续请求
采样时间配置160.5
转换次数为8 配置好8次转换的顺序 配置好串口#xff0c;选择异步模式配置好需要的开发环境并获取代码 修改main.c
串口重定向
#include 选择异步模式配置好需要的开发环境并获取代码 修改main.c
串口重定向
#include stdio.h
int fputc(int ch, FILE *f)
{HAL_UART_Transmit(huart1, (uint8_t *)ch, 1, 0xFFFF);return ch;
} 串口重定向一定要勾选Use Micro LIBMX_ADC1_Init();
void MX_ADC1_Init(void)
{/* USER CODE BEGIN ADC1_Init 0 *//* USER CODE END ADC1_Init 0 */ADC_ChannelConfTypeDef sConfig {0};/* USER CODE BEGIN ADC1_Init 1 *//* USER CODE END ADC1_Init 1 *//** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)*/hadc1.Instance ADC1;hadc1.Init.ClockPrescaler ADC_CLOCK_SYNC_PCLK_DIV2;hadc1.Init.Resolution ADC_RESOLUTION_12B;hadc1.Init.DataAlign ADC_DATAALIGN_RIGHT;hadc1.Init.ScanConvMode ADC_SCAN_ENABLE;hadc1.Init.EOCSelection ADC_EOC_SINGLE_CONV;hadc1.Init.LowPowerAutoWait DISABLE;hadc1.Init.LowPowerAutoPowerOff DISABLE;hadc1.Init.ContinuousConvMode ENABLE;hadc1.Init.NbrOfConversion 8;hadc1.Init.ExternalTrigConv ADC_SOFTWARE_START;hadc1.Init.ExternalTrigConvEdge ADC_EXTERNALTRIGCONVEDGE_NONE;hadc1.Init.DMAContinuousRequests ENABLE;hadc1.Init.Overrun ADC_OVR_DATA_PRESERVED;hadc1.Init.SamplingTimeCommon1 ADC_SAMPLETIME_160CYCLES_5;hadc1.Init.SamplingTimeCommon2 ADC_SAMPLETIME_160CYCLES_5;hadc1.Init.OversamplingMode DISABLE;hadc1.Init.TriggerFrequencyMode ADC_TRIGGER_FREQ_HIGH;if (HAL_ADC_Init(hadc1) ! HAL_OK){Error_Handler();}/** Configure Regular Channel*/sConfig.Channel ADC_CHANNEL_0;sConfig.Rank ADC_REGULAR_RANK_1;sConfig.SamplingTime ADC_SAMPLINGTIME_COMMON_1;if (HAL_ADC_ConfigChannel(hadc1, sConfig) ! HAL_OK){Error_Handler();}/** Configure Regular Channel*/sConfig.Channel ADC_CHANNEL_1;sConfig.Rank ADC_REGULAR_RANK_2;if (HAL_ADC_ConfigChannel(hadc1, sConfig) ! HAL_OK){Error_Handler();}/** Configure Regular Channel*/sConfig.Channel ADC_CHANNEL_2;sConfig.Rank ADC_REGULAR_RANK_3;if (HAL_ADC_ConfigChannel(hadc1, sConfig) ! HAL_OK){Error_Handler();}/** Configure Regular Channel*/sConfig.Channel ADC_CHANNEL_3;sConfig.Rank ADC_REGULAR_RANK_4;if (HAL_ADC_ConfigChannel(hadc1, sConfig) ! HAL_OK){Error_Handler();}/** Configure Regular Channel*/sConfig.Channel ADC_CHANNEL_4;sConfig.Rank ADC_REGULAR_RANK_5;if (HAL_ADC_ConfigChannel(hadc1, sConfig) ! HAL_OK){Error_Handler();}/** Configure Regular Channel*/sConfig.Channel ADC_CHANNEL_5;sConfig.Rank ADC_REGULAR_RANK_6;if (HAL_ADC_ConfigChannel(hadc1, sConfig) ! HAL_OK){Error_Handler();}/** Configure Regular Channel*/sConfig.Channel ADC_CHANNEL_6;sConfig.Rank ADC_REGULAR_RANK_7;if (HAL_ADC_ConfigChannel(hadc1, sConfig) ! HAL_OK){Error_Handler();}/** Configure Regular Channel*/sConfig.Channel ADC_CHANNEL_7;sConfig.Rank ADC_REGULAR_RANK_8;if (HAL_ADC_ConfigChannel(hadc1, sConfig) ! HAL_OK){Error_Handler();}/* USER CODE BEGIN ADC1_Init 2 *//* USER CODE END ADC1_Init 2 */}
void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
{GPIO_InitTypeDef GPIO_InitStruct {0};if(adcHandle-InstanceADC1){/* USER CODE BEGIN ADC1_MspInit 0 *//* USER CODE END ADC1_MspInit 0 *//* ADC1 clock enable */__HAL_RCC_ADC_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();/**ADC1 GPIO ConfigurationPA0 ------ ADC1_IN0PA1 ------ ADC1_IN1PA2 ------ ADC1_IN2PA3 ------ ADC1_IN3PA4 ------ ADC1_IN4PA5 ------ ADC1_IN5PA6 ------ ADC1_IN6PA7 ------ ADC1_IN7*/GPIO_InitStruct.Pin GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|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);/* ADC1 DMA Init *//* ADC1 Init */hdma_adc1.Instance DMA1_Channel1;hdma_adc1.Init.Request DMA_REQUEST_ADC1;hdma_adc1.Init.Direction DMA_PERIPH_TO_MEMORY;hdma_adc1.Init.PeriphInc DMA_PINC_DISABLE;hdma_adc1.Init.MemInc DMA_MINC_ENABLE;hdma_adc1.Init.PeriphDataAlignment DMA_PDATAALIGN_HALFWORD;hdma_adc1.Init.MemDataAlignment DMA_MDATAALIGN_HALFWORD;hdma_adc1.Init.Mode DMA_CIRCULAR;hdma_adc1.Init.Priority DMA_PRIORITY_LOW;if (HAL_DMA_Init(hdma_adc1) ! HAL_OK){Error_Handler();}__HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1);/* USER CODE BEGIN ADC1_MspInit 1 *//* USER CODE END ADC1_MspInit 1 */}
} 主函数 uint16_t ADC_CHANNEL[8];
/*** brief The application entry point.* retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_DMA_Init();MX_ADC1_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 */HAL_ADC_Start_DMA(hadc1,(uint32_t*)ADC_CHANNEL, 8); //启动AD转换DMA模式/* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE */static int count 0;count;uint16_t Adc_Val 0;if(count % 100000 0){for(int i 0; i 8; i){Adc_Val ADC_CHANNEL[i];printf(CHANNEL%d %04d, %f V\r\n, i, Adc_Val, (double)Adc_Val / 4095 * 3.3); }printf(\r\n\r\n\r\n\r\n\r\n); }/* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
串口打印