WiFi、蓝牙、4G等多种通信模块均需使用AT指令进行配置和通信。基于μCOSIII操作系统,写了个AT指令的代码,也可以简单修改后用于裸奔系统。简单介绍一下,完整代码下载链接为:
1、AT配置结构体
设计了一个结构体stcATConfig,可以对发送的每个指令分别进行配置。
typedef struct
{
uint16_t resp_time100ms;//发送后查询返回信息的延时,100ms为单位。可设为指令最大响应时间。
uint8_t try_delay1ms; //发送失败后再次发送时的延时,1ms为单位
uint8_t max_try_times; //最大重试次数
uint8_t max_reset_times; //最大重启次数
} stcATConfig;
2、AT指令注册函数
在发送AT指令之前,需要先注册AT指令的运行环境,包括如下4项。
void AT_RegisterHandler(SendMsgFunc_t func, char* recv_buf, OS_SEM* recv_sem, OS_MUTEX* buf_mutex)
{SendMsgCallback=func; //串口发送数据的函数pRecvAckSem = (OS_SEM*)recv_sem; //串口收到AT指令回令的信号量,可在串口接收空闲后发出pAckBufMux=(OS_MUTEX*)buf_mutex; //串口接收缓冲区互斥信号量atAckBuf = (char*)recv_buf; //串口接收缓冲区return;
}
3、发送AT指令函数和发送AT字符数组函数
二者的主要区别是:
(1)发送AT指令函数主要用于发送AT配置命令,发送的都是字符串,发送函数遇到"