📄 train.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 + -