写一个esp32 AT 指令接收程序
时间: 2023-10-03 16:11:05 浏览: 78
基于AT命令的短信接收程序
4星 · 用户满意度95%
以下是一个简单的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`文件中的宏定义来更改默认串口号和波特率等配置信息。
阅读全文