久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
LD3320語音識別控制LED STM32源代碼
[打印本頁]
作者:
1515709128
時間:
2019-1-2 16:02
標題:
LD3320語音識別控制LED STM32源代碼
ld3320 語音控制LED
1、如果您采用的不是keil4 編譯器 可以自行建立工程進行編譯,本工程建立的格式如下圖,客戶可以參考下圖添加所需要的C文件。
0.png
(8.65 KB, 下載次數: 33)
下載附件
2019-1-3 03:05 上傳
單片機源程序如下:
/*****************************************************
** 工程名稱:YIXIN 語音識別開發板程序
** CPU: STM32f103VET6
** 晶振:8MHZ
** 波特率:9600 bit/S
** 說明:本程序 具備語音識別、串口通信、開發板基本功能演示。
*********************************************************/
#include "includes.h"
/* Private function prototypes -----------------------------------------------*/
void RCC_Configuration(void);
//void NVIC_Configuration(void);
void USART_Configuration(void);
void PrintCom(USART_TypeDef* USARTx, uint8_t *Data);
extern void LD3320_main(void);
/***********************************************************
* 名 稱: 主函數
* 功 能: 程序入口
* 入口參數: 無
* 出口參數: 無
* 說 明: 無
* 調用方法: 無
**********************************************************/
int main(void)
{
/* System Clocks Configuration */
RCC_Configuration(); //外設時鐘配置
USART_Configuration();//USART 配置
LD3320_main(); //LD3320執行函數
while (1)
{
;
}
}
/***********************************************************
* 名 稱: void USART_Configuration(void)
* 功 能: 串口配置
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void USART_Configuration(void)
{
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
/* Configure USART1 */
USART_Init(USART1, &USART_InitStructure); //類似與GPIO口,配置完后初始化一次
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //使能接收 中斷
USART_ITConfig(USART1, USART_IT_TXE, ENABLE); //使能發送 中斷
USART_Cmd(USART1, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //USART1 TX
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出
GPIO_Init(GPIOA, &GPIO_InitStructure); //A端口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //USART1 RX
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //復用開漏輸入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); //A端口
}
/***********************************************************
* 名 稱:void PrintCom(USART_TypeDef* USARTx, uint8_t *Data)
* 功 能:串口數據打印
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void PrintCom(USART_TypeDef* USARTx, uint8_t *Data)
{
while(*Data)
{
USART_SendData(USARTx, *Data++); /*發送單個數據 */
while(USART_GetFlagStatus(USARTx, USART_FLAG_TC)==RESET);/* 檢查指定的USART標志位即RESET=1時發送完成*/
}
}
/***********************************************************
* 名 稱:void RCC_Configuration(void)
* 功 能:配置外設時鐘
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void RCC_Configuration(void)
{
SystemInit();
/* Enable USART1, GPIOA, GPIOx and AFIO clocks */
RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 |RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
RCC_APB2Periph_GPIOE, ENABLE); //開啟相關的AHP外設時鐘
/* Enable USART2 clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
}
/**
* @brief Configures the different GPIO ports.
* @param None
* @retval : None
*/
復制代碼
/*******************************************************
** 文件名稱:語音模塊底層驅動
** CPU: STM32f103RBT6
** 晶振:8MHZ
** 波特率:9600 bit/S
** 說明:本程序 具備語音識別、串口通信、開發板基本功能演示。
*********************************************************/
#include "includes.h"
uint8 nLD_Mode = LD_MODE_IDLE; // 用來記錄當前是在進行ASR識別還是在播放MP3
uint8 ucRegVal;
extern uint8 nAsrStatus;
/***********************************************************
* 名 稱:void LD_reset(void)
* 功 能:LD芯片硬件初始化
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LD_reset(void)
{
LD_RST_H();
LD3320_delay(100);
LD_RST_L();
LD3320_delay(100);
LD_RST_H();
LD3320_delay(100);
LD_CS_L();
LD3320_delay(100);
LD_CS_H();
LD3320_delay(100);
}
/***********************************************************
* 名 稱: void LD_Init_Common(void)
* 功 能: 初始化命令
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LD_Init_Common(void)
{
LD_ReadReg(0x06);
LD_WriteReg(0x17, 0x35);
LD3320_delay(5);
LD_ReadReg(0x06);
LD_WriteReg(0x89, 0x03);
LD3320_delay(5);
LD_WriteReg(0xCF, 0x43);
LD3320_delay(5);
LD_WriteReg(0xCB, 0x02);
/*PLL setting*/
LD_WriteReg(0x11, LD_PLL_11);
if (nLD_Mode == LD_MODE_MP3)
{
LD_WriteReg(0x1E, 0x00);
LD_WriteReg(0x19, LD_PLL_MP3_19);
LD_WriteReg(0x1B, LD_PLL_MP3_1B);
LD_WriteReg(0x1D, LD_PLL_MP3_1D);
}
else
{
LD_WriteReg(0x1E,0x00);
LD_WriteReg(0x19, LD_PLL_ASR_19);
LD_WriteReg(0x1B, LD_PLL_ASR_1B);
LD_WriteReg(0x1D, LD_PLL_ASR_1D);
}
LD3320_delay(5);
LD_WriteReg(0xCD, 0x04);
LD_WriteReg(0x17, 0x4c);
LD3320_delay(1);
LD_WriteReg(0xB9, 0x00);
LD_WriteReg(0xCF, 0x4F);
LD_WriteReg(0x6F, 0xFF);
}
/***********************************************************
* 名 稱:void LD_Init_ASR(void)
* 功 能:初始化ASR
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LD_Init_ASR(void)
{
nLD_Mode=LD_MODE_ASR_RUN;
LD_Init_Common();
LD_WriteReg(0xBD, 0x00);
LD_WriteReg(0x17, 0x48);
LD3320_delay( 5 );
LD_WriteReg(0x3C, 0x80);
LD_WriteReg(0x3E, 0x07);
LD_WriteReg(0x38, 0xff);
LD_WriteReg(0x3A, 0x07);
LD_WriteReg(0x40, 0);
LD_WriteReg(0x42, 8);
LD_WriteReg(0x44, 0);
LD_WriteReg(0x46, 8);
LD3320_delay( 1 );
}
/***********************************************************
* 名 稱:void ProcessInt0(void)
* 功 能:識別處理函數
* 入口參數:
* 出口參數:
* 說 明:可以利用查詢方式,或中斷方式進行調用
* 調用方法:
**********************************************************/
void ProcessInt0(void)
{
uint8 nAsrResCount=0;
ucRegVal = LD_ReadReg(0x2B);
// 語音識別產生的中斷
// (有聲音輸入,不論識別成功或失敗都有中斷)
LD_WriteReg(0x29,0) ;
LD_WriteReg(0x02,0) ;
if((ucRegVal & 0x10) && LD_ReadReg(0xb2)==0x21 && LD_ReadReg(0xbf)==0x35)
{
nAsrResCount = LD_ReadReg(0xba);
if(nAsrResCount>0 && nAsrResCount<=4)
{
nAsrStatus=LD_ASR_FOUNDOK;
}
else
{
nAsrStatus=LD_ASR_FOUNDZERO;
}
}
else
{
nAsrStatus=LD_ASR_FOUNDZERO; //執行沒有識別
}
LD_WriteReg(0x2b, 0);
LD_WriteReg(0x1C,0);/*寫0:ADC不可用*/
LD_WriteReg(0x29,0) ;
LD_WriteReg(0x02,0) ;
LD_WriteReg(0x2B, 0);
LD_WriteReg(0xBA, 0);
LD_WriteReg(0xBC,0);
LD_WriteReg(0x08,1); /*清除FIFO_DATA*/
LD_WriteReg(0x08,0); /*清除FIFO_DATA后 再次寫0*/
//LD3320_delay(1);
}
/***********************************************************
* 名 稱:uint8 LD_Check_ASRBusyFlag_b2(void)
* 功 能:檢測 ASR 是否忙狀態
* 入口參數:flag ---1:空閑狀態
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
uint8 LD_Check_ASRBusyFlag_b2(void)
{
uint8 j;
uint8 flag = 0;
for (j=0; j<10; j++)
{
if (LD_ReadReg(0xb2) == 0x21)
{
flag = 1;
break;
}
LD3320_delay(10);
}
return flag;
}
/***********************************************************
* 名 稱: void LD_AsrStart(void)
* 功 能:
* 入口參數: ASR初始化
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LD_AsrStart(void)
{
LD_Init_ASR();
}
/***********************************************************
* 名 稱: uint8 LD_AsrRun(void)
* 功 能: ASR執行函數
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
uint8 LD_AsrRun(void)
{
LD_WriteReg(0x35, MIC_VOL);
LD_WriteReg(0x1C, 0x09);
LD_WriteReg(0xBD, 0x20);
LD_WriteReg(0x08, 0x01);
LD3320_delay( 5 );
LD_WriteReg(0x08, 0x00);
LD3320_delay( 5);
if(LD_Check_ASRBusyFlag_b2() == 0)
{
return 0;
}
LD_WriteReg(0xB2, 0xff);
LD_WriteReg(0x37, 0x06);
LD_WriteReg(0x37, 0x06);
LD3320_delay( 5);
LD_WriteReg(0x1C, 0x0b);
LD_WriteReg(0x29, 0x10);
LD_WriteReg(0xBD, 0x00);
return 1;
}
/***********************************************************
* 名 稱:uint8 LD_AsrAddFixed(void)
* 功 能:添加識別關鍵詞語
* 入口參數:
* 出口參數: flag-- 1:success
* 說 明:開發者可以學習"語音識別芯片LD3320高階秘籍.pdf"中
關于垃圾詞語吸收錯誤的用法,提高識別率。
* 調用方法:
**********************************************************/
uint8 LD_AsrAddFixed(void)
{
uint8 k, flag;
uint8 nAsrAddLength;
#define DATE_A 4 /*數組二維數值*/
#define DATE_B 20 /*數組一維數值*/
uint8 sRecog[DATE_A][DATE_B] = {
"liu shui deng you yi",\
"shan shuo",\
"liu shui deng zuo yi",\
"quan mie"\
}; /*添加關鍵詞,用戶修改*/
uint8 pCode[DATE_A] = {
CODE_LSDYY,\
CODE_SS,\
CODE_LSDZY,\
CODE_QM\
}; /*添加識別碼,用戶修改*/
flag = 1;
for (k=0; k<DATE_A; k++)
{
if(LD_Check_ASRBusyFlag_b2() == 0)
{
flag = 0;
break;
}
LD_WriteReg(0xc1, pCode[k] );
LD_WriteReg(0xc3, 0 );
LD_WriteReg(0x08, 0x04);
LD3320_delay(1);
LD_WriteReg(0x08, 0x00);
LD3320_delay(1);
for (nAsrAddLength=0; nAsrAddLength<DATE_B; nAsrAddLength++)
{
if (sRecog[k][nAsrAddLength] == 0)
break;
LD_WriteReg(0x5, sRecog[k][nAsrAddLength]);
}
LD_WriteReg(0xb9, nAsrAddLength);
LD_WriteReg(0xb2, 0xff);
LD_WriteReg(0x37, 0x04);
// LD_WriteReg(0x37, 0x04);
}
return flag;
}
/***********************************************************
* 名 稱: uint8 LD_GetResult(void)
* 功 能: 獲取識別結果
* 入口參數:
* 出口參數: 返回識別碼 LD_ReadReg(0xc5 );
* 說 明:
* 調用方法:
**********************************************************/
uint8 LD_GetResult(void)
{
return LD_ReadReg(0xc5 );
}
復制代碼
所有資料51hei提供下載:
YS-V0.4 stm32 - 副本.7z
(161.25 KB, 下載次數: 58)
2019-1-3 03:06 上傳
點擊文件名下載附件
ld3320 語音控制LED
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲精品国产第一综合99久久
|
午夜精
|
国产精品久久久久久久久久久久
|
久久久久国产成人精品亚洲午夜
|
成人h视频在线观看
|
精品1区
|
99在线视频观看
|
日日噜噜噜夜夜爽爽狠狠视频97
|
99精品国自产在线观看
|
亚洲一区视频在线播放
|
成人免费观看男女羞羞视频
|
亚洲一区三区在线观看
|
日韩喷潮
|
不卡av电影在线播放
|
久久久久久久一区二区
|
99久久视频
|
日韩精品免费视频
|
国产一级视屏
|
日韩一二三区视频
|
国产精品xxxx
|
久久久国产一区
|
国产精品自在线
|
成人激情视频在线观看
|
亚洲国产精品成人久久久
|
国产精品我不卡
|
黄色毛片在线观看
|
欧美日韩一
|
国产视频欧美
|
日日爱夜夜操
|
一级免费看片
|
亚洲国产精品一区在线观看
|
国产美女黄色
|
成人午夜性成交
|
国产一级一片免费播放
|
国产中文字幕在线
|
亚洲精品久久久蜜桃网站
|
国产综合网址
|
91免费高清
|
亚洲欧美一区在线
|
久久国产精品久久久久久
|
a在线视频
|