如我的单片机相关对应的管脚是PB0和PB1,使用ADC(模数转换器)。
ADC时钟的配置不能太高,这里设置为12,配置完成之后CTRL+s生成代码
在adc.c文件中添加下面的代码(建议自己手动打一遍)
enum
{
ADCCHN_LUX,
ADCCHN_NOISY,
ADCCHN_MAX,
};
int adc_lux_mix(uint32_t *lux,uint32_t *noisy)
{
uint32_t i;
uint32_t timeout=0xffffff;
for(i=0;i<ADCCHN_MAX;i++)
{
HAL_ADC_Start(&hadc1);//这是一个系统函数
HAL_ADC_PollForConversion(&hadc1,timeout);
if(ADCCHN_NOISY == i)
{
*noisy=HAL_ADC_GetValue(&hadc1);//获取该数据并保存在声音中
printf("this is noisy\n");//为了方便使用串口助手查看确定谁先开始
}
else if(ADCCHN_LUX == i)
{
*lux=HAL_ADC_GetValue(&hadc1);
printf("this is lux\n");
}
HAL_Delay(10);
}
HAL_ADC_Stop(&hadc1);
return 0;
}
adc.h头文件中声明
定义变量,并传地址到函数中,打印出结果
烧录并使用串口调试助手查看结果