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

📄 interrupts.c

📁 定点十六位的adsp218x系列的fft、fir算法。对刚刚入门的dsp学习有很大的帮助。
💻 C
字号:
#include "talkthrough.h"
int InData;
int Ready2FFT=0;
int Data2FFTNum=0;
int OutputMum=0;
int CH_sel;//通道标志
/****************中断设置程序*********************/
void InitInterrupts(void)
{	
    sysreg_write(sysreg_IMASK, 0x0001);//初始化过程屏蔽所有中断(除COM定时器中断)
    enable_interrupts();//使能全局中断
    sysreg_write(sysreg_IFC, 0x00FE);//清除无关中断标志
    sysreg_write(sysreg_ICNTL, 0x0002);//禁止中断嵌套
  	 interrupt(SIGSPORT0XMIT, Sport0TxIsr);//关联SPORT0发送中断信号和对应的中断服务程序
}
/*****************串口发送中断程序*****************/
void Sport0TxIsr(int sig)
{   
    if(!iCodecInitFinished)//读取发送完成标志,判断发送是否完成								                
	   {	
	    iTxIsrCounter++;//如果没有完成中断次数自加1								              
		  if(iTxIsrCounter == SIZE_OF_CODEC_REGS) iCodecInitFinished = 1;
			            //如果最后的控制字已经发完,置初始化完成标志
		  else sport_write(SPORT_0, iCodecRegs[iTxIsrCounter]);
						 //如果初始化未完成,将当前的控制字发出
    }
}
/****************串口接收中断程序*****************/
void Sport0RxIsr(int sig)
{       
		InData=sport_read(SPORT_0);	//从串口0接收一个数据
	    SampleData();//进行数据采集
	    OutPutMag();//将频谱分析结果送出	 
}
/*************完成对信号的采样***********************/
void SampleData(void)
{  if(CH_sel)
	{
	if (Ready2FFT==0)//如果处于采集状态,进行数据采集
	{
	InReal[Data2FFTNum]=InData; //从串口0接收一个通道数据放入数据缓冲
	Data2FFTNum++;//改变数据块指针
	if(Data2FFTNum==FFT_TAPS) {Data2FFTNum=0;Ready2FFT=1;}
	}
	CH_sel=0;
	}
	else CH_sel=1;
}
/****************频谱输出程序*****************/
void OutPutMag(void)
{   
	sport_write(SPORT_0,OutBuf[OutputMum]);//输出一个频谱数值
	OutputMum++;//改变输出的指针
	if (OutputMum==FFT_TAPS/2) OutputMum=0;
}

⌨️ 快捷键说明

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