小熊派-GPIO

GPIO

GPIO相关接口

GPIO wifiiot_gpio.h API

接口名功能描述
GpioInit初始化GPIO
GpioDeinit取消初始化GPIO
GpioSetDir设置GPIO引脚方向
GpioGetDir获取GPIO引脚方向
GpioSetOutputVal设置GPIO引脚输出电平值
GpioGetOutputVal获取GPIO引脚输出电平值

GPIO wifiiot_gpio_ex.h API

接口名功能描述
IoSetPull设置GPIO引脚上拉
oGetPull获取GPIO引脚上拉
IoSetFunc设置GPIO引脚功能
IoGetFunc获取GPIO引脚功能
IOSetDriverStrength设置GPIO驱动能力
IOGetDriverStrength获取GPIO驱动能力

实验

利用GPIO使LED闪烁

主要代码

static void LedTask(void)
{
    //初始化GPIO
    GpioInit();
    //设置GPIO_2的复用功能为普通GPIO
    IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO);
    //设置GPIO_2为输出模式
    GpioSetDir(WIFI_IOT_GPIO_IDX_2, WIFI_IOT_GPIO_DIR_OUT);
    while (1)
    {
        //设置GPIO_2输出高电平点亮LED灯
        GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 1);
        //延时1s
        usleep(1000000);
        //设置GPIO_2输出低电平熄灭LED灯
        GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 0);
        //延时1s
        usleep(1000000);
    }
}

小熊派-GPIO点亮LED

扩展:闪烁LED灯并实时打印GPIO状态

主要代码

static void LedTask(void)
{
    //初始化GPIO
    GpioInit();
    //设置GPIO_2的复用功能为普通GPIO
    IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_GPIO);
    //设置GPIO_2为输出模式
    GpioSetDir(WIFI_IOT_GPIO_IDX_2, WIFI_IOT_GPIO_DIR_OUT);
    WifiIotGpioDir val = {0};
    GpioGetDir(WIFI_IOT_GPIO_IDX_2,&val);
    printf("GPIO_2 Dir is %d\r\n",val);
    WifiIotGpioValue OutputVal = {0};
    while (1)
    {
        //设置GPIO_2输出高电平点亮LED灯
        GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 1);
        GpioGetOutputVal(WIFI_IOT_GPIO_IDX_2,&OutputVal);
        printf("GPIO_2 OutputVal is %d\r\n",OutputVal);
        //延时1s
        usleep(1000000);
        //设置GPIO_2输出低电平熄灭LED灯
        GpioSetOutputVal(WIFI_IOT_GPIO_IDX_2, 0);
        GpioGetOutputVal(WIFI_IOT_GPIO_IDX_2,&OutputVal);
        printf("GPIO_2 OutputVal is %d\r\n",OutputVal);
        //延时1s 
        usleep(1000000);
    }
}

ADC采样

ADC相关接口

ADC wifiiot_adc.h

接口名功能描述
AdcRead根据输入参数从指定的ADC通道读取一段采样数据

函数样式

AdcRead (WifiIotAdcChannelIndex channel, unsigned short * data, WifiIotAdcEquModelSel equModel, WifiIotAdcCurBais curBais, unsigned short rstCnt )
'''
共五个参数下面是具体说明
'''
参数说明
channelADC通道
data指示用于存放读取数据的地址的指针
equModel表示平均算法的次数
curBais表示模拟功率控制模式
rstCnt指示从重置到转换开始的时间计数

实验

ADC读取GPIO电压值

关键功能(获取电压值函数)代码

/***** 获取电压值函数 *****/
static float GetVoltage(void)
{
    unsigned int ret;
    unsigned short data;
    ret = AdcRead(WIFI_IOT_ADC_CHANNEL_5, &data, WIFI_IOT_ADC_EQU_MODEL_8, WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 		0xff);
    // 判断是否读取成功
    if (ret != WIFI_IOT_SUCCESS)
    {
        printf("ADC Read Fail\n");
    }
    // 计算电压值
    return (float)data * 1.8 * 4 / 4096.0;
}

小熊派-ADC采样

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐