每次通过串口调试程序,需要通过命令来实现和配置参数,每次都需要单独写数据解析和判断,而且数据校验,这个是比较繁琐的事情,因此把几年前写的一个AT指令集支持程序改写到了单片机上。相比之前的版本,没有了动态加载和删除指令的功能,指令集列表通过const数据类型保存在flash空间中,节省单片机宝贵的RAM资源。
运行在stm32上面的程序示例:
头文件:
#ifndef __AT_MASTER_H_
#define __AT_MASTER_H_
typedef struct
{
unsigned short cmd_type; //参数类型 0:无类型,不需要检查数据是否合法 1:数字类型 2:字符串类型 3:浮点数据类型
int dat_1; //数字类型时:dat1为最小值,dat2为最大值,字符串时为字符串长度最小最大限制
int dat_2;
}cmd_parm_type;
typedef struct
{
char *cmd_name;
unsigned short parm_num;
const cmd_parm_type *parm_list;
int (*cmd_func)(int, char*[]);
}at_cmd_type;
//定义参数类型
#define AT_PARM_NOTYPE ((int)0)
#define AT_PARM_INT ((int)1)
#define AT_PARM_STR ((int)2)
#define AT_PARM_FLOAT ((int)3)
#define AT_CMD_MAX_PARM_CNT