跳转至

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% */