ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

蓝桥杯嵌入式_STM32学习_ADC

2022-02-04 19:30:00  阅读:194  来源: 互联网

标签:STM32 蓝桥 while InitStructure ADC ADC1 GPIO RCC


代码

在这里插入图片描述

void ADC1_Init(void){
	GPIO_InitTypeDef GPIO_InitStructure;
	ADC_InitTypeDef ADC_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_ADC1,ENABLE);//使能GPIOB和ADC1
	
	RCC_ADCCLKConfig(RCC_PCLK2_Div6);//六分频,为12MHz(ADC最大频率14MHz)

    //初始化GPIOB
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
	
    //初始化ADC1	
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//独立模式
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;//单通道
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//关闭连续转换模式
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//数据右对齐
	ADC_InitStructure.ADC_NbrOfChannel = 1;//通道数量为1
	ADC_Init(ADC1,&ADC_InitStructure);
	
    //校准ADC1
	ADC_Cmd(ADC1,ENABLE);//使能ADC1  	

	ADC_ResetCalibration(ADC1);//复位校对
	while(ADC_GetResetCalibrationStatus(ADC1));//等待复位完成
	ADC_StartCalibration(ADC1);//开始校对
	while(ADC_GetCalibrationStatus(ADC1));//等待校对完成
}

u16 Get_Adc(u8 channel){
	u16 temp;
	
	ADC_RegularChannelConfig(ADC1,channel,1,ADC_SampleTime_239Cycles5);//规则组通道初始化
    //第一个入口参数为选的配置的 ADC,第二个入口参数为选择配置的通道,第三个入口参数则配置 ADC 编号(例如使用 ADC1,那么就写 1),第四个入口参数则代表单次采样的时钟周期数。
	ADC_SoftwareStartConvCmd(ADC1,ENABLE);//软件启动AD转换
	while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == 0);//通过标志位判断转换是否完成
	temp = ADC_GetConversionValue(ADC1);//获取转换值
	ADC_SoftwareStartConvCmd(ADC1,DISABLE);//关闭软件转换
	
	return temp;
}

// 主函数中

ADC1_Init();
while(1){
    if(ADC_Flag){//用定时器先设定每 500ms 读取一次 AD 值
			ADC_Flag = 0;
			adc_val = Get_Adc(8) * 3.3 / 4095;// PB0 引脚对应的是第 8 通道,我们直接 Get_Adc (8) 即可获取 PB0 的 AD 值。
			sprintf((char*)string,"    ADC_VAL:%.2f    ",adc_val);
			LCD_DisplayStringLine(Line2,string);
		}
}		

转动可变电阻,我们发现 ADC 的值随着我们的转动而改变,那么我们这个 ADC 采样程序是没有问题了。

参考博客:

@fei…- 蓝桥杯嵌入式开发经验分享(7.ADC 的配置)

标签:STM32,蓝桥,while,InitStructure,ADC,ADC1,GPIO,RCC
来源: https://blog.csdn.net/weixin_55374353/article/details/122784922

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有