细说基于IDF-IDE的ESP32 入门例程blink工程
最近不忙,就在某宝上花重金(几十大洋)入了一片esp32-S3开发板来把玩一下。写个流水帐作个记录。
一、安装IDE
先去官网的编程入门指南过一遍
地址:https://docs.espressif.com/projects/esp-idf/zh_CN/release-v5.0/esp32/get-started/index.html
然后到去官网下载安装包,下载地址:https://dl.espressif.cn/dl/esp-idf/?idf=4.4
我选第了二个。安装就是一路next。
二、新建工程。
1、在目标盘上新建一个空白文件夹用于存放自己建立的工程。
2、新建工程:
然后起个工程名(随便自己喜欢就行)
点next后
这样,blink模板工程就建立好了。
注意的点就是:工程路径中不能出现空格,中文路径未测试。
三、下面说说工程代码。
简单的参考了这位博主的文章:https://blog.csdn.net/beidideshu/article/details/127208168
下面具体说说blink这个工程实现的功能:
这个工程有两种模式:
1、CONFIG_BLINK_LED_RMT 模式
2、CONFIG_BLINK_LED_GPIO 模式
通过跟踪,可以发现 CONFIG_BLINK_LED_RMT 模式下,是用于驱动WS2812这种自带驱动的三色LED,此种方式通常是发送一串规定宽度的脉冲给WS2812从而点亮该LED。而CONFIG_BLINK_LED_GPIO 模式则是我们常见的普通GPIO电平驱动普通LED的方式。
3、在普通GPIO模式下,可以通过修改portmacro.h下边的portTICK_PERIOD_MS 宏定义来修改LED的脉宽时间。
vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS)这个函数延时的基本单位猜测是10ms。这里CONFIG_BLINK_PERIOD在sdkconfig.h里定义为1000, 跟踪portTICK_PERIOD_MS定义为
#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
再跟踪 configTICK_RATE_HZ
#define configTICK_RATE_HZ CONFIG_FREERTOS_HZ
而 CONFIG_FREERTOS_HZ在sdkconfig.h里定义为100
#define CONFIG_FREERTOS_HZ 100
void app_main(void)
{
/* Configure the peripheral according to the LED type */
configure_led();
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);
}
}
#define portCRITICAL_NESTING_IN_TCB 0
#define portSTACK_GROWTH ( -1 )
#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
//#define portTICK_PERIOD_MS ( ( TickType_t ) 5000 / configTICK_RATE_HZ )
#define portBYTE_ALIGNMENT 4
#define portNOP() XT_NOP()
当需要修改配置时,需要点击左侧工程窗口里的sdkconfig组件,在组件里进入配置并保存,然后关闭配置窗口。再回到main文件,fresh更新一下后保存,重新编译再下载。如下图:
再重新烧录进模组,功能就实现了。