AT 指令框架
使用技术:AT 指令框架
学习目标
- 理解 WS63 AT 指令框架的架构——UART 接收 → 解析 → 分发到各模块 handler → 返回结果
- 掌握注册自定义 AT 指令的方法
- 掌握 AT 指令的调试用途——快速验证 WiFi/SLE/BLE 功能
基本概念
AT 框架架构
flowchart LR
UART[UART 中断接收] --> PARSER[AT 框架解析<br/>AT+CMD=param\r\n]
PARSER --> TABLE[查表匹配命令]
TABLE --> HANDLER[调用对应 handler]
HANDLER --> RESP[返回结果]
RESP --> UART_TX[串口输出 OK/ERROR]
预置 AT 指令集
| 分类 | 前缀 | 示例 |
|---|---|---|
| WiFi | AT+WIFI* |
AT+WIFI_CONNECT=ssid,psk |
| SLE | AT+SLE* |
AT+SLE_ANNOUNCE |
| BLE | AT+BLE* |
AT+BLE_ADV_START |
| 系统 | AT+* |
AT+INFO / AT+RST |
自定义 AT 指令
AT_RegisterCmd() 注册 → handler 中解析参数 → 调用业务逻辑 → 返回 OK/ERROR。
涉及 API
| API | 用途 |
|---|---|
AT_RegisterCmd(cmd_name, handler) |
注册自定义 AT 指令 |
AT_Response(format, ...) |
返回结果给发送方 |
Handler 签名:int handler(int argc, char *argv[]) |
自定义指令处理函数 |
案例说明
做什么
注册自定义 AT 指令 AT+MYCMD=<value> → 收到指令后解析 value → 控制 LED 亮度 → 返回 OK。
关键配置
| 参数 | 默认值 | 说明 |
|---|---|---|
| UART 波特率 | 115200 | AT 指令通道默认 |
| 指令超时 | 5s | AT 指令间的超时间隔 |
代码详解
#include "at.h"
/* 自定义 AT 指令 handler
格式:AT+MYCMD=<value> */
static int mycmd_handler(int argc, char *argv[])
{
if (argc < 2) {
AT_Response("ERROR: missing value\r\n");
return -1;
}
int value = atoi(argv[1]);
set_led_brightness(value); // 调用业务逻辑
AT_Response("OK\r\n");
return 0;
}
/* 注册指令 */
AT_RegisterCmd("AT+MYCMD", mycmd_handler);
/* 测试:
串口发送 → AT+MYCMD=80
串口收到 ← OK
LED 亮度变为 80% */