首页 > 其他分享 >esp32-idf开发记录(二)

esp32-idf开发记录(二)

时间:2024-01-13 14:23:26浏览次数:24  
标签:LED 记录 esp32 NUM IO idf gpio include void

上一篇文章配置了基本环境,下面开始记录一些基本的外设驱动

1、GPIO使用

GPIO基本使用

#include "led_driver.h"

void led_init(gpio_num_t gpio_num)
{
    gpio_config_t cfg = {
        .pin_bit_mask = (1ull << gpio_num),
        .mode = GPIO_MODE_OUTPUT,
        .pull_up_en = 0,
        .pull_down_en = 1,
        .intr_type = 0,
    };

    gpio_config(&cfg);
}

.h文件使用如下所示:

#ifndef _LED_DRIVER__H_
#define _LED_DRIVER__H_

#include "driver/gpio.h"

void led_init(gpio_num_t gpio_num);

#endif // !_BASIC__H_

详细的使用可见下面这个图片
image

设置io状态变化
image

2、freertos框架

加入下面的头文件
image

代码示例如下

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/timers.h"
#include "basic.h"
#include "led_driver.h"

#define LED_IO_NUM GPIO_NUM_2

TaskHandle_t LED_Handle; /*创建任务句柄*/
TimerHandle_t Timer0_Handle;

void led_task(void *param)
{
    gpio_set_direction(LED_IO_NUM, GPIO_MODE_DEF_OUTPUT);

    while (1)
    {
        // gpio_set_level(LED_IO_NUM, 1);
        // vTaskDelay(500 / portTICK_PERIOD_MS);
        // gpio_set_level(LED_IO_NUM, 0);
        // vTaskDelay(500 / portTICK_PERIOD_MS);

        printf("running \r\n");
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}

void Timer0_callback(TimerHandle_t time)
{
    static bool flag = 0;
    if (flag == 0)
    {
        flag = 1;
        gpio_set_level(LED_IO_NUM, 1);
    }
    else
    {
        flag = 0;
        gpio_set_level(LED_IO_NUM, 0);
    }
    xTimerReset(Timer0_Handle, portMAX_DELAY);
}

void app_main(void)
{
    xTaskCreate(led_task,
                "led_task",
                1024 * 2,
                NULL,
                1,
                &LED_Handle);

    Timer0_Handle = xTimerCreate("timer0", (1000 / portTICK_PERIOD_MS), pdFAIL, NULL, Timer0_callback);
    xTimerStart(Timer0_Handle, 0);
    // while (1)
    // {
    //     gpio_set_level(LED_IO_NUM, 1);
    //     vTaskDelay(500/portTICK_PERIOD_MS);
    //     gpio_set_level(LED_IO_NUM, 0);
    //     vTaskDelay(500/portTICK_PERIOD_MS);
    // }
}

标签:LED,记录,esp32,NUM,IO,idf,gpio,include,void
From: https://www.cnblogs.com/lx2035/p/17962310

相关文章

  • esp32-idf开发记录(一)
    esp32最近比较火,也整了几块来玩一下,这里记录一下开发过程,现在用esp32用的比较多的是arduino的框架,这里用一下idf的框架,主要参考下面这个视频做的,感谢这位uphttps://www.bilibili.com/video/BV1kp4y1o7yx/?spm_id_from=333.999.0.0&vd_source=f5fd730321bc0e9ca497d98869046942安......
  • Iot学习笔记记录
    前言2024.1.13沙青图书馆甚至一开始打成了2023年。各位新年快乐。有时间会写下2023的年度总结。不过在此要提前开一个博客,记录一下接下来学习Iot安全的记录了。实在是再不学就要被学弟学妹追上了啊!此时此刻我却还要复习公钥和马原还有python,啊!感叹。想从黑自己的小米手环开始,......
  • darknet-yolov4训练自己的模型记录
    最近又整了一块jetsonnano的板子,就拿过来正好用一下,这个跑yolo还是很有用的,这里也记录一下过程。1、jetsonnano变化之前也玩过jetsonnano,但是最近却发现这个nano和之前的不一样了,是这样的就是原来都是sd卡烧录,但是这个是emmc了最大的区别就是原来使用那个烧录软件给sd卡......
  • 免费APP分发,支持应用合并、内测分发、扫码下载,下载量安装量统计,版本记录和应用在线封
    免费APP内测分发托管平台,支持应用合并、内测分发、扫码下载,下载量安装量统计,版本记录和应用在线封装打包app应用分发?应用分发也叫APP分发,其主要功能是方便APP的快速安装测试和推广那么分发App选择什么平台最好呢?这个主要是看App处于什么阶段。看看是处于应用测试阶段还是处于测......
  • 重置密码问题记录
    昨天晚上,我写了重置密码的前端,测试的时候报错今天上午,我继续试图解决这个问题,我仔细检查了一遍,前端没有问题可以正常接收输入的数据并且提交但是后端接收到的数据为空,后端接口也没有问题但后端收到的数据为空随后我又用postman测试了一下,把字段名改了一下发现了同样的错......
  • Seafile网盘安装记录
    系统:Ubuntu22.04.1注:为安装后的回忆记录,非安装时纪录,可能会有差错1安装dockersudoapt-getupdate|sudoapt-getinstalldocker-compose-y2设置docker-compose.yml services:db:image:mariadb:10.11container_name:seafile-mysqlenvironment:......
  • 2024.1 做题记录
    P2423[HEOI2012]朋友圈考虑\(a\oplusb\bmod2=1\)的限制实际上转化为不同左侧点最多选择两个,因为奇偶性需要不同。暴力枚举左侧的点集,考虑B侧的点,首先需要跟左侧点集任意有边,之后内部还需要是完全图。B侧选定点的最大团这个东西是不好做的,但是我们可以借助边的性质......
  • openwrt编译记录
    最近在做openwrt的开发,因此这里记录一下过程:这里我用的编译环境是wsl2,虚拟机时ubuntu20.04,因为wsl可以更充分的使用电脑性能,这样编译的快点,实测我编译rk3568的openwrt固件大概就花了三个小时的样子。下面记录下步骤:1、配置上网环境这个步骤是必须的,不然会极大概率失败,我之前失......
  • Spring学习记录之GoF之代理模式
    Spring学习记录之GoF之代理模式前言这篇文章是我第二次学习b站老杜的spring相关课程所进行的学习记录,算是对课程内容及笔记的二次整理,以自己的理解方式进行二次记录,其中理解可能存在错误,欢迎且接受各位大佬们的批评指正;关于本笔记,只是我对于相关知识遗忘时快速查阅了解使用,至......
  • MySQL记录锁、间隙锁、临键锁(Next-Key Locks)加锁过程
    innodb一定存在聚簇索引,默认以主键作为聚簇索引有几个索引,就有几棵B+树(不考虑hash索引的情形)聚簇索引的叶子节点为磁盘上的真实数据。非聚簇索引的叶子节点还是索引(id主键值),指向聚簇索引B+树。锁类型:共享锁(S锁):假设事务T1对数据A加上共享锁,那么事务T2可以读数据A,不能修......