【配置CMakeLists】
首先配置自定义组件的CMake文件:components->led->CMakeLists.txt
完整配置内容如下:
file(TO_CMAKE_PATH "$ENV{IDF_PATH}" IDF_PATH) # 将Windows下ESP-IDF的路径转化CMAKE路径
idf_component_register(SRCS "led.c"
INCLUDE_DIRS "include"
# 添加官方gpio组件
"${IDF_PATH}/components/driver/gpio/include"
)
【配置自定义组件头文件】
components->led->include->led.h
对于学过32单片机编程的,可按照自己的习惯编写,对于没有单片机开发经验的,再此提供一个简单的例子
#ifndef __LED_H
#define __LED_H
#include "driver/gpio.h"
void led_init(void);
void led_on(void);
void led_off(void);
#endif
【编写自定义组件驱动】
components->led->led.c和头文件类似,可根据习惯编写。
#include <stdio.h>
#include "led.h"
#define LED_PIN 2
void led_init(void)
{
gpio_config_t led_pin_config;
led_pin_config.pin_bit_mask = 1<<LED_PIN;
led_pin_config.mode = GPIO_MODE_OUTPUT;
led_pin_config.pull_up_en = GPIO_PULLUP_DISABLE;
led_pin_config.pull_down_en = GPIO_PULLDOWN_DISABLE;
gpio_config(&led_pin_config);
}
void led_on(void)
{
gpio_set_level(LED_PIN, 1);
}
void led_off(void)
{
gpio_set_level(LED_PIN, 0);
}
【编写主函数】main->main.c
,这里注意头文件的包含。
#include <stdio.h>
#include "led.h"
#include "FreeRTOS/freertos.h"
#include "FreeRTOS/task.h"
void app_main(void)
{
while(1)
{
led_init();
led_on();
vTaskDelay(50);
led_off();
vTaskDelay(50);
}
}
3、烧录前准备和烧录
- 运行idf.py menuconfig命令,配置sdkconfig,初学者可不用设置里边的具体内容,一切默认即可
- 设置端口,运行idf.py -p COM5命令,不一定是COM5,要根据自己的端口设置
- 对工程进行编译,运行idf.py build命令
- 烧录工程,运行idf.py flash命令
编译完成后会终端会提示烧录等相关信息
参考资料:
原文链接:https://blog.csdn.net/weixin_43803230/article/details/131511563