⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 train.c

📁 凌阳单片机多命令语音识别程序,完成分时训练,存储语音特征模型(最多5次,第5次后自动覆盖最开始的特征模型).
💻 C
字号:
#include"spce061a.h"
#include"bsrSD.h"
#include "S480.h"
#define uint unsigned int
#define uchar unsigned char

//unsigned int IsFirstDownLoad(void);
void TrainThreeCommand(void);
void SaveThreeCommand(void);
void ImportFlopCommand(unsigned int uiAddr_Import);
void ImportSunCommand(unsigned int Name_ID);
void PlayRespond(int Result);
int TrainWord(int WordID,int SndIndex);
extern int TrainWord(int WordID, int RespondID);
extern void F_FlashErase(int);
extern void F_FlashWrite1Word(unsigned int,unsigned int);

uint Rec_fma_hao;
uint Command_ID;

void TrainThreeCommand(void)
{
	PlayRespond(0);							//播放提示音1
	BSR_DeleteSDGroup(0);				//初始化存储器RAM

	while(TrainWord(0x100,0) != 0);
	while(TrainWord(0x101,2) != 0);
	while(TrainWord(0x102,3) != 0);
}
//******保存命令的特征数据到FLASH中**************
void SaveThreeCommand(void)
{
	uint uiAddr;
	unsigned int uiCommandID;
	unsigned int uiCount;
	unsigned int uiRes_Export; 
	if(Rec_fma_hao==10)
	{
		Rec_fma_hao=0;		//已经保存的命令条数
	}
	Rec_fma_hao=Rec_fma_hao<<8;
	F_FlashErase(0xF200+Rec_fma_hao);
	F_FlashErase(0xF200+Rec_fma_hao+0x0100);
	uiAddr=0xf200+Rec_fma_hao;
	Rec_fma_hao=Rec_fma_hao>>8;
	Rec_fma_hao+=2;
	for(uiCommandID = 0x100;uiCommandID<0x103;uiCommandID++)
	{
		uiRes_Export = BSR_ExportSDWord(uiCommandID);
		while(uiRes_Export)
			uiRes_Export = BSR_ExportSDWord(uiCommandID);
		for(uiCount = 0;uiCount<100;uiCount++)
		{
			F_FlashWrite1Word(uiAddr,BSR_SDModel[uiCount]);
			*(unsigned int *)0x7012 = 1;
			uiAddr += 1;
		}	
	}
	if(Command_ID<5)
	{
		Command_ID++;
	}	
}	

void ImportFlopCommand(unsigned int Command_ID)
{
	unsigned int uiCommand_Import;
	unsigned int uiCount;
	unsigned int uiRes_Import;
	unsigned int *p_Import;
	
	BSR_DeleteSDGroup(0);					//清除内存
	
	for(uiCommand_Import = 0;uiCommand_Import <Command_ID;uiCommand_Import++)
	{
		p_Import = (unsigned int *)(0xf200+(uiCommand_Import<<9));
		for(uiCount = 0;uiCount < 100;uiCount++)
		{
			uiRes_Import = *p_Import;
			if(uiCount ==2 )uiRes_Import=uiCommand_Import+0x100;
			BSR_SDModel[uiCount] = uiRes_Import;
			p_Import ++;
			*(unsigned int *)0x7012 = 1;
		}
		uiRes_Import = BSR_ImportSDWord();
		while(uiRes_Import)
			uiRes_Import = BSR_ImportSDWord();
		*(unsigned int *)0x7012 = 1;
	}
}
void ImportSunCommand(unsigned int Name_ID)
{
	unsigned int uiCommand_Import;
	unsigned int uiCount;
	unsigned int uiRes_Import;
	unsigned int *p_Import;
	
	BSR_DeleteSDGroup(0);					//清除内存
	p_Import = (unsigned int *)(0xf200+(Name_ID<<9));
	for(uiCommand_Import = 0;uiCommand_Import <3;uiCommand_Import++)
	{
		for(uiCount = 0;uiCount < 100;uiCount++)
		{
			uiRes_Import = *p_Import;
			BSR_SDModel[uiCount] = uiRes_Import;
			p_Import ++;
			*(unsigned int *)0x7012 = 1;
		}
		uiRes_Import = BSR_ImportSDWord();
		while(uiRes_Import)
			uiRes_Import = BSR_ImportSDWord();
		*(unsigned int *)0x7012 = 1;
	}
}
void PlayRespond(int Result)//放音子程序
{
	BSR_StopRecognizer();
	SACM_S480_Initial(1);
	SACM_S480_Play(Result, 3, 3);
	while((SACM_S480_Status()&0x0001)!= 0)
	{
		SACM_S480_ServiceLoop();
		*(unsigned int *)0x7012 = 1;
	}
	SACM_S480_Stop();
	BSR_InitRecognizer(BSR_MIC);
	BSR_EnableCPUIndicator();//启动实时监控	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -