青岛开发区做网站,免费搭建网站 优帮云,网络运营计划方案,wordpress 3.4漏洞目录 一、实验目的
二、电路连接
三、实验执行#xff08;五步#xff09;
1.初始化ADC的IO引脚
2.配置ADC的时钟#xff0c;注意要小于14MHz
3.根据ADC的编程接口 实现初始化ADC的基本参数
4.配置常规序列并闭合触发输入开关
5.闭合总开关、启动并读取转换结果
四…目录 一、实验目的
二、电路连接
三、实验执行五步
1.初始化ADC的IO引脚
2.配置ADC的时钟注意要小于14MHz
3.根据ADC的编程接口 实现初始化ADC的基本参数
4.配置常规序列并闭合触发输入开关
5.闭合总开关、启动并读取转换结果
四、代码 一、实验目的 使用ADC实现根据光敏传感器的光照强弱去得到不同的输入电压对应的量化结果码使用软件触发常规序列的执行既而根据得到的量化值*分辨率得到不同的电压 然后去实现板载灯的亮灭因为日光灯照度一般10lux其对应的AO输出电压为1.5V所以以1.5V为边界实现板载灯的亮灭。 二、电路连接 三、实验执行五步 ADC的执行五步初始化ADCIO、配置时钟、ADC_Init、配置常规序列/注入序列、闭合触发输入开关和总开关 1.初始化ADC的IO引脚 2.配置ADC的时钟注意要小于14MHz 3.根据ADC的编程接口 实现初始化ADC的基本参数 其中值得注意的是EOC和JEOC标志位EOC是end of convert另一个是Inject开头的 常规序列的第一个是配置常规序列的内容即配置哪个通道采样时间多少 连续模式一旦启动 ADC它会 不停地对同一个通道采样和转换转换完一轮马上开始下一轮像水龙头开着一样结果源源不断。----针对一个通道 对齐方式一般选择右对齐方便计算 外部触发这里选择软件触发 双ADC表示是否使用两个ADC来执行操作 通道数表示你要使用几个通道这里是只使用1个 扫描模式如果你配置了 多个通道ADC 会按照你设定的顺序 一个接一个地采样、转换。 例如先测通道 0再测通道 1再测通道 2……直到结束一轮。------针对多个通道 4.配置常规序列并闭合触发输入开关 首先配置序列计划参数依次是ADC名称选择第几个通道在序列计划在排第几采样时间注意这个采用时间 给的是默认是一些固定的时间参数这里选择与光敏传感器10.24最接近的13cycle 之后闭合触发输入的开关 以及闭合ADC总开关 5.闭合总开关、启动并读取转换结果 先清楚标志位 发送软件触发的输入信号 当标志位从0-1表示常规序列完成了注意不是一次转换完成而是一次常规序列都完成了 读取这个值并把这个值转为近似的电压做后续操作 四、代码
#include stm32f10x.h
#include Delay.h
#include usart.h
void App_GPIO_Init(void);
void App_ADC_Init(void);int main(void)
{//使用ADC实现软件触发的单通道转换//ADC初始化 //其中注意输入电压的内阻已经得到并且因此得到的采样时间是10.24cycleApp_GPIO_Init();App_ADC_Init();while(1){//先清零EOC标志位ADC_ClearFlag(ADC1,ADC_FLAG_EOC);while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)RESET);uint16_t resADC_GetConversionValue(ADC1); float voltres*(3.3f/4095);if(volt1.5){GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);}else{GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);}}
}
void App_GPIO_Init(){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitTypeDef GPIO_InitStruct{0};GPIO_InitStruct.GPIO_ModeGPIO_Mode_AF_OD;GPIO_InitStruct.GPIO_PinGPIO_Pin_13;GPIO_InitStruct.GPIO_SpeedGPIO_Speed_2MHz;GPIO_Init(GPIOA,GPIO_InitStruct);}
void App_ADC_Init(){//首先就是初始化ADC的IORCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStruct{0};GPIO_InitStruct.GPIO_PinGPIO_Pin_0;GPIO_InitStruct.GPIO_SpeedGPIO_Speed_2MHz;GPIO_InitStruct.GPIO_ModeGPIO_Mode_AIN;GPIO_Init(GPIOA,GPIO_InitStruct);//初始化后开启时钟RCC_ADCCLKConfig(RCC_PCLK2_Div6);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);//初始化ADCADC_InitTypeDef ADC_InitStruct{0};ADC_InitStruct.ADC_ContinuousConvModeDISABLE;ADC_InitStruct.ADC_DataAlignADC_DataAlign_Right;ADC_InitStruct.ADC_ExternalTrigConvADC_ExternalTrigConv_None;ADC_InitStruct.ADC_ModeADC_Mode_Independent;ADC_InitStruct.ADC_NbrOfChannel1;ADC_InitStruct.ADC_ScanConvModeDISABLE;ADC_Init(ADC1,ADC_InitStruct);//配置常规序列ADC_RegularChannelConfig(ADC1,0,1,ADC_SampleTime_13Cycles5);ADC_ExternalTrigConvCmd(ADC1,ENABLE);//开启总开关ADC_Cmd(ADC1,ENABLE);}