📄 main.c
字号:
#include "c5402mmr.h"
#include "dsplib.h"
#include "tms320.h"
#include "math.h"
#define McBSP0_DXR1 (*(volatile unsigned int *)0x0023)
extern int MCBSP0RNUM;//直接调用汇编中的全局变量
extern int admemory;
extern int N1,DMANUMBER,BUFFERNO;
extern int delaytime;
extern int TESTN;
extern int numflag;
extern int templatenum;
extern int timeintnum;
extern int dmaflag;
void main()
{
int i,j;
int * DAram;
int sin_tab[64];
int speechbegin,speechtruebegin;
ST1_ADDR->value=0x4800;//XF设置为0
PMST_ADDR->value=0xefc0;//IPTR=1DF
c54clkset(0x0f); //设置dsp全速10Mhz运行
IMR_ADDR->value=0x0000;//所有可屏蔽中断无效
GPIOCR_ADDR->value=0x27;//HPI口设置为GPIO使用
GPIOSR_ADDR->bitval.io5=0;
for(i=0;i<64;i++)
{
sin_tab[i]=(int)(0x5000*sin(2*pi*i*1000/16000));
}
while(1)
{
c54clkset(9);
numflag=1;
templatenum=0; //上面语句是初始化控制变量
asm(" ssbx intm");
IMR_ADDR->bitval.int0=1;
IMR_ADDR->bitval.int1=1;
asm(" rsbx intm");
while(numflag==1)
{
;
} //等待按键计数
templatenum=templatenum-1;
mcbsp0xinit();//初始化mcbsp0的发送,使得其可以发送ad命令字数据
adinit(0x813b); //初始化ad73311,使其工作在设定的采样频率下,此处为16K并且进入采样模式
dmaflag=1;
DAram=(int *)0x0780;
//for(i=0;i<226;i++)
//{
// for(j=0;j<64;j++)
// {
// DAram[i*64+j]=sin_tab[j];
// }
//}
IMR_ADDR->value=0x0040;//开放dmac0中断
asm(" rsbx intm");
//启动dma传送da数据
DMA_resetmy();
DMA_init(0x0,(unsigned int)DAram,DXR10_BASE,0x3880-1,0x2000,0x4141);//20帧数据的数量是1760=06e0h
DMAPREC_ADDR->value=0x01c1;//使能dmac0
McBSP0_DXR1=*DAram; //直接播放采样语音
//while(dmaflag>0)
//{
// ;
//}
dmaflag=1;
asm(" ssbx intm");
SWWSR_ADDR->value=0x7249;//设置等待状态为1,使得LPC特征计算加快
GPIOCR_ADDR->value=0x27;
GPIOSR_ADDR->bitval.io5=0;//D100灯亮,指示特征计算完毕,可再次输入
N1=-9;
DMANUMBER=0;
MCBSP0RNUM=0;
numflag=1;
templatenum=0; //上面语句是重新初始化控制变量
} //训练的死循环结束
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -