esp32-c-简单应用笔记

1、资料

ESP32 开发环境 Espressif-IDE:
https://blog.csdn.net/chuner0425/article/details/123466848
https://blog.csdn.net/bin_zhang1/article/details/129993820?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-129993820-blog-129054762.235v40pc_relevant_default_base&spm=1001.2101.3001.4242.1&utm_relevant_index=3

开发板资料:https://wiki.luatos.com/chips/esp32c3/hardware.html

API资料:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32c3/api-reference/peripherals/gpio.html

头文件路径:components/esp_driver_gpio/include/driver/gpio.h

应用示例路径:GPIO 输出和输入中断示例:peripherals/gpio/generic_gpio。

程序调试的Log是可以在程序中选择:
esp_log_level_set( TAG, ESP_LOG_INFO );

ESP_LOG_NONE: 禁用所有日志输出
ESP_LOG_ERROR: 仅输出错误信息
ESP_LOG_WARN: 输出警告和错误信息
ESP_LOG_INFO: 输出信息、警告和错误信息
ESP_LOG_DEBUG: 输出调试、信息、警告和错误信息
ESP_LOG_VERBOSE: 输出所有日志信息

vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS);               //延时1s
时钟速率设为1000hz,时间片是1ms

及portTICK_PERIOD_MS=1000/configTICK_RATE_HZ=1ms
所以vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS);
等价于vTaskDelay(1000/1000=vTaskDelay(1=1s
————————————————

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "led_strip.h"
#include "sdkconfig.h"

static const char *TAG = "LED";

#define LED1_GPIO 12
#define LED2_GPIO 13

static uint8_t s_led_state = 0;
static led_strip_handle_t led_strip;

static void blink_led(void)
{
   
    /* Set the GPIO level according to the state (LOW or HIGH)*/
    gpio_set_level(LED1_GPIO, s_led_state);
    gpio_set_level(LED2_GPIO, s_led_state);
}

static void configure_led(void)
{
   
    /* Set the GPIO as a push/pull output */
    gpio_reset_pin(LED1_GPIO);
    gpio_set_direction(LED1_GPIO, GPIO_MODE_OUTPUT);

    gpio_reset_pin(LED2_GPIO);
    gpio_set_direction(LED2_GPIO, GPIO_MODE_OUTPUT);
}


void app_main(void)
{
   
    configure_led();
    esp_log_level_set(TAG, ESP_LOG_VERBOSE);
    while (1)
    {
   
        ESP_LOGI(TAG, "Turning the LED %s!", s_led_state == true ? "ON" : "OFF");
        blink_led();
        /* Toggle the LED state */
        s_led_state = !s_led_state;
        vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS);
    }
}

运行后打印的:
I (3927313) LED: Turning the LED ON!
I (3928313) LED: Turning the LED OFF!

2、创建线程的LED闪烁

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "led_strip.h"
#include "sdkconfig.h"

static const char *TAG = "LED";

#define LED1_GPIO 12
#define LED2_GPIO 13

static uint8_t s_led_state = 0;
static led_strip_handle_t led_strip;

static void blink_led(void)
{
   
    /* Set the GPIO level according to the state (LOW or HIGH)*/
    gpio_set_level(LED1_GPIO, s_led_state);
    gpio_set_level(LED2_GPIO, s_led_state);
}

static void configure_led(void)
{
   
    /* Set the GPIO as a push/pull output */
    gpio_reset_pin(LED1_GPIO);
    gpio_set_direction(LED1_GPIO, GPIO_MODE_OUTPUT);

    gpio_reset_pin(LED2_GPIO);
    gpio_set_direction(LED2_GPIO, GPIO_MODE_OUTPUT);
}

static void LED_task(void *pvParameters)
{
   
    while (1)
    {
   
        s_led_state = !s_led_state;
        blink_led();
        ESP_LOGI(TAG, "LED_task the LED %s!", s_led_state == true ? "ON" : "OFF");

        vTaskDelay(1000 / portTICK_PERIOD_MS); //1000ms
    }
}

void app_main(void)
{
   
    configure_led();
    esp_log_level_set(TAG, ESP_LOG_VERBOSE);
    xTaskCreate(&LED_task, "LED_task", 2048, NULL, 5, NULL); // 创建任务

    while (1)
    {
   
        vTaskDelay(5000 / portTICK_PERIOD_MS); //5000ms
    }
}

相关推荐

  1. esp32-c-简单应用笔记

    2024-01-18 07:04:05       46 阅读
  2. 单片机学习笔记——ESP32

    2024-01-18 07:04:05       29 阅读
  3. esp32c6 micropython固件首发

    2024-01-18 07:04:05       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 07:04:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 07:04:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 07:04:05       87 阅读
  4. Python语言-面向对象

    2024-01-18 07:04:05       96 阅读

热门阅读

  1. 消息队列之RabbitMQ工作模式

    2024-01-18 07:04:05       48 阅读
  2. Spring Boot整合Junit,@RunWith和@SpringBootTest的使用

    2024-01-18 07:04:05       50 阅读
  3. LUA 对象转excel

    2024-01-18 07:04:05       42 阅读
  4. Bitcoin的Covenants——合同化管理UTXO的花费方式

    2024-01-18 07:04:05       74 阅读
  5. 在 Centos 7.9 中,安装与配置 Docker 20.10.18

    2024-01-18 07:04:05       54 阅读
  6. flask不使用flask-login插件

    2024-01-18 07:04:05       58 阅读
  7. GO基础进阶篇 (十三)、泛型

    2024-01-18 07:04:05       52 阅读
  8. 服务器租用和托管有哪些注意事项?

    2024-01-18 07:04:05       51 阅读