#author("2022-12-28T11:09:10+08:00","default:Admin","Admin")
#author("2022-12-28T11:14:30+08:00","default:Admin","Admin")
[[ESP32]]

&color(red){※This article is based on esp-idf 4.0};
#contents

* API [#o98a0443]

** mode用于设置gpio的模式 [#w207fc43]

- GPIO_MODE_INPUT 输入
- GPIO_MODE_OUTPUT 输出
- GPIO_MODE_OUTPUT_OD 开漏输出(如果外部或者内部不上拉电阻则无法输出高电平)
- GPIO_MODE_INPUT_OUTPUT_OD 开漏输入输出
- GPIO_MODE_INPUT_OUTPUT 输入输出

&color(red){想要获取到GPIO的状态,必须设置为INPUT才可以};
&color(red){mode设置为 GPIO_MODE_OUTPUT 时,通过 gpio_get_level 是获取不到GPIO的状态的;想要获取到GPIO的状态,必须设置为INPUT才可以};

** pin_bit_mask [#b1526ffe]

pin_bit_mask设置需要操作的GPIO引脚,例如要设置GPIO1和GPIO33

则pin_bit_mask应该设置为 

 (1ULL << 1 | 1ULL << 33)

注意pin_bit_mask类型为uint64_t

** 中断类型枚举 [#yed8de12]

- GPIO_INTR_DISABLE //禁用GPIO中断
- GPIO_INTR_POSEDGE //GPIO中断类型:上升沿
- GPIO_INTR_NEGEDGE //下降沿
- GPIO_INTR_ANYEDGE //上升沿和下降沿
- GPIO_INTR_LOW_LEVEL //输入低电平触发
- GPIO_INTR_HIGH_LEVEL //输入高电平触发

*输入 [#n721bc2a]

** 下降沿触发中断 [#gc6f8731]

中断触发按键按下来,触发中断,执行回调函数;
- 注意①:中断触发按键连接的是GND和GPIO14,因为是下降沿触发,所以必须一边接地!!
- 注意②:代码中要设置&color(red){输入模式,不下拉,内部上拉!};原因在于内部上拉,就是高电平短脚,可以检测到下降沿。

#codeprettify{{
//GPIO口结构体定义
gpio_config_t io_conf;
//下降沿触发中断方式
io_conf.intr_type = GPIO_INTR_NEGEDGE;
//选择为输出模式
io_conf.mode = GPIO_MODE_INPUT;
//配置GPIO_OUT寄存器
io_conf.pin_bit_mask = GPIO_SEL_4;
//内部不下拉
io_conf.pull_down_en = 0;//GPIO_PULLDOWN_DISABLE;
//内部上拉
io_conf.pull_up_en = 1;//GPIO_PULLUP_ENABLE;
//最后配置使能
gpio_config(&io_conf);
}}

** 上升沿触发中断 [#m8848dad]

中断触发按键按下来,触发中断,执行回调函数;
- 注意①:中断触发按键连接的是VCC和GPIO14,因为是上升沿触发,所以必须一边接高电平!!
- 注意②:代码中要设置&color(red){输入模式,不上拉,内部下拉!};原因在于内部下拉时候,就是低电平短脚输入,可以检测到上升沿。

#codeprettify{{
//GPIO口结构体定义
gpio_config_t io_conf;
//上升沿触发
io_conf.intr_type = GPIO_INTR_POSEDGE;
//选择为输出模式
io_conf.mode = GPIO_MODE_INPUT;
//配置GPIO_OUT寄存器
io_conf.pin_bit_mask = GPIO_SEL_4;
//内部下拉
io_conf.pull_down_en = 1;//GPIO_PULLDOWN_ENABLE;
//禁止上拉
io_conf.pull_up_en = 0;//GPIO_PULLUP_DISABLE;
//最后配置使能
gpio_config(&io_conf);
}}



&ref(ZigBee_体系结构.png);

#hr();
コメント:
#comment_kcaptcha

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS