美文网首页
『nodeMCU』GPIO接口学习

『nodeMCU』GPIO接口学习

作者: ZSF与你 | 来源:发表于2018-11-25 22:42 被阅读0次
    1. PIN 相关宏定义
    2. gpio_out_set
    3. GPIO 输入输出相关宏
    4. GPIO 中断
    5. gpio_pin_intr_state_set
    6. GPIO中断处理函数

    1. PIN 相关宏定义

    以下宏定义控制GPIO管脚的状态

    函数 功能
    PIN_PULLUP_DIS ( PIN_NAME ) 管脚上拉屏蔽
    PIN_PULLUP_EN ( PIN_NAME ) 管脚上拉使能
    PIN_FUNC_SELECT ( PIN_NAME, FUNC ) 管脚功能选择

    示例:

    //Use MTDI pin as GPIO12.
    PIN_FUNC_SELECT ( PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12 );
    

    2. gpio_out_set

    功能:
    设置 GPIO 属性
    函数定义:

    void gpio_output_set (
        uint32 set_mask,
        uint32 clear_mask,
        uint32 enable_mask,
        uint32 disable_mask
    )
    

    参数:

        uint32 set_mask //设置输出为高的位。对应位为1,输出高;对应位为0,不改变状态
        uint32 clear_mask //设置输出为低的位。对应位为1,输出低;对应位为0,不改变状态
        uint32 enable_mask //设置使能输出的位
        uint32 disable_mask //设置使能输入的位
    

    返回:

    示例:

    gpio_out_set ( BIT12, 0, BIT12, 0 )
    //设置 GPIO12 输出高电平
    gpio_out_set ( 0, BIT12, BIT12, 0 )
    //设置 GPIO12输出低电平
    gpio_out_set ( BIT12, BIT13, BIT12|BIT13, 0 )
    //设置 GPIO12 输出高电平,GPIO13 输出低电平
    gpio_output_set ( 0, 0, 0, BIT12 )
    //设置 GPIO12 为输入
    

    3. GPIO 输入输出相关宏

    GPIO_OUTPUT_SET ( gpio_no, bit_value )
    //设置 gpio_no 管脚输出 bit_value,与上一节的输出高低电平的示例相同。
    GPIO_DIS_OUTPUT ( gpio_no )
    //设置 gpio_no 管脚输入,与上一节的设置输入示例相同。
    GPIO_INPUT_GET ( gpio_no )
    //获取 gpio_no 管脚的电平状态。
    

    4. GPIO 中断

    ETS_GPIO_INTR_ATTACH ( func, arg )
    //注册 GPIO 中断处理函数
    ETS_GPIO_INTR_DISABLE ( )
    //关 GPIO 中断
    ETS_GPIO_INTR_ENABLE ( )
    //开 GPIO 中断
    

    5. gpio_pin_intr_state_set

    功能:
    设置 GPIO 中断触发状态
    函数定义:

    void gpio_pin_intr_state_set (
        uint32 i,
        GPIO_INT_TYPE intr_stata
    )
    

    参数:

    uint32 i
    //GPIO pin ID,例如设置 GPIO14,则为 GPIO_ID_PIN ( 14 )
    GPIO_INT_TYPE intr_stata
    //中断触发状态
    typedef enum {
        GPIO_PIN_INTR_DISABLE = 0,
        GPIO_PIN_INTR_POSEDGE = 1,
        GPIO_PIN_INTR_NEGEDGE = 2,
        GPIO_PIN_INTR_ANYEDGE = 3,
        GPIO_PIN_INTR_LOLEVEL = 4,
        GPIO_PIN_INTR_HILEVEL = 5
    } GPIO_INT_TYPE;
    

    返回:

    6. GPIO中断处理函数

    在 GPIO 中断处理函数内,需要做如下操作来清除响应位的中断状态:

        uint32 gpio_status;
        gpio_status = GPIO_REG_READ ( GPIO_STATUS_ADDRESS );
        //clear interrupt status
        GPIO_REG_WRITE ( GPIO_STATUS_W1TC_ADDRESS, gpio_status );
    

    相关文章

      网友评论

          本文标题:『nodeMCU』GPIO接口学习

          本文链接:https://www.haomeiwen.com/subject/bndmqqtx.html