1 前言
尝试使用按键控制led灯亮灭。
2 硬件
led key 按键0
3 代码
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "driver/gpio.h"
#define GPIO_LED4 38
#define GPIO_LED5 39
#define GPIO_KEY1 0
void init_key(void)
{
gpio_pad_select_gpio(GPIO_KEY1);
gpio_set_direction(GPIO_KEY1,GPIO_MODE_INPUT);
}
int get_key_value(void)
{
int a = gpio_get_level(GPIO_KEY1);
printf("key1 gpio07 value:%d\n",a);
return a;
}
void init_led(void)
{
gpio_pad_select_gpio(GPIO_LED4);
gpio_set_direction(GPIO_LED4,GPIO_MODE_OUTPUT);
gpio_pad_select_gpio(GPIO_LED5);
gpio_set_direction(GPIO_LED5,GPIO_MODE_OUTPUT);
gpio_set_level(GPIO_LED4, 0);
gpio_set_level(GPIO_LED5, 0);
}
void hello_world()
{
printf("Hello world!\n");
esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",
CONFIG_IDF_TARGET,
chip_info.cores,
(chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
(chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");
printf("silicon revision %d, ", chip_info.revision);
printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
(chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");
printf("Minimum free heap size: %d bytes\n", esp_get_minimum_free_heap_size());
for (int i = 10; i >= 0; i--) {
printf("Restarting in %d seconds...\n", i);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
printf("Restarting now.\n");
fflush(stdout);
esp_restart();
}
void test_led()
{
printf("Turning off the LED\n");
gpio_set_level(GPIO_LED4, 0);
gpio_set_level(GPIO_LED5, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
printf("Turning on the LED\n");
gpio_set_level(GPIO_LED4, 1);
gpio_set_level(GPIO_LED5, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
void app_main(void)
{
init_led();
init_key();
int temp = 0;
int status_led =0;
while(1) {
temp = get_key_value();
if (temp == 0)
{
printf("temp is 0\n");
gpio_set_level(GPIO_LED4, status_led);
status_led = 1 - status_led;
}
else
{
printf("temp is 1\n");
}
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
4 结果
按下按键key0,白灯点亮,再次按下则白灯熄灭。
|