通过freertos使用espidf写一个esp32的按键中断开灯程序
时间: 2023-05-13 17:05:37 浏览: 140
可以参考以下代码实现:
```c
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#define BUTTON_PIN GPIO_NUM_0
#define LED_PIN GPIO_NUM_2
void button_isr_handler(void* arg)
{
gpio_set_level(LED_PIN, 0);
}
void app_main()
{
gpio_pad_select_gpio(BUTTON_PIN);
gpio_pad_select_gpio(LED_PIN);
gpio_set_direction(BUTTON_PIN, GPIO_MODE_INPUT);
gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);
gpio_set_intr_type(BUTTON_PIN, GPIO_INTR_NEGEDGE);
gpio_install_isr_service(0);
gpio_isr_handler_add(BUTTON_PIN, button_isr_handler, NULL);
while (1) {
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(LED_PIN, 1);
}
}
```
这个程序使用了 FreeRTOS 和 ESP-IDF,实现了一个按键中断开灯的功能。当按键被按下时,会触发中断处理函数 button_isr_handler,将 LED 灯关闭。当按键松开后,LED 灯会重新点亮。
阅读全文