按键功能

一、实验目的

读取microROS控制板上的按键状态,打印ESP32S3芯片组空闲的内存容量。

 

二、硬件连接

如下图所示,按键为板载元器件,所以不需要外接其他设备,只需要把type-C数据线连接电脑与microROS控制板作为烧录固件功能即可。

image-20240110114106385

microROS控制板有两个boot按键和一个自定义功能按键,boot按键搭配reset复位按键可以让ESP32手动进入烧录模式,在开机完成后,boot按键也可以作为自定义功能按键来使用。

 

三、核心代码解析

程序源码对应的虚拟机路径为:

初始化KEY外设,其中KEY_GPIO_BOOT0对应硬件电路的GPIO0,KEY_GPIO_USER1对应硬件电路的GPIO42,GPIO模式设置为上拉输入模式。

由于boot按键Key0和自定义按键Key1的功能逻辑是一样的,这里以按键Key1为例来分析按键过程。

判断按键key1是否被按下,如果被按下返回KEY_STATE_PRESS,松开状态返回KEY_STATE_RELEASE。

非阻塞式读取按键key1的状态(软件防抖), 需每10毫秒调用一次,每次按键按下返回一次KEY_STATE_PRESS。

在app_main里调用Key_Init函数初始化按键,并在循环中(每10毫秒)读取按键Key0和按键Key1的状态,当按下按键时打印按键按下提示,并打印当前空闲的内存容量。

 

四、编译下载烧录固件

使用Type-C数据线连接虚拟机/电脑与microROS控制板,如果系统弹窗选择连接到虚拟机上。

激活ESP-IDF开发环境,注意每次打开新终端都需要先激活ESP-IDF开发环境才可以编译固件。

进入项目目录

编译、烧录、打开串口模拟器

如果需要退出串口模拟器,请按Ctrl+]。

 

五、实验效果

串口模拟器打印"hello yahboom"欢迎词,当我们按下boot按键Key0时,串口模拟器会打印“KEY 0 PRESS”并且显示当前内部空闲内存容量。当我们按下自定义按键Key1时,串口模拟器会打印“KEY 1 PRESS”并且显示当前空闲内存容量。

image-20240110122213053