NodeMCU NO_OS SDK 开发——GPIO功能

开发环境

系统:win10 64位
开发板:NodeMCU
ide : vscode

GPIO功能

PIN 相关宏定义

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

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

GPIO 输出

配置管脚为GPIO模式

PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2);

设置高电平

GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 1);

设置低电平

GPIO_OUTPUT_SET(GPIO_ID_PIN(2), 0);

GPIO 输入

设置输入模式

GPIO_DIS_OUTPUT(GPIO_ID_PIN(2));

获取管脚电平状态

uint_8 level = 0;
level  = GPIO_INPUT_GET(GPIO_ID_PIN(2));

配置GPIO中断

1.配置管脚为GPIO模式

PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_GPIO2);

2. 配置GPIO为输入模式

GPIO_DIS_OUTPUT(GPIO_ID_PIN(2));

3. 禁⽌止所有的 IO 中断

ETS_GPIO_INTR_DISABLE();

4. 设置中断处理理函数

ETS_GPIO_INTR_ATTACH(GPIO_INTERRUPT,NULL);

5.配置 GPIO为下降沿中断触发的⽅方式

gpio_pin_intr_state_set(GPIO_ID_PIN(2),GPIO_PIN_INTR_NEGEDGE);

6. 使能 GPIO 中断

ETS_GPIO_INTR_ENABLE();

中断函数处理

1. 清除该中断

Uint16 gpio_status=0;
gpio_status = GPIO_REG_READ(GPIO_STATUS_ADDRESS);
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, gpio_status);

2. 判断是哪个 IO 触发的中断(当有多个 IO 都配置为中断⽅方式时)

If(gpio_status==GPIO_Pin_2)

3. 如果是双沿中断,应该判断此次中断为上升沿中断还是下降沿中断

if(!GPIO_INPUT_GET(GPIO_ID_PIN(2)))

4. 中断函数处理理流程示例例

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值