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

📄 exec_fir.c

📁 TI CCS开发环境下的FIR滤波器实现工程
💻 C
字号:
#include <stdio.h>

/*
		Exercise 1	FIR Filter
		DSPLab, Tianjin University
		2007.10.30
*/

#define BUFFERSIZE	2048	/* Input and output buffer size */
#define ASMFILTER	1		/* If use assembly code to implement filter */
#define FILEIO_OPEN	0		/* If use FILEIO */

#include "blackman_low_pass_filter_2000Hz.h"

#if ASMFILTER
#include "FIR_filters_asm.h"
#else
#include "FIR_filters.h"

#endif

#if FILEIO_OPEN
	int input_buffer[BUFFERSIZE];
#else
#include "importdata.h"
#endif


int output_buffer[BUFFERSIZE];
	
//Dummy function
void inject()
{
	return;
}

//Dummy function
void drawout()
{
	return;
}

void main()
{
	signed int mono_input;
    signed long output; 
	int i;

	printf("Program is running...\n");
	
	//For FileIO
	inject();
	
	for (i = 0; i < BUFFERSIZE/2; i++)
	{
		mono_input = stereo_to_mono(input_buffer[2*i], input_buffer[2*i+1]);

		/* Use blackman filter to seperate different frequency. */
#if ASMFILTER		
		output = FIR_dual_filter_asm(&blackman_low_pass_filter_2000Hz[0], mono_input);
#else
		output = FIR_dual_filter_tmp(&blackman_low_pass_filter_2000Hz[0], mono_input);
#endif
		
		//Low 8-bit and high 8-bit are the data of 2 channels respectively.
		output_buffer[2*i] = (signed int) (output & 0xFFFF );      
        output_buffer[2*i+1] = (signed int) (output >> 16 );
	}
	
	//For FileIO
	drawout();
}

signed int stereo_to_mono(signed int left_channel, signed int right_channel)
{
	 signed long temp;
 
	 /* Take average of left and right channels. */
 
	 temp = (signed long) left_channel + (signed long) right_channel;
 
	 temp >>= 1;    /* Divide by 2 to prevent overload at output */
 
	 return ((signed int) temp); /* Return mono value to calling function */
}

⌨️ 快捷键说明

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