openharmony用ubuntu编写adc
第一部分:代码结构
软件部分目录结构
adc_demo
├─ BUILD.gn
└─voltage_buttons_thread.c
我们打开文件
代码打开voltage_buttons_thread.c
hi3861 ADC 通道有 7 个,其中 GPIO 可复用成 ADC 的通道如下:
6 GPIO_04 ADC1
17 GPIO_05 ADC2
19 GPIO_07 ADC3
27 GPIO_09 ADC4
29 GPIO_11 ADC5
30 GPIO_12 ADC0
31 GPIO_13 ADC6
主要函数
头文件
#include <stdio.h> // 标准输入输出
#include <unistd.h> // POSIX标准接口
#include "ohos_init.h" // 用于初始化服务(services)和功能(features)
#include "cmsis_os2.h" // CMSIS-RTOS API V2
#include "iot_gpio.h" // OpenHarmony API:IoT硬件设备操作接口-GPIO
#include "hi_io.h" // 海思 Pegasus SDK:IoT硬件设备操作接口-IO
#include "hi_adc.h" // 海思 Pegasus SDK:IoT硬件设备操作接口-ADC
函数1 读取adc
unsigned int hi_adc_read(WifiIotAdcChannelIndex channel, unsigned short *data, WifiIotAdcEquModelSel equModel, WifiIotAdcCurBais curBais, unsigned short rstCnt)
channel:表示ADC通道
HI_ADC_CHANNEL_0,
HI_ADC_CHANNEL_1,
HI_ADC_CHANNEL_2,
HI_ADC_CHANNEL_3,
HI_ADC_CHANNEL_4,
HI_ADC_CHANNEL_5,
HI_ADC_CHANNEL_6,
HI_ADC_CHANNEL_7,
HI_ADC_CHANNEL_BUTT,//一共有8个通道
data:表示指向存储读取数据的地址的指针
equModel:表示平均算法的次数
HI_ADC_EQU_MODEL_1, /**< 0:The average value is not used.
CNcomment:1次平均,即不进行
平均 CNend */
HI_ADC_EQU_MODEL_2, /**< 1:2-time average algorithm mode.
CNcomment:2次平均算法模式 CNend */
HI_ADC_EQU_MODEL_4, /**< 2:4-time average algorithm mode.
CNcomment:4次平均算法模式 CNend */
HI_ADC_EQU_MODEL_8, /**< 3:8-time average algorithm mode.
CNcomment:8次平均算法模式 CNend */
HI_ADC_EQU_MODEL_BUTT
curBais:表示模拟功率控制模式
HI_ADC_CUR_BAIS_DEFAULT, /**< 0:Auto control.
CNcomment:自动识别模式 */
HI_ADC_CUR_BAIS_AUTO, /**< 1:Auto control.
CNcomment:自动识别模式 */
HI_ADC_CUR_BAIS_1P8V, /**< 2:Manual control, AVDD=1.8V.
CNcomment:手动控制,AVDD=1.8V */
HI_ADC_CUR_BAIS_3P3V, /**< 3:Manual control, AVDD=3.3V.
CNcomment:手动控制,AVDD=3.3V */
HI_ADC_CUR_BAIS_BUTT,