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

📄 main3.c

📁 文件系统在DSP5509上的实现
💻 C
字号:
/**********************************************************************
                                                  
                   *********  主控程序   **********            
                                                 
**********************************************************************/
#include "VoiceProcess.h"
#include "math.h" 


Bool int_flag;
Uint16 RecPoint=0;                       //录音指针 
Uint16   LedF=0;
Uint16 PitchPoint=0;
Uint16 FilterPoint=1;

Uint16  LmsTwo=0; 
Uint16 FlagCounter=0;
Uint16 FlagDog=0;
DATA VoiceTwo[2];
int rev_data1[2];    					 
int MikeOut[0x2010];
DATA MikeOutTwo[2]; 
int PitchDataIn[800];    						//将串口1数据保存用
int PitchDataVer[800];
int PitchDataIn2[512];
   
extern Bool PitchFlag;
extern Uint16 dB;
//extern int VoiceCrossNew;
extern int VoiceCross[];
extern int VoiceCrossVar;

extern void SoundOut(void); 
extern void Dog(void);
extern void FftLongInit(void);

interrupt void mcbsprev();			    //中断接收函数

/**********************************************************************/
//                        主程序 
/**********************************************************************/                	                     
main()
{    
    IRQ_globalDisable();    	//全局中断禁止  
    FftLongInit();
    bianliang_chushihua();      // 变量清零    
    sys_init();				    //系统初始化函数
 /****************************/  
   int_flag=FALSE; 
   checkflag=0;
   dB=0x8301;
 /****************************/     
  	SET_AD73311();	            //设置两个AD73311芯片,采样率,增益等    
    IRQ_globalEnable();	        //全局中断使能
    LedYellow(LedOff);
    while(1)                    //循环,等待中断,进行数据处理
    {             
       if(int_flag==TRUE) SoundOut();  // 放音
     
       if(checkflag)    	                   // 采集完一帧数据后 checkflag=1
       {                             
           ComputerPitch();                   //计算基音 
            
   	       LedF++;    	      
           FlagDog++;
           if(FlagDog>=FlagDogNumber)
           {
             FlagDog=0;                  
             FlagCounter=0;
           }  
           if(PitchFlag==TRUE )  // 基音控制    
           {
               if(FlagCounter==0)
               {
                  FlagDog=0;
               }
               FlagCounter++;
               if(FlagCounter>=PITCHCOUNTER)
               {
                   LedRed(LedOn);
                   FlagCounter=0;
                   FlagDog=0;
               }
   
               LedF=0;
                   
            }
            else if((PitchFlag==FALSE)&&(LedF>20))
            {
               LedRed(LedOff);
               LedF=0;
            }  
                           
           checkflag=0;
        }//endif 
             
     }	  	  	   
}

/////////////////////////////////////////////////////////////////////////
//                      语音数据接收中断服务子函数
interrupt void mcbsprev()					
{  
   IRQ_globalDisable();						//全局中断禁止
         
   VoiceTwo[LmsTwo]=MCBSP_read16(hMcbsp2)-1300;  //A口作输入  
   PitchDataIn2[PitchPoint]=MCBSP_read16(hMcbsp1)-1900;  //B口作输入 
   
//****************  带通滤波 ******************************************
   if(LmsTwo==1)   //如果是偶数个数据
   {               
   	  MikeOutTwo[0]=VoiceTwo[0]; 
      MikeOutTwo[1]=VoiceTwo[1];
             
      MikeOut[RecPoint-1]=VoiceTwo[0];          
      MikeOut[RecPoint]=VoiceTwo[1];         // 1秒钟录音
                                              
      PitchDataIn[PitchPoint-1]=VoiceTwo[0];  
      PitchDataIn[PitchPoint]=VoiceTwo[1];            
   }  
          
   //奇偶处理
   LmsTwo++;
   if(LmsTwo>1)
      LmsTwo=0;
       
   //基音
   PitchPoint++;
   if(PitchPoint>255)
   {  
      PitchPoint=0;    
      checkflag=1;
   } 
    
   /***********************************************************/
   //录音指针处理
   RecPoint++;           
   if(RecPoint>0x1fff)
   {  
     RecPoint=0;
     LmsTwo=0;
   } 
   
   int_flag=TRUE;                   //中断标志
   IRQ_clear(rcvEventId2);			//清除中断标志
}

/************************************************************************/

⌨️ 快捷键说明

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