STM32F1系列--ADC库函数学习笔记
程序员文章站
2022-07-04 16:01:38
...
图1:
图2:
图3:RCC_CFGR寄存器
图4:ADC_CR1寄存器之模式的选择:
(常用模式为独立模式)
图5:ADC_CR1寄存器
(PS:单通道读取不需要设置该位,设置为DISABLE即可)
图6:ADC_CR1寄存器
(数据对其位设置)
图7:ADC_CR1寄存器
(常用的规则通道的设置位)
图8:ADC_CR2寄存器
(一般设为连续转换,如果有什么实际应用是设置位单次的欢迎大家讨论)
图9:ADC_CR2寄存器
(22和20位,置1)
图9:ADC_CR2寄存器
(当这两个寄存器配置1后,由硬件置0,即校准完成)
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_StructInit.GPIO_Pin = GPIO_Pin_10;
GPIO_StructInit.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOC,&GPIO_InitTypeDef);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1 , ENABLE);//开启对应外设的时钟
/*设置ADC分频因子;6分频; 72M/6=12M*/
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
ADC_DeInit(ADC1);//复位ADC1寄存器内部值(防止之前设置的值影响配置.不过按道理来说我们都有设置,可以直接覆盖.大概就这样把)
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC设置为独立工作模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //数模转换工作在单通道模式 /非扫描模式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//工作在单次转换模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//设置SWSTATR为外部触发事件
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 1;//设置规则通道转换数目为1;
ADC_Init(ADC1,&ADC_InitStructure);
/*设置外部CR2的22位和20位,启动外部事件转换和开启规则转换通道*/
ADC_SoftwareStartConvCmd(ADC1,ENABLE); //软件启动
ADC_Cmd(ADC1,ENABLE);//设置ADC-CR2 的ADON位 打开对应ADC外设
ADC_ResetCalibration(ADC1); //使能复位校准
while(ADC_GetResetCalibrationStatus(ADC1)); //检测函数,检测RSTCL位是否置0
ADC_StartCalibration(ADC1); //开启AD校准
while(ADC_GetCalibrationStatus(ADC1)); //等待校准结束
}
上面的代码基本每一句话都在上图和注释解释了;下次有空再将分频把.基本的单通道初始化配置就这样子
上一篇: 使用RSA密钥生成JWT RSAkeytoolJWTOAuth
下一篇: STM32F1 时钟树