資源簡(jiǎn)介
這是使用正點(diǎn)原子探索者開發(fā)板實(shí)現(xiàn)的LD3320語(yǔ)音識(shí)別程序,使用的是spi通信方式,模塊喚醒呼叫小李子,要插sd卡,用串口調(diào)試助手打印
代碼片段和文件信息
#include?“wifi.h“
///////////////////////////////////////////////////////////////////////////////////////////////////////////?
//用戶配置區(qū)
//連接端口號(hào):8000可自行修改為其他端口.
const?char*?portnum=“8000“; ?
//WIFI?STA模式設(shè)置要去連接的路由器無(wú)線參數(shù)請(qǐng)根據(jù)你自己的路由器設(shè)置自行修改.
const?char*?sta_ssid=“nubia“; //路由器SSID號(hào)
const?char*?sta_encryption=“wpawpa2_aes“; //wpa/wpa2?aes加密方式
const?char*?sta_password=“123456789“;? //連接密碼
//WIFI?AP模式模塊對(duì)外的無(wú)線參數(shù)可自行修改.
const?char*?ap_ssid=“ESP8266“; //對(duì)外SSID號(hào)
const?char*?ap_encryption=“wpawpa2_aes“; //wpa/wpa2?aes加密方式
const?char*?ap_password=“123456789“;? //連接密碼?
//usmart支持部分
//將收到的AT指令應(yīng)答數(shù)據(jù)返回給電腦串口
//mode:0不清零USART3_RX_STA;
//?????1清零USART3_RX_STA;
void?atk_8266_at_response(u8?mode)
{
if(USART3_RX_STA&0X8000) //接收到一次數(shù)據(jù)了
{?
USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//添加結(jié)束符
printf(“%s“USART3_RX_BUF); //發(fā)送到串口
if(mode)USART3_RX_STA=0;
}?
}
//ESP8266發(fā)送命令后檢測(cè)接收到的應(yīng)答
//str:期待的應(yīng)答結(jié)果
//返回值:0沒有得到期待的應(yīng)答結(jié)果
//????其他期待應(yīng)答結(jié)果的位置(str的位置)
u8*?ESP8266_check_cmd(u8?*str)
{
char?*strx=0;
if(USART3_RX_STA&0X8000) //接收到一次數(shù)據(jù)了
{?
USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//添加結(jié)束符
strx=strstr((const?char*)USART3_RX_BUF(const?char*)str);
}
return?(u8*)strx;
}
//向ESP8266發(fā)送命令
//cmd:發(fā)送的命令字符串
//ack:期待的應(yīng)答結(jié)果如果為空則表示不需要等待應(yīng)答
//waittime:等待時(shí)間(單位:10ms)
//返回值:0發(fā)送成功(得到了期待的應(yīng)答結(jié)果)
//???????1發(fā)送失敗
u8?ESP8266_send_cmd(u8?*cmdu8?*acku16?waittime)
{
u8?res=0;?
USART3_RX_STA=0;
u3_printf(“%s\r\n“cmd); //發(fā)送命令
if(ack&&waittime) //需要等待應(yīng)答
{
while(--waittime) //等待倒計(jì)時(shí)
{
delay_ms(10);
if(USART3_RX_STA&0X8000)//接收到期待的應(yīng)答結(jié)果
{
if(ESP8266_check_cmd(ack))
{
printf(“%s?ack:%s\r\n\r\n“cmdack);//串口1打印命令應(yīng)答
break;//得到有效數(shù)據(jù)?
}
USART3_RX_STA=0;
}?
}
if(waittime==0)res=1;?
}
return?res;
}?
//向ESP8266發(fā)送指定數(shù)據(jù)
//data:發(fā)送的數(shù)據(jù)(不需要添加回車了)
//ack:期待的應(yīng)答結(jié)果如果為空則表示不需要等待應(yīng)答
//waittime:等待時(shí)間(單位:10ms)
//返回值:0發(fā)送成功(得到了期待的應(yīng)答結(jié)果)luojian
u8?ESP8266_send_data(u8?*datau8?*acku16?waittime)
{
u8?res=0;?
USART3_RX_STA=0;
u3_printf(“%s“data); //發(fā)送命令
if(ack&&waittime) //需要等待應(yīng)答
{
while(--waittime) //等待倒計(jì)時(shí)
{
delay_ms(10);
if(USART3_RX_STA&0X8000)//接收到期待的應(yīng)答結(jié)果
{
if(ESP8266_check_cmd(ack))
{
printf(“send?%s\r\n“data);
break;//得到有效數(shù)據(jù)
}
USART3_RX_STA=0;
}?
}
if(waittime==0)res=1;?
}
return?res;
}
//ESP8266退出透?jìng)髂J?br/>//返回值:0退出成功;
//???????1退出失敗
u8?ESP8266_quit_trans(void)
{
while((USART3->SR&0X40)==0); //等待發(fā)送空
USART3->DR=‘+‘;??????
delay_ms(15); //大于串口組幀時(shí)間(10ms)
while((USART3->SR&0X40)==0); //等待發(fā)送空
USART3->DR=‘+‘;??????
delay_ms(15); //大于串口組幀時(shí)間(10ms)
while((USART3->SR&0X40)==0); //等待發(fā)送空
USART3->DR=‘+‘;??????
delay_ms(500); //等待500ms
return?ESP8266_send_cmd(“AT““OK“20);//退出透?jìng)髋袛?
}
///////////////////////////////////////////////////////////////////////////////////////////
//獲取ESP8266模塊的連接狀態(tài)
//返回值:0未連接;1連接成功.
u8?ESP8266_consta(void)
{
u8?*p;
u8?res;
if(ESP8266_quit_t
評(píng)論
共有 條評(píng)論