//PC1 ADC123_11 // 初始化ADC11 void ADC11_Init(void) { // 使能GPIOC和ADC1的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); // 设置ADC时钟分频为PCLK2的6分之一 RCC_ADCCLKConfig(RCC_PCLK2_Div6);

// 配置GPIOC.1为模拟输入模式
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStruct);

// 配置ADC1的通道11为正常转换模式,采样时间为55.5个周期
ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 1, ADC_SampleTime_55Cycles5);

// 配置ADC1的参数
ADC_InitTypeDef ADC_InitStruct;
ADC_InitStruct.ADC_ContinuousConvMode = DISABLE; // 单次转换模式
ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right; // 数据右对齐
ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; // 外部触发转换禁止
ADC_InitStruct.ADC_Mode = ADC_Mode_Independent; // 独立模式
ADC_InitStruct.ADC_NbrOfChannel = 1; // 转换通道数量为1
ADC_InitStruct.ADC_ScanConvMode = DISABLE; // 扫描模式禁止
ADC_Init(ADC1, &ADC_InitStruct); 

// 使能ADC1
ADC_Cmd(ADC1, ENABLE);

// 复位ADC1的校准寄存器
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1) == SET); // 等待校准寄存器复位完成

// 开始ADC1的校准
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1) == SET); // 等待校准完成

}

// 获取ADC转换结果 uint16_t ADC_return(void) { // 启动ADC1的软件转换 ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET); // 等待转换完成 return ADC_GetConversionValue(ADC1); // 返回转换结果

给下面的C语言添加详细的注释PC1 ADC123_11void ADC11_Initvoid	RCC_APB2PeriphClockCmdRCC_APB2Periph_GPIOCENABLE;	RCC_APB2PeriphClockCmdRCC_APB2Periph_ADC1ENABLE;	RCC_ADCCLKConfigRCC_PCLK2_Div6; 	GPIO_InitTypeDef GPI

原文地址: https://www.cveoy.top/t/topic/iVZ0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录