esp_log_level_set
时间: 2023-07-06 15:04:35 浏览: 58
`esp_log_level_set`函数是ESP-IDF日志系统中的一个函数,用于设置日志系统的全局日志级别。它的原型定义如下:
```c
void esp_log_level_set(const char* tag, esp_log_level_t level);
```
其中,`tag`参数是一个字符串类型,表示要设置日志级别的模块或组件的名称;`level`参数是一个枚举类型`esp_log_level_t`,用于设置日志级别,包括:
- `ESP_LOG_NONE`:不打印任何日志;
- `ESP_LOG_ERROR`:只打印错误日志;
- `ESP_LOG_WARN`:打印警告日志及以上级别的日志;
- `ESP_LOG_INFO`:打印信息日志及以上级别的日志;
- `ESP_LOG_DEBUG`:打印调试日志及以上级别的日志;
- `ESP_LOG_VERBOSE`:打印所有日志。
如果`tag`参数为`NULL`,则设置全局日志级别;否则,只设置指定模块或组件的日志级别。例如,下面的代码将全局日志级别设置为`ESP_LOG_DEBUG`:
```c
esp_log_level_set(NULL, ESP_LOG_DEBUG);
```
如果需要单独设置某个模块的日志级别,可以如下进行:
```c
esp_log_level_set("my_module", ESP_LOG_WARN);
```
这样就将`my_module`模块的日志级别设置为`ESP_LOG_WARN`,只有警告日志及以上级别的日志会被打印出来。
相关问题
ESP_LOGI怎么显示时间
ESP_LOGI可以通过在日志消息中添加时间戳来显示时间。可以使用FreeRTOS提供的vTaskDelayUntil函数来实现定时器。下面是一个示例代码:
```
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_timer.h"
static const char *TAG = "example";
void app_main(void)
{
esp_log_level_set(TAG, ESP_LOG_INFO);
while (1) {
uint64_t now = esp_timer_get_time();
uint32_t seconds = (uint32_t)(now / 1000000);
uint32_t milliseconds = (uint32_t)(now / 1000) % 1000;
ESP_LOGI(TAG, "[%02d:%02d:%02d.%03d] Hello, world!", seconds / 3600, (seconds / 60) % 60, seconds % 60, milliseconds);
vTaskDelayUntil(&(TickType_t){0}, 1000 / portTICK_PERIOD_MS);
}
}
```
在这个示例代码中,我们使用esp_timer_get_time函数获取当前的时间戳,然后将其转换为秒和毫秒的格式。然后我们使用ESP_LOGI来输出日志消息,并在消息中包含时间戳。最后,我们使用vTaskDelayUntil函数来延迟1秒钟,以便每秒钟输出一次日志消息。
写一个esp32 AT 指令接收程序
以下是一个简单的ESP32 AT指令接收程序示例:
```c
#include "esp_log.h"
#include "esp_wifi.h"
#include "esp_event_loop.h"
#include "nvs_flash.h"
#include "esp_at.h"
#include "esp_at_wifi.h"
static const char* TAG = "esp32_at";
static void at_task(void *pvParameters)
{
esp_log_level_set(TAG, ESP_LOG_INFO);
// 初始化AT指令库
esp_at_device_ops_struct esp_at_device_ops = {
.read_data = esp_at_port_read_data,
.write_data = esp_at_port_write_data,
.get_data_length = esp_at_port_get_data_length,
.wait_write_complete = esp_at_port_wait_write_complete,
.get_uart_interrupt_flag = esp_at_port_get_uart_interrupt_flag,
.clear_uart_interrupt_flag = esp_at_port_clear_uart_interrupt_flag,
};
esp_at_device_ops_regist(&esp_at_device_ops);
// 初始化WiFi AT指令库
esp_at_wifi_station_setup(NULL);
// 开始AT指令任务
esp_at_start();
vTaskDelete(NULL);
}
void app_main()
{
// 初始化NVS
esp_err_t ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
ESP_ERROR_CHECK(nvs_flash_erase());
ret = nvs_flash_init();
}
ESP_ERROR_CHECK(ret);
// 创建AT指令任务
xTaskCreate(at_task, "at_task", 4096, NULL, 1, NULL);
}
```
这个程序使用了ESP-IDF提供的AT指令库和WiFi AT指令库,通过串口接收和处理AT指令。在这个例子中,我们使用了ESP32的默认串口1进行AT指令的接收和处理。你可以通过修改`esp_at_port.h`文件中的宏定义来更改默认串口号和波特率等配置信息。