LuatOS ESP32C3 > LED Blink封装(ESP-IDF自定义组件)

1.创建新的ESP-IDF组件

img1

如图所示,选择后会要求输入组件的名称,这里命名为 "blink" ,点击回车键即可创建。

img2

可以看到工程目录下新增了 "components" 目录,里面存放了刚刚创建的 "blink"。

components
        └── blink
            │
            ├── include
            │   └── blink.h
            ├── blink.c
            └── CMakeLists.txt

 

2.修改代码

main.c

#include <stdio.h>
#include "blink.h"

#define D4_PIN GPIO_NUM_12

void app_main(void)
{
    blink_init(D4_PIN);

    while (1) {
        blink(D4_PIN);
    }
}

blink.h

#ifndef BLINK_H
#define BLINK_H

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"

void blink_init(gpio_num_t gpio);
void blink(gpio_num_t gpio);

#endif

blink.c

#include <stdio.h>
#include "blink.h"

void blink_init(gpio_num_t gpio)
{
    gpio_reset_pin(gpio);
    gpio_set_direction(gpio, GPIO_MODE_OUTPUT);
}

void blink(gpio_num_t gpio)
{
    gpio_set_level(gpio, 1);
    vTaskDelay(pdMS_TO_TICKS(1000));
    gpio_set_level(gpio, 0);
    vTaskDelay(pdMS_TO_TICKS(1000));
}

 

修改 完成后点击编译,然后会出现错误信息

 然后打开 "components/blink/CMakeLists.txt"

CMakeLists.txt

idf_component_register(SRCS "blink.c"
                    INCLUDE_DIRS "include"
                    PRIV_REQUIRES "driver")

依赖

PRIV_REQUIRES:私有依赖

REQUIRES:公共依赖

blink中要用到gpio,而gpio是driver组件中的东西,所以这里要依赖于"driver"组件,又因为只想blink自己调用而不向上层暴露,所以使用PRIV_REQUIRES。

然后再编译便没有报错了 ,烧录后也可看到led闪烁。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值