#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h> #include "driver/gpio.h"
#include "driver/hw_timer.h" #include "FreeRTOS.h"
#include "freertos/event_groups.h"
#include "rom/ets_sys.h" #define PIN GPIO_NUM_5 /**
* @brief 定时器中断函数,检测事件组
*/
void timer_callback(void *arg){
EventBits_t bit = xEventGroupGetBitsFromISR((EventGroupHandle_t)arg);
xEventGroupClearBitsFromISR((EventGroupHandle_t)arg, bit);
static uint8_t num = 0;
//接收到声音传感器的响应
if(0x01 == bit){
//当前LED灭,重新开启,当前LED已经打开,刷新计时
if(0 == num){
num = 5;
gpio_set_level(2, 0);
}else{
num = 5;
}
} if(0 < num){
num--;
}else{
gpio_set_level(2, 1);
}
}
/**
* @brief 声音模块GPIO中断函数,下降沿触发,事件组置位
*/
void sound_isr(void *arg){
BaseType_t base;
xEventGroupSetBitsFromISR((EventGroupHandle_t)arg, 0x01, &base);
}
/**
* @brief 使用事件组和中断实现声控灯
* ESP8266 sound
* D1(GPIO5) out
* VCC VCC
* GND GND
*/
void app_main(void){
EventGroupHandle_t event = xEventGroupCreate();
gpio_config_t conf;
conf.pin_bit_mask = 1 << 2;
conf.mode = GPIO_MODE_OUTPUT;
conf.intr_type = GPIO_INTR_DISABLE;
gpio_config(&conf);
gpio_set_level(2, 1);//板载LED低电平亮 conf.pin_bit_mask = 1 << PIN;
conf.mode = GPIO_MODE_INPUT;
conf.intr_type = GPIO_INTR_NEGEDGE;
conf.pull_up_en = 1;
gpio_config(&conf);
gpio_install_isr_service(0);
gpio_isr_handler_add(PIN, sound_isr, event); hw_timer_init(timer_callback, event);
hw_timer_set_reload(true);
hw_timer_set_clkdiv(TIMER_CLKDIV_16);
hw_timer_set_intr_type(TIMER_EDGE_INT);
hw_timer_set_load_data((TIMER_BASE_CLK >> hw_timer_get_clkdiv()));//5000000
hw_timer_enable(true); while(1){
//也可以主任务实现控制逻辑
// xEventGroupWaitBits(event, 0x01, pdTRUE, pdFALSE, portMAX_DELAY);
// gpio_set_level(2, 0);
// for(uint16_t i = 0; i < 1000; i++){
// os_delay_us(1000);
// }
// gpio_set_level(2, 1);
os_delay_us(65534);
} }

基于 ESP8266_RTOS_SDK 实现声控灯的更多相关文章

  1. 基于AD5663的UV灯电压控制

    在开发臭氧发生器的时,我们使用UV灯来实现臭氧的产生.而UV灯的强度决定了臭氧产生的浓度,UV灯的光强则与其控制电压密切相关.所以我们要控制产生的臭氧的浓度就需要调节其控制电压.我们选择了AD5663 ...

  2. STM32学习笔记(二) 基于STM32-GPIO的流水灯实现

    学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...

  3. 实验一:基于STM32F1的流水灯实验(库函数)

    参考原子哥学习程序 条件:实验板STM32103ZET6:固件库STM32F10x_StdPeriph_Lib_V3.5.0:环境MDK5: 目的:了解STM32 的 IO 口如何作为输出使用 :以两 ...

  4. TPYBoard V102:能跑Python的stm32开发板

    近来micropython语言做硬件编程很火,随之而来的就开始带动着支持micropython语言编程的开发板也开始火的发烫,今天小编就来和大家介绍一款很经典的micropython开发板-TPYBo ...

  5. [MicroPython]TPYBoardv102超全DIY案例一览

    TPYBoardv102是一款比较成熟和经典的MicroPython开发板,不仅适用于学习实验还能应用于大型的工业级开发,是MicroPython入门和研发的不二之选.下面我们就扒开v102的“层层外 ...

  6. Scratch3.0设计的插件系统(上篇)

    我们每个人在内心深处都怀有一个梦想: 希望创造出一个鲜活的世界,一个宇宙.处在我们生活的中间.被训练为架构师的那些人,拥有这样的渴望: 在某一天,在某一个地方,因为某种原因,创造出了一个不可思议的.美 ...

  7. 跟着弦哥学人工智能2—HAND-CRAFTED RULES实现的人工智能及其缺陷

    隔壁有个妹纸喷我​,好高兴....给她回复了下 哎呀,没想到是个妹纸,其实我就随便那么一说,没合计妹纸还专门写个檄文声讨我,受宠若惊其实你的评论一看就比较专业,所以我就去你博客大概扫了一眼,发现个大问 ...

  8. ISE14.7使用教程(一个完整工程的建立)

    FPGA公司主要是两个Xilinx和Altera(现intel PSG),我们目前用的ISE是Xilinx的开发套件,现在ISE更新到14.7已经不更新了,换成了另一款开发套件Vivado,也是Xil ...

  9. TRIZ系列-创新原理-23-反馈原理

     反馈原理的详细表述例如以下:1)引入反馈:2)假设已经有反馈,那么改变它这个原理告诉我们应当从系统中尽量多收集反馈信息.并用这些信息来矫正系统的作用.非常easy看出,引入反馈是系统自己主动控制 ...

  10. 【转】ISE——完整工程的建立

    FPGA公司主要是两个Xilinx和Altera(现intel PSG),我们目前用的ISE是Xilinx的开发套件,现在ISE更新到14.7已经不更新了,换成了另一款开发套件Vivado,也是Xil ...

随机推荐

  1. 直播预告丨Hello HarmonyOS进阶系列课程重磅来袭,4月27日开播

    为了帮助初识HarmonyOS的开发者快速入门,我们曾推出Hello HarmonyOS系列一共5期课程(传送门:https://developer.huawei.com/consumer/cn/tr ...

  2. vscode 搭建Django开发环境

    1.创建一个空目录2.vscode打开目录3.终端运行命令创建虚拟环境: python -m venv .venv4.选择环境:ctrl+shift+p,选择解释器->选择新建的虚拟环境5.进入 ...

  3. ASP.NET 部署常见问题及解决方案

    ASP.NET 部署部署过程中常见问题及解决方案 Could not load file or assembly 'XXXXX' or one of its dependencies. Access ...

  4. mysql 重新整理——sql 执行语句的顺序[五]

    前言 盗图: 其实在复杂的语句中,需要我们逐步去分析,然后呢,我们了解一些优化器到底是如何帮我们优化的,就知道到底是mysql怎么执行代码. 我把以前的丢了,后续补全.

  5. Django框架——ORM执行SQL语句、神奇的双下划线、外键字段的创建、跨表查询、进阶操作

    ORM执行SQL语句 有时候ORM的操作效率可能偏低 我们是可以自己编写SQL的 方式一: models.User.objects.raw('select * from app01_user') 方式 ...

  6. 力扣209(java&python)-长度最小的子数组(中等)

    题目: 给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, ...

  7. Hexo博客框架—轻量、一令部署

    ​简介:Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页.Hexo支持Github Flavored M ...

  8. 阿里巴巴在开源压测工具 JMeter 上的实践和优化

    简介:Apache JMeter 是 Apach 旗下的开源压测工具,创建于 1999 年初,迄今已有超过 20 年历史.JMeter 功能丰富,社区(用户群体)庞大,是主流开源压测工具之一. 作者: ...

  9. IDA动态调试快捷键

    1. F2下断点2. F7进入函数,F8单步调试,F9跳到下一个断点,F2下断点,G调到函数地址3. N重名4. g跳到地址和函数名5. u取消把函数汇编变成机器码6. c就是把机器码变成汇编7. F ...

  10. MySQL—MySQL的存储引擎之InnoDB

    MySQL-MySQL的存储引擎之InnoDB 存储引擎及种类 存储引擎 说明 MyISAM 高速引擎,拥有较高的插入,查询速度,但不支持事务 InnoDB 5.5版本后MySQL的默认数据库存储引擎 ...