EPS32 外部中断EXIT操作 KEY实验 - MilkeZhang 的网络笔记

实验现象:按下BOOT按键可控制LED状态翻转。开启管脚的外部中断操作相对简便。首先,需要将管脚配置为下降沿触发(GPIO_INTR_NEGEDGE)和输入模式(GPIO_MODE_INPUT)。完成配置后,需要调用gpio_install_isr_service函数来注册中断服务,并调用gpio_isr_handler_add函数来注册外部中断的回调函数。最后,调用gpio_intr_enabl

MilkeZhang

EPS32 外部中断EXIT操作 KEY实验

阅读:96  点赞:0   留言:0


实验现象:按下BOOT按键可控制LED状态翻转。


开启管脚的外部中断操作相对简便。首先,需要将管脚配置为下降沿触发

GPIO_INTR_NEGEDGE)和输入模式(GPIO_MODE_INPUT)。

完成配置后,需要调用gpio_install_isr_service函数来注册中断服务,并调用gpio_isr_handler_add函数来注册外部中断的回调函数。最后,调用gpio_intr_enable函数启用外部中断功能。

其中,exit_gpio_isr_handler回调函数负责实现LED灯状态的切换。

exit.h

#include "esp_err.h"
#include <inttypes.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "driver/gpio.h"
#include "esp_system.h" 
#include "esp_log.h"
#include "sdkconfig.h"
#include "led.h"


/* 引脚定义 */
#define BOOT_INT_GPIO_PIN   GPIO_NUM_0

/*IO操作*/
#define BOOT                gpio_get_level(BOOT_INT_GPIO_PIN)

/* 函数声明 */
void exit_init(void);   /* 外部中断初始化程序 */


exit.c


#include "exit.h"


/**
 * @brief       外部中断服务函数
 * @param       arg:中断引脚号
 * @note        IRAM_ATTR: 这里的IRAM_ATTR属性用于将中断处理函数存储在内部RAM中,目的在于减少延迟
 * @retval      无
 */
static void IRAM_ATTR exit_gpio_isr_handler(void *arg)
{
    uint32_t gpio_num = (uint32_t) arg;
    
    if (gpio_num == BOOT_INT_GPIO_PIN)
    {
        LED_TOGGLE();
    }
}

/**
 * @brief       外部中断初始化程序
 * @param       无
 * @retval      无
 */
void exit_init(void)
{
    gpio_config_t gpio_init_struct;

    /* 配置BOOT引脚和外部中断 */
    gpio_init_struct.mode = GPIO_MODE_INPUT;                    /* 选择为输入模式 */
    gpio_init_struct.pull_up_en = GPIO_PULLUP_ENABLE;           /* 上拉使能 */
    gpio_init_struct.pull_down_en = GPIO_PULLDOWN_DISABLE;      /* 下拉失能 */
    gpio_init_struct.intr_type = GPIO_INTR_NEGEDGE;             /* 下降沿触发 */
    gpio_init_struct.pin_bit_mask = 1ull << BOOT_INT_GPIO_PIN;  /* 配置BOOT按键引脚 */
    gpio_config(&gpio_init_struct);                             /* 配置使能 */
    
    /* 注册中断服务 */
    gpio_install_isr_service(0);
    
    /* 设置GPIO的中断回调函数 */
    gpio_isr_handler_add(BOOT_INT_GPIO_PIN, exit_gpio_isr_handler, (void*) BOOT_INT_GPIO_PIN);
}

main.c


#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "nvs_flash.h"
#include "esp_log.h"
#include "led.h"
#include "exit.h"


/**
 * @brief       程序入口
 * @param       无
 * @retval      无
 */
void app_main(void)
{
    esp_err_t ret;
    
    ret = nvs_flash_init(); /* 初始化NVS */

    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
    {
        ESP_ERROR_CHECK(nvs_flash_erase());
        ret = nvs_flash_init();
    }
    
    led_init();             /* 初始化LED */
    exit_init();            /* 初始化按键 */
    
    while(1) 
    {
        vTaskDelay(10);
    }
}

编写于:2024/11/13 15:09:09
发布 IP 属地:广东省深圳市

版权声明

本站内容均来自网络转载或网友提供,如有侵权请及时联系我们删除!本站不承担任何争议和法律责任!


艾金森

每一个童年的梦想都值得用青春去捍卫!




用户地图 心情地图 日记地图 笔记地图 时间轴地图 投票地图 习题地图 24.8.5回到我的世界里:我不要再这么颓废了颈肩腰腿痛独特秘方绝招11月23日简赤jc 的日记 2024/06/25 12:53:37risk 的日记 2024/11/25 15:21:44为什么这种东西还存在于中国的书店啊2007年星洲日报讲解自杀。10-910-232024年的第一场秋雨Jun Peng Cui 的日记 2024/08/23 15:25:05简赤jc 的日记 2024/08/30 20:19:30我找到oc文了2024.10.25 我要我记得,记得今天一场满足的拥抱risk 的日记 2024/11/25 15:21:44渣男的婚外情故事2007年星洲日报讲解通宵读书。#空气一少,医生的手术刀就在你的身体乱乱开刀8月1日恢复中第二天咯24.4.11夜:麻木、我想成为更丰富的人oc相关Food2024-06-17 Web开发记录【心情新增配图功能】24.7.21栀子味蓝色小狗会害怕鱼头汤吗07/07/2024时代变了,课外读物变了没有啊?清浅 的日记 2024/12/08 11:16:17ZLL 的日记 2024/08/29 16:36:31看了一个非常好看的国耽美,戒断反应严重!!简赤jc 的日记 2024/06/22 21:45:33关于自知力思考22/11/20242024年4月15日戒烟的启示性时刻高考志愿填报讲解大学专业之医学类20集自助餐。。。8年后的。。。简赤jc 的日记 2024/06/25 19:26:19只是放淡了些许茶文化博览 中国茶韵24.9.3 “一家三口”的放学羁绊!回归!平淡家庭急救100招木瓜的故事1510.28复盘灵感堆积,回来再写24.11.17 写完作业好幸福。团聚好幸福。小猫要快快好起来呀…恐惧对我们的影响过大了安 的日记 2024/10/18 08:56:022007年的星洲日报是很有意义的。UL4200A检测报告GCC证书20240728如何更改Element UI的this.$confirm按钮样式心学随笔一视频清晰度分级规则:SD、HD、FHD、UHD常用网络端口html input 上传图片的方法视频编解码协议 【MPEG-4】【H.264】【H.265】【VP9】【AV1】【AVS】【VP8】【Datasheet】AX3071UA DC-DC电源系统架构设计师论文《论单元测试方法及应用》知识点铂鹿 的笔记 2024/06/10 11:48:09浅浅记录一下js 函数过多?满山的猴子我腚最红 的笔记 2024/10/23 20:59:16挨打也能成为一项超能力刮痧疗法彩色图谱软考架构-架构风格系统架构设计师论文《论信息系统的安全体系》EPS32 基础GPIO操作 LED实验赫兹伯格的卫生理论系统架构设计师论文《论中间件在SIM卡应用开发中的作用》引子文章练习420240722ESP32 【ESP_ERROR_CHECK】说明小说中让人突然下头的行为(01)高考志愿填报讲解大学专业之师范教育类EPS32 外部中断EXIT操作 KEY实验【Datasheet】FD6288T 三个独立的半桥栅极驱动集成电路芯片系统架构设计师论文《论信息系统架构的设计》现在才有闲情看得下书,但我却在迷茫。10.10系统架构设计师-22年-论文题目ZXF高考志愿填报全攻略54项【Datasheet】SCT2A10STER DC-DC电源芯片关于游戏——Part2HTML input type="number" 不显箭头英语老教授又想圈钱了老年人营养保健手册(专业版)不想学外语的思考瑞芯微RK3568对比RK3399性能解析Visual Studio和Visual Studio Code有什么区别系统架构设计师论文《论基于UML的需求分析》爱别太迟。高考志愿填报讲解大学专业之电子信息及计算机类视频编解码协议 MPEG-4 和 H.264之间的区别系统架构设计师论文《论面向服务架构设计及其应用》NoSQL 非关系型数据库书单成瘾丨240726 基层公务员读物C语言根据日期判断星期几(使用基姆拉尔森计算公式)