一、原理图

PA3:光敏电阻开关量信号
PA4:光敏电阻的分压模拟电压值
DO与PA3连接,AO与PA4连接。
二、CubeMX配置
配置PA4为ADC采集模式,配置PA3为gpio输入模式
开启adc2的DMA,进行设置

打开中断



三、代码
1.初始化
uint32_t adc_value[256];
HAL_ADCEx_Calibration_Start(&hadc2, ADC_SINGLE_ENDED);
HAL_ADC_Start_DMA(&hadc2, adc_value, 256);
2.adc数据处理
float adc_get()
{
unsigned int t=0;
unsigned int value=0;
for( int i=0;i<255;i++ )
{
for( int j=0;j<255-i;j++ )
{
if( adc_value[j]>adc_value[j+1] )
{
t=adc_value[j+1];
adc_value[j+1]=adc_value[j];
adc_value[j]=t;
}
}
}
for( int i=1;i<255;i++ )
{
value+=i*adc_value[i];
}
return value/32385.0*3.3/4096;
}
3.显示
unsigned int trdo;
sprintf(text," ADC:%0.2fV ",adc_get());
LCD_DisplayStringLine(Line4, (unsigned char *)text);
trdo=HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_3);
sprintf(text," TRDO:%d ",trdo);
LCD_DisplayStringLine(Line5, (unsigned char *)text);
4.理解
trao(PA4)为正常的adc采集,根据光强的不同,adc采集的电压值不同。
trao采集的电压值通过RP7滑变产生的电压进行比较,当trao电压大于RP7滑变电压,trdo为1,反之为0.
942

被折叠的 条评论
为什么被折叠?



