2024年1月21日发(作者:)
#ifndef _BSP_ADC_H_#define _BSP_ADC_H_#include "stm32f10x.h"void ADC_Config(void);#endifbsp_adc.c
#include "bsp_adc.h"__IO uint16_t ADC_ConvertedValue;void ADC_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2, ENABLE);
GPIO__Pin = GPIO_Pin_1; GPIO__Mode = GPIO_Mode_AIN; GPIO__Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure);
ADC__Mode = ADC_Mode_Independent; ADC__ContinuousConvMode = ENABLE; ADC__ScanConvMode = DISABLE; ADC__ExternalTrigConv = ADC_ExternalTrigConv_None; ADC__DataAlign = ADC_DataAlign_Right; ADC__NbrOfChannel = 1; ADC_Init(ADC2, &ADC_InitStructure);
RCC_ADCCLKConfig(RCC_PCLK2_Div6); ADC_RegularChannelConfig(ADC2, ADC_Channel_11, 1, ADC_SampleTime_239Cycles5); ADC_ITConfig(ADC2, ADC_IT_EOC, ENABLE); ADC_Cmd(ADC2, ENABLE); //ADON开关
//复位校准 ADC_ResetCalibration(ADC2); while(ADC_GetResetCalibrationStatus(ADC2));
//开始校准 ADC_StartCalibration(ADC2); while(ADC_GetCalibrationStatus(ADC2));
ADC_SoftwareStartConvCmd(ADC2, ENABLE);
NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC__IRQChannel = ADC1_2_IRQn; NVIC__IRQChannelCmd = ENABLE; NVIC__IRQChannelPreemptionPriority = 2; NVIC__IRQChannelSubPriority = 2;
NVIC_Init(&NVIC_InitStructure);}void ADC1_2_IRQHandler(void){ if(ADC_GetITStatus(ADC2, ADC_IT_EOC) != RESET) { ADC_ConvertedValue = ADC_GetConversionValue(ADC2);
} ADC_ClearITPendingBit(ADC2, ADC_IT_EOC);}main.c


发布评论