ESP32-C3-LCDkit GPIO 学习

1 前言

学习并记录下 ESP32-C3-LCDkit 开发板的 GPIO 的使用。

2 Get-Started

.\esp-idf\examples\peripherals\gpio 目录下有二个例程,分别是 generic_gpiomatrix_keyboardmatrix_keyboard 是矩阵键盘的例程,手头上没有,干脆就不试了,简单看看 generic_gpio 这个例程。

copy esp-idf 的 generic_gpio 文件夹到自己的开发目录,这里我创建了个 esp_study 目录来存放,用于学习对应的 esp 例程。

2.1 generic_gpio 配置和实现

使用 vscode 打开 generic_gpio 工程,并且在 generic_gpio 根目录下保存工作区,并新建一个 .vscode,存放该工作区项目配置和工具相关文件,这个在前一篇基础入门的时候说过,就不多赘述了。

我们先配置一下工程,并让工程跑起来,同样的设置串口和使用的芯片,这里我选择 COM16esp32c3,看 demo 的 README.md,可以知道,这个例程实现了两个 IO 作为输出、两个 IO 作为输入并配置中断,输出和输入 IO 为相连时,没有触发中断,则只会输出 cnt 计数,输出和输入相接时,会产生中断,并输出中断产生的 IO 和值。所以我需要先选四个 IO 出来,为了接线方便,我选了 LCD 接口相邻的四个 IO,分别是 GPIO0、1、7、2,并配置输出为 0 和 7,输入为 1 和 2,这样接线用杜邦线好接一些。

上述配置完成后,编译并进行烧录,我们看下效果:

GIF太大了,放到第三方图床了,https://www.z4a.net/image/VqkwGv

2.2 generic_gpio 代码

从 app_main 入口开始,可以看到对应 gpio config 的结构体声明,

通过上面,我们可以得到,
作为输出的 0 和 7 被配置为不开启中断、模式为输出、上拉和下拉关闭。
作为输入的 1 和 2 被配置为了上升沿中断触发、模式为输入、开启上拉。

继续往下看,创建了队列和一个任务,用于产生中断时打印触发中断 IO 当前的电平状态,

最后 while 循环,延时 1S 打印计数值和翻转对应的 IO,

3 总结

这个例程主要实现了对 IO 初始化、中断的配置,

对于 IO 初始化,调用的 gpio_config,配置好传参,也就是 gpio_config_t,配置对应的 IO 功能,并传入到接口 gpio_config

对于中断,调用 gpio_install_isr_service,开启对 GPIO 的中断,并调用 gpio_isr_handler_add() 函数注册各个管教的中断处理程序,也可以调用 gpio_isr_handler_remove() 去除对应 IO 的中断。

4 结语

到这里,基本都没有问题了。过程中有什么不能理解的,可以留言告知我!有什么错误,也可以指出来告诉我~