更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz本节主要介绍一下Hi3861的ADC功能,顺便实现ADC按键检测。先来看看效果吧。查看开发板,可以看到除了reset键之外还有3个按键。从原理上看,三个按键其实都连接到了GPIO5引脚,GPIO5引脚可以复用为ADC2引脚。因此,我们可以猜测,我们可以使用ADC来检测电压并确定哪个引脚被按下。看效果:当我按下按钮1时,串口会打印:当我按下按钮2时,串口会打印:当我按下USER按钮时,串口会打印其中vlt_min表示最小ADC值读取值,vlt_max表示读取的ADC值的最大值。由此可见,按下按钮1时,ADC值范围为0.563~0.577。按下按钮2后,ADC值范围为0.963至0.970。按下USER键后,ADC值范围为0.197至0.204。如果没有按键按下,那么ADC值为3.227~3.241vlt_min:3.227,vlt_max:3.241代码实现其实很简单。(1)引脚初始化这里,由于GPIO5默认复用为串口引脚,这里我们重新修改为普通GPIO引脚。初始化代码如下:(hi_void)hi_gpio_init();hi_io_set_func(HI_IO_NAME_GPIO_5,HI_IO_FUNC_GPIO_5_GPIO);/*uart1rx*/ret=hi_gpio_set_dir(HI_GPIO_IDX_5,HI_GPIO_DIR_IN);if(ret!=HI_ERR_SUCCESS)==ERR("======gpio->hi_gpio_set_dir1ret:%d\r\n",ret);return;}(2)读取ADC值读取ADC值的代码页比较简单。在这里,我反复看了64遍,减少误判。memset_s(g_adc_buf,sizeof(g_adc_buf),0x0,sizeof(g_adc_buf));for(i=0;i
