1、摘要
在嵌入式系统软件设计的过程中,总是要经常性地操作GPIO口,在ESP32平台中,我们可以使用下面的函数来初始化GPIO口:
在图1-1所示的函数的时候,用到了一个结构体:
如图1-2所示,在该结构体中有一个64位的变量:pin_bit_mask,该变量的每个比特位则对应一个GPIO口:
当需要初始化特定的GPIO口时,只要将该变量对应的比特位置为1,然后后调用gpio_config函数即可。
下面我就基于ESP32平台,使用Kconfig.projbuild文件创建LED配置的子菜单,来设计一个跑马灯程序。
2、编程环境
3、程序设计过程记录
第1步,启动Eclipse。
第2步,创建一个软件工程。
如图3-1-1所示,点击菜单创建一个软件工程。
如图3-2-1所示,输入一个软件工程名称。
如图3-2-2所示,输入软件工程名称后,点击“Finish”按钮。
图3-2-3所示为创建完成的软件工程。
第4步,配置目标处理器。
如图3-4-1所示,选择当前所使用的目标处理器。
第5步,查看自动创建的Kconfig.projbuild文件内容。
如图3-5-1所示,点开“main“目录,双击打开”Kconfig.projbuild“文件,可看其中有一些WiFi配置方面的内容。
第6步,根据“nodemcu-esp-c3-32s-kit_v1.0“开发板原理图配置控制LED的GPIO口。
如图3-6-1所示,RGB LED的三个GPIO口分别为: IO3、IO4、IO5,需要将这三个口配置为输出模式。
如图3-6-2所示,二个独立LED的控制口为:IO18、IO19,同样也需要将这二个端口配置为输出方式。
第7步,修改“Kconfig.projbuild“文件中的配置项目。
如图3-7-1所示,将原来的跟WiFi配置有关的菜单选项改为一个独立的子菜单选项。
如图3-7-2所示,增加一个跟RGB LED有关的配置子菜单。
如图3-7-3所示,增加一个二个独立LED有关的配置子菜单。
第8步,编译软件工程。
如图3-8-1所示,点击“Project->Build All”菜单编程软件工程。
如图3-8-2所示,软件工程编译完成后,会产生一个被称之为“sdkconfig”的文件,双击此文件可以查看由“Kconfig.projbuild”文件产生的配置选项。
第9步,用Eclipse中的插件查看“sdkconfig”中的配置选项。
如图3-9-1所示,可见由“Kconfig.projbuild”文件创建的配置选项。
如图3-9-2所示,是跟RGB LED关联的配置选项。
如图3-9-3所示,是跟二个独立LED有关的配置选项。
第10步,查询配置文件对软件工程所起的关键作用。
如图3-10-1所示,在build/config目录下的sdkconfig.h文件中可见到跟RGB LED和二颗独立LED端口的配置信息,这就是在后续的程序编写时可用到的变量。
第11步,编写测试程序。
(1)创建二个跟GPIO口操作有关的文件。
如图3-11-1所示,在main目录下添加二个文件:bsp_gpio.c、bsp_gpio.h。
(2)添加新创建的C语言文件到编译环境中。
如图3-11-2所示,打开”main->CMakeList.txt”文件,添加“bsp_gpio.c“文件到其中。
(3)声明操作GPIO的相关函数
如图3-11-3,打开“bsp_gpio.h”头文件,添加二个函数声明。
(4)添加c语言的头文件到bsp_gpio.c中。
如图3-11-4所示,打开“bsp_gpio.c”文件,添加头相关的头文件。
(5)添加函数“bsp_gpio_init”的程序代码。
如图3-11-5所示,添加了函数“bsp_gpio_init”的程序代码,在其中用到了那些在Kconfig.probuild配置文件中进行配置过的变量,该函数的主要功能是对指定的GPIO口进行了初始化处理。
(6)添加跑马灯驱动的程序代码
如图3-11-6所示,编写了一个驱动5个led灯的跑马灯程序。
(7)在main.c函数中添加调用跑马灯程序的代码。
如图3-11-7-1所示,在“main.c”文件中添加“bsp_gpio.h”头文件。
如图3-11-7-2,在”main.c”添加函数的调用代码。
第12步,编译代码并下载到目标板运行。
(1)编译代码,按下“CTRL+B“快捷键进行代码编译。
如图3-12-1所示,编译结果正常。
(2)下载代码到目标板运行。
如图3-12-2所示,代码已经成功下载到目标板,并正常运行。