那么继续 ESP-IDF 学习,首先是 GPIO。
使用 ESP-IDF 的 GPIO 首先需要初始化 GPIO 口,需要用到 gpio_config () 函数(指南里叫它 API)。
使用 gpio_config () 函数需要配置 gpio_mode_t 结构体。
gpio_mode_t 中的成员包括:
-
uint64_t pin_bit_mask
GPIO 引脚,是一个二进制数每位表示一个 GPIO 引脚(这边写 "1ull<<x",其中 x 表示引脚号,1ull 是无符号长整型 1) -
gpio_mode_t mode
GPIO 模式(包括输入输出开漏推挽之类) -
gpio_pullup_t pull_up_en
GPIO 上拉 -
gpio_pulldown_t pull_down_en
GPIO 下拉 -
gpio_int_type_t intr_type
GPIO 是否触发中断
等配置好后调用 gpio_config () 完成 GPIO 初始化。
然后我们通过 gpio_get_level()来读取输入引脚电平,gpio_set_level()来更改输出引脚电平。
下面是实际操作,顺便把如何新建项目讲了
首先我们打开新建项目向导
如何选择好项目位置和名称还有开发板,这里我是 ESP-WROOM-32,选 ESP-WROVER-KIT 3.3V 就行。
然后直接点右下角这个按键
选 template 就行,这就是空项目。
完成创建,接着我们发现没有自动打开项目,所以还需要点打开文件夹,找到创建的项目文件夹。
打开 main 文件夹里的 main.c 文件,现在我们写代码。
这边我写了个简单的按钮控制板载 LED 的代码,可以看到我调用了 freertos 库,这个不用在意,我只是调用它的 delay 函数来按键消抖而已。
然后就是编译,在那之前我们要先导入 vscode 配置文件,在命令栏里搜索并选择
接着先清楚一下编译数据,然后才点右边的编译
编译完成后我们选择好端口并烧录,我这边是 CH340USB 转串口,所以选择 UART 串口烧录就行
下面是最终实现效果:
那么 GPIO 就到这里,什么?还有其他 GPIO 函数(API)?哈,我们不学。