久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
LD3320語音控制LED STM32單片機源碼下載
[打印本頁]
作者:
rose
時間:
2017-4-20 19:28
標題:
LD3320語音控制LED STM32單片機源碼下載
LD3320語音芯片的stm32單片機驅動源碼工程:
0.png
(46.09 KB, 下載次數: 71)
下載附件
2017-4-21 00:43 上傳
完整源碼下載:
基于語音檢測的機器人控制.rar
(303.11 KB, 下載次數: 58)
2017-4-21 00:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
主程序:
#include <stm32f10x.h>
#include "stm32f10x_conf.h"
#include "LDchip.h"
#include "Reg_RW.h"
#include "LD3320_config.h"
/************************************************************************************
// nAsrStatus 用來在main主程序中表示程序運行的狀態,不是LD3320芯片內部的狀態寄存器
// LD_ASR_NONE: 表示沒有在作ASR識別
// LD_ASR_RUNING: 表示LD3320正在作ASR識別中
// LD_ASR_FOUNDOK: 表示一次識別流程結束后,有一個識別結果
// LD_ASR_FOUNDZERO: 表示一次識別流程結束后,沒有識別結果
// LD_ASR_ERROR: 表示一次識別流程中LD3320芯片內部出現不正確的狀態
*********************************************************************************/
uint8 nAsrStatus=0;
void LD3320_Init(void);
uint8 RunASR(void);
void ProcessInt0(void);
void LD3320_EXTI_Cfg(void);
void LD3320_Spi_cfg(void);
void LD3320_GPIO_Cfg(void);
void LED_gpio_cfg(void);
/***********************************************************
* 名 稱: LD3320_main(void)
* 功 能: 主函數LD3320程序入口
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LD3320_main(void)
{
uint8 nAsrRes=0;
LD3320_Init();
PrintCom(TEST_USART," 串口運行中....\r\n");
PrintCom(TEST_USART,"口令:1、流水燈\r\n");
PrintCom(TEST_USART,"2、閃爍\r\n");
PrintCom(TEST_USART,"3、按鍵觸發\r\n");
PrintCom(TEST_USART,"4、全滅\r\n");
nAsrStatus = LD_ASR_NONE; // 初始狀態:沒有在作ASR
while(1)
{
switch(nAsrStatus)
{
case LD_ASR_RUNING:
case LD_ASR_ERROR:
break;
case LD_ASR_NONE:
nAsrStatus=LD_ASR_RUNING;
if (RunASR()==0) // 啟動一次ASR識別流程:ASR初始化,ASR添加關鍵詞語,啟動ASR運算
{
nAsrStatus = LD_ASR_ERROR;
}
break;
case LD_ASR_FOUNDOK:
nAsrRes = LD_GetResult( ); // 一次ASR識別流程結束,去取ASR識別結果
PrintCom(TEST_USART,"\r\n識別碼:");
USART_SendData(TEST_USART,nAsrRes+0x30);
switch(nAsrRes) /*對結果執行相關操作,客戶修改*/
{
case CODE_LSD: /*命令“流水燈”*/
PrintCom(TEST_USART,"“流水燈”命令識別成功\r\n");
break;
case CODE_SS: /*命令“閃爍”*/
PrintCom(TEST_USART,"“閃爍”命令識別成功\r\n");
break;
case CODE_AJCF: /*命令“按鍵觸發”*/
PrintCom(TEST_USART,"“按鍵觸發”命令識別成功\r\n");
break;
case CODE_QM: /*命令“全滅”*/
PrintCom(TEST_USART,"“全滅”命令識別成功\r\n");
break;
default:break;
}
nAsrStatus = LD_ASR_NONE;
break;
case LD_ASR_FOUNDZERO:
default:
nAsrStatus = LD_ASR_NONE;
break;
}//switch
//開發板測試延時部分(用戶可刪除)
Board_text(nAsrRes );
}// while
}
/***********************************************************
* 名 稱:LD3320_Init(void)
* 功 能:模塊驅動端口初始配置
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LD3320_Init(void)
{
LD3320_GPIO_Cfg();
LD3320_EXTI_Cfg();
LD3320_Spi_cfg();
LED_gpio_cfg();
LD_reset();
}
/***********************************************************
* 名 稱: void Delay_(int i)
* 功 能: 短延時
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void Delay_( int i)
{
while(i--);
}
/***********************************************************
* 名 稱: LD3320_delay(unsigned long uldata)
* 功 能: 長延時函數
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LD3320_delay(unsigned long uldata)
{
unsigned int j = 0;
unsigned int g = 0;
for (j=0;j<5;j++)
{
for (g=0;g<uldata;g++)
{
Delay_(120);
}
}
}
/***********************************************************
* 名 稱: RunASR(void)
* 功 能: 運行ASR
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
uint8 RunASR(void)
{
uint8 i=0;
uint8 asrflag=0;
for (i=0; i<5; i++) // 防止由于硬件原因導致LD3320芯片工作不正常,所以一共嘗試5次啟動ASR識別流程
{
LD_AsrStart(); //初始化ASR
LD3320_delay(100);
if (LD_AsrAddFixed()==0) //添加關鍵詞語到LD3320芯片中
{
LD_reset(); // LD3320芯片內部出現不正常,立即重啟LD3320芯片
LD3320_delay(50); // 并從初始化開始重新ASR識別流程
continue;
}
LD3320_delay(10);
if (LD_AsrRun() == 0)
{
LD_reset(); // LD3320芯片內部出現不正常,立即重啟LD3320芯片
LD3320_delay(50); // 并從初始化開始重新ASR識別流程
continue;
}
asrflag=1;
break; // ASR流程啟動成功,退出當前for循環。開始等待LD3320送出的中斷信號
}
return asrflag;
}
/***********************************************************
* 名 稱:LD3320_GPIO_Cfg(void)
* 功 能:初始化需要用到的IO口
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LD3320_GPIO_Cfg(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(LD3320RST_GPIO_CLK | LD3320CS_GPIO_CLK,ENABLE);
//LD_CS /RSET
GPIO_InitStructure.GPIO_Pin =LD3320CS_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(LD3320CS_GPIO_PORT,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin =LD3320RST_PIN;
GPIO_Init(LD3320RST_GPIO_PORT,&GPIO_InitStructure);
}
/***********************************************************
* 名 稱:LD3320_Spi_cfg(void)
* 功 能:配置SPI功能和端口初始化
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LD3320_Spi_cfg(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
//spi端口配置
RCC_APB2PeriphClockCmd(LD3320SPI_CLK,ENABLE); //使能SPI2外設時鐘
RCC_APB2PeriphClockCmd(LD3320WR_GPIO_CLK | LD3320SPIMISO_GPIO_CLK | LD3320SPIMOSI_GPIO_CLK | LD3320SPISCK_GPIO_CLK,ENABLE);
GPIO_InitStructure.GPIO_Pin = LD3320SPIMISO_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(LD3320SPIMISO_GPIO_PORT,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = LD3320SPIMOSI_PIN;
GPIO_Init(LD3320SPIMOSI_GPIO_PORT,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = LD3320SPISCK_PIN;
GPIO_Init(LD3320SPISCK_GPIO_PORT,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = LD3320WR_PIN; //WR
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(LD3320WR_GPIO_PORT, &GPIO_InitStructure);
LD_CS_H();
SPI_Cmd(LD3320SPI, DISABLE);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //全雙工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //主模式
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //8位
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; //時鐘極性 空閑狀態時,SCK保持低電平
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //時鐘相位 數據采樣從第一個時鐘邊沿開始
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //軟件產生NSS
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64; //波特率控制 SYSCLK/128
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //數據高位在前
SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC多項式寄存器初始值為7
SPI_Init(LD3320SPI, &SPI_InitStructure);
SPI_Cmd(LD3320SPI, ENABLE);
}
/***********************************************************
* 名 稱: LD3320_EXTI_Cfg(void)
* 功 能: 外部中斷功能配置和相關端口配置
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LD3320_EXTI_Cfg(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能復用功能時鐘
RCC_APB2PeriphClockCmd(LD3320IRQ_GPIO_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin =LD3320IRQ_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(LD3320IRQ_GPIO_PORT, &GPIO_InitStructure);
//外部中斷線配置
GPIO_EXTILineConfig(LD3320IRQEXIT_PORTSOURCE, LD3320IRQPINSOURCE);
EXTI_InitStructure.EXTI_Line = LD3320IRQEXITLINE;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
//中斷嵌套配置
NVIC_InitStructure.NVIC_IRQChannel = LD3320IRQN;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/***********************************************************
* 名 稱: EXTI IRQHandler(void)
* 功 能: 外部中斷函數
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void EXTI15_10_IRQHandler(void)
{
if(EXTI_GetITStatus(LD3320IRQEXITLINE)!= RESET )
{
ProcessInt0();
PrintCom(TEST_USART,"進入中斷12\r\n");
EXTI_ClearFlag(LD3320IRQEXITLINE);
EXTI_ClearITPendingBit(LD3320IRQEXITLINE); //清除LINE2上的中斷標志位
}
}
/***********************************************************
* 名 稱:void LED_gpio_cfg(void)
* 功 能:LED端口配置
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void LED_gpio_cfg(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(LED1_GPIO_CLK | LED2_GPIO_CLK | LED3_GPIO_CLK | LED4_GPIO_CLK,ENABLE);
GPIO_InitStructure.GPIO_Pin = LED1_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = LED2_PIN;
GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = LED3_PIN;
GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = LED4_PIN;
GPIO_Init(LED4_GPIO_PORT, &GPIO_InitStructure);
LED1_OFF;
LED2_OFF;
LED3_OFF;
LED4_OFF;
}
復制代碼
作者:
252622979
時間:
2017-4-22 12:36
原理圖呢?有原理圖嗎?
作者:
xiaojiabo
時間:
2018-8-20 02:53
沒有.h文件嗎?
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产一区
|
亚洲精品视频免费
|
国产农村妇女精品一二区
|
日韩亚洲一区二区
|
99久久夜色精品国产亚洲96
|
免费一级欧美在线观看视频
|
夜夜爽99久久国产综合精品女不卡
|
www国产成人免费观看视频,深夜成人网
|
h视频免费在线观看
|
欧美日韩一区二区在线
|
欧美一区二区三区四区视频
|
亚洲精品视频导航
|
亚洲人成人网
|
成人综合伊人
|
国产精品毛片无码
|
国产一区二区三区免费
|
色综合久久久
|
少妇一级淫片免费放播放
|
日韩欧美网
|
一级黄色片免费在线观看
|
亚洲精品国产电影
|
99在线精品视频
|
91色视频在线观看
|
色综合美女
|
久久精品视频在线免费观看
|
国产亚洲精品成人av久久ww
|
国产99久久精品一区二区永久免费
|
久久久久国产一区二区三区
|
亚洲高清在线观看
|
成人免费视屏
|
91在线精品秘密一区二区
|
久久久国产一区二区三区
|
国产丝袜一区二区三区免费视频
|
91婷婷韩国欧美一区二区
|
欧美成人一区二区
|
久久国产综合
|
国产精品免费一区二区
|
国产精品a免费一区久久电影
|
女同av亚洲女人天堂
|
夜夜爽99久久国产综合精品女不卡
|
欧美精品久久久久
|