ESP32 - GPIO中断触发与事件回调
最近为项目增加了GPIO外部触发中断功能,原理是为GPIO32注册了上升沿触发事件,事件触发后,会向RTOS队列写入数据。在RTOS事件中检测到该队列中有新加入的事件,就读出,并执行相应代码。
#define GPIO_INPUT_IO_WAKEUP 32
#define GPIO_INPUT_PIN_SEL (1ULL<<GPIO_INPUT_IO_WAKEUP)
#define ESP_INTR_FLAG_DEFAULT 0 static void IRAM_ATTR gpio_isr_handler(void* arg)
{
uint32_t gpio_num = (uint32_t) arg;
xQueueSendFromISR(gpio_evt_queue, &gpio_num, NULL);
} static void gpio_task_example(void* arg)
{
uint32_t io_num;
for(;;) {
if(xQueueReceive(gpio_evt_queue, &io_num, portMAX_DELAY))
{
printf("GPIO[%d] intr, val: %d\n", io_num, gpio_get_level(io_num));
}
}
} void app_main()
{
gpio_config_t io_conf;
io_conf.intr_type = GPIO_PIN_INTR_POSEDGE;//interrupt of rising edge
io_conf.pin_bit_mask = GPIO_INPUT_PIN_SEL;//bit mask of the pins, use GPIO32 here
io_conf.mode = GPIO_MODE_INPUT;//set as input mode
io_conf.pull_up_en = ;//enable pull-up mode
gpio_config(&io_conf); //install gpio isr service
gpio_install_isr_service(ESP_INTR_FLAG_DEFAULT);
//hook isr handler for specific gpio pin
gpio_isr_handler_add(GPIO_INPUT_IO_WAKEUP, gpio_isr_handler, (void*) GPIO_INPUT_IO_WAKEUP); xTaskCreate(gpio_task_example, "gpio_task_example", , NULL, , NULL);
while()
{
}
}
ESP32 - GPIO中断触发与事件回调的更多相关文章
- 6. 添加messager.alert()确定按钮的回调函数,即点完确定按钮后触发的事件
添加messager.alert()确定按钮的回调函数,即点完确定按钮后触发的事件: $.messager.alert('提示信息', "请联系管理员处理!", 'info', f ...
- TI-RTOS 之 GPIO中断(按键)
TI-RTOS 之 GPIO中断(按键) 前面已经用过LED, 定时器,这次来了解GPIO的中断是怎么用的,从CC1310+TI-RTOS的例程可以直接找到相应的例子程序,它的关键是在于要使能中断,也 ...
- 在xilinxFPGA上使用microblaze及自写GPIO中断
很久很久没有更新过博客了,今天来扒一扒FPGA上CPU软核的使用. 主要完成的功能:使用的开发板是nexys 4 DDR,板上有16个switch以及16个LED,需要完成microblaze对led ...
- Red5 项目的流事件回调流程和注意事项
回调流程 参考:Red5的一般客户端连接各个事件的触发顺序,经验证实际过程如下: 程序开始(在RED5启动的时候会自动去启动APP,从而触发以上事件) Start:MyChatRoomappStart ...
- OSG事件回调
OSG中的节点主要使用回调(CallBack)来完成用户临时.需要每帧执行的工作.根据回调功能被调用的时机划分为更新回调(Update CallBack)和人机交互时间回调(Event CallBac ...
- STM32中断触发
使用PB1作为外部中断触发,按一次按键灯处于亮状态,在按一次灯灭. 1.先配置GPIO端口.复用管脚外设时钟使能GPIO_Config(); void GPIO_Config(void) { GPIO ...
- LPC1788的外部中断和GPIO中断
首先是gpio中断,这一点和1768不同,1768使用的中断时和eint3共用中断通道,到了1788,专门为gpio开辟了中断 #ifndef __JOYPAD_H_ #define __JOYPAD ...
- LPC1768外部中断与GPIO中断
LPC1768的外部中断严格来说只有四个,分别是EINT0,EINT1,EINT2,EINT3,技术手册上有如下说明 控制这四个外部中断靠以下寄存器 这三个寄存器的0 1 2 3位分别代表中断的0 1 ...
- js autocomplete输入延迟触发执行事件
需求:延迟查询,autocomplete延迟触发执行事件.当有下一个事件开始时,本次事件中断.目的是为了防止调用服务器过于频繁. var timeout = 0;//延时处理 $("#cus ...
随机推荐
- SOA面向服务体系架构
SOA概念 1.什么是SOA 面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型. 它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的 ...
- np.vstack()和np.hstack()
本文链接:https://blog.csdn.net/m0_37393514/article/details/79538748在这里我们介绍两个拼接数组的方法: np.vstack():在竖直方向上堆 ...
- 更换python版本后出现 No module named "apt_pkg"
本文链接:https://blog.csdn.net/jaket5219999/article/details/78464310 $ sudo apt-get remove --purge pytho ...
- 5+app uni-app flutter
5+app uni-app flutter三者区别是什么? - 知乎 https://www.zhihu.com/question/295107584/answer/525442299 崔红保 DCl ...
- vs2017发布后宕机,没有响应解决方法
找到项目下:Properties\PublishProfiles 删除:FolderProfile.pubxml.user
- linux下终端字体彩色显示
linux下python彩色显示 跨平台彩色显示库https://pypi.python.org/pypi/colorama jlive@MacBook-Pro:py_demo $pytho ...
- naxsi-waf-with-ui :dockerfile
scollazo/naxsi-waf-with-ui Dockerfile - Docker Hubhttps://hub.docker.com/r/scollazo/naxsi-waf-with-u ...
- Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas
Arthas 用户文档 — Arthas 3.1.0 文档https://alibaba.github.io/arthas/ alibaba/arthas: Alibaba Java Diagnost ...
- ztree checkbox父子联动
1. 对于ztree而言,如果需要设置或者取消ztree的父子联动,只要在setting里面设置chkboxType的参数即可: 其中Y表示被checkbox被勾选时的联动情况,N表示取消勾选时的联动 ...
- Python之Pandas绘图,设置显示中文问题
# -*- coding: utf-8 -*- # author:baoshan import pandas as pd import matplotlib.pyplot as plt plt.rcP ...