首先我们要配置模块的各项参数。参考正点原子的模块使用资料,结合本身项目需求,笔者选择将模块设置为AP模式,使用AP模式下的透传功能实现大量数据的透明传输。配置过程如下:
我们需要按上述流程完成模块模式的配置。那么,我们需要完成如下几件事请:
发送指令比较简单,使用HAL库的串口发送函数即可:
HAL_UART_Transmit(&huart3, (uint8_t *)AT_RESTORE, sizeof(AT_RESTORE), 0xFFFF)
其中,AT_RESTORE表示AT指令中的“重启”指令。该指令发送完成后,向串口发送检查指令“AT\r\n”。经笔者测试,模块会对检查指令返回字符串“AT\r\n\r\nOK\r\n”(在CubeMX工程中,“char”类型被定义为“uint8_t”类型)。同样,其他指令返回内容的数据类型也为字符串。所以,我们需要读取到串口3的返回值并识别是否是重启成功的返回值。声明uint8_t类型:
uint8_t AT[] = "AT\r\n";//检查指令
uint8_t ATRE[] = "AT\r\n\r\nOK\r\n";//检查指令的正确返回值
其中“AT”和“ATRE”均为字符串类型,AT是MCU向串口3(也就是模块)发送的检查指令,而ATRE为该指令的正确返回值。如果返回值不是ATRE的内容,则需要重新发送AT指令。
检查返回值的代码如下:
int checkResponse(uint8_t* response){
for(int i = 0;i < ATResRecCount;i ++){
if(ATCmdRxBuffer[i] != response[i]){
return 0;
}
}
return 1;
}
在上面的函数中,输入参数是正确的返回值。ATCmdRxBuffer中是串口接收到的实际的返回值。在这个函数中,按照顺序依次将实际的返回值和正确的返回值比较,如果实际返回值与正确返回值不一致,则函数返回整型0,否则返回1。我们可以根据返回值来判断模块是否返回了正确的返回值,进而决定是否进行下一步。