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

📄 volume.c

📁 正弦波、方波、锯齿波信号发生器
💻 C
字号:
#include <stdio.h>
#include "volume.h"
int inp_bufferSine[BUFSIZE1];
int inp_bufferSquare[BUFSIZE1];
int inp_bufferSawtooth[BUFSIZE1];
int out_buffer[BUFSIZE2];
int gain = MINGAIN;                      
unsigned int processingLoad = BASELOAD; 
struct PARMS str =
{
    2934,
		9432,
		213,
		9432,
		&str
};

extern void load(unsigned int loadValue);
static int Processingsine(int *inputSine, int *output, int step);
static int ProcessingSquare(int *inputSqure, int *output, int step);
static int ProcessingSawtooth(int *inputSawtooth, int *output, int step);
static void dataIO(void);


void main()
{
    int *inputSine  = &inp_bufferSine[0];
	int *inputSquare  = &inp_bufferSquare[0];
	int *inputSawtooth  = &inp_bufferSawtooth[0];
    int *output = &out_buffer[0];
	int step=0;
	float Frequence=0;
	//int Fs=80000;//频率的分辨率为39.0625
	int section;
    puts("Frequence happen started\n");
	printf("please input F=");
	scanf("%f",&Frequence);
	step=(int)(Frequence/39.0625+0.5);
	printf("please choose :\n1.sine wave.\n2.square wave.\n3.sawtooth wave.\n");
	printf("please input your section:");
	scanf("%d",&section);
	while(1)
	{
		switch(section)
		{
		case 1:while(TRUE)
			   {
				   dataIO();
#ifndef FILEIO
				   puts("begin processing sine wave");
#endif               
				   Processingsine(inputSine, output, step);
			   }
			break;
		case 2:while(TRUE)
			   {
				   dataIO();
#ifndef FILEIO
				   puts("begin processing square wave");
#endif               
				   ProcessingSquare(inputSquare, output, step);
			   }break;
		case 3:while(TRUE)
			   {
				   dataIO();
#ifndef FILEIO
				   puts("begin processing sawtooth wave");
#endif               
				   ProcessingSawtooth(inputSawtooth, output, step);
			   }
			break;
		default:printf("please input once more!\n");
			break;
		}
	}
}

static int Processingsine(int *inputSine, int *output, int step)
{
	int size1 = BUFSIZE1;
	int size2 = BUFSIZE2;
	int *go=inputSine;
	while(size2--)
	{
		*output=*inputSine;
		output++;
		inputSine=inputSine+step;
		size1=size1-step;
		if(!size1||size1<0)
		{
			inputSine=go;
			size1=BUFSIZE1;
		}
				}
	load(processingLoad);
    
	return(TRUE);
}

static int ProcessingSquare(int *inputSqure, int *output, int step)
{
	int size1 = BUFSIZE1;
	int size2 = BUFSIZE2;
	int *go=inputSqure;
	while(size2--)
	{
		*output=*inputSqure;
		output++;
		inputSqure=inputSqure+step;
		size1=size1-step;
		if(!size1||size1<0)
		{
			inputSqure=go;
			size1=BUFSIZE1;
		}
				}
	load(processingLoad);
    
	return(TRUE);
}

static int ProcessingSawtooth(int *inputSawtooth, int *output, int step)
{
	int size1 = BUFSIZE1;
	int size2 = BUFSIZE2;
	int *go=inputSawtooth;
	while(size2--)
	{
		*output=*inputSawtooth;
		output++;
		inputSawtooth=inputSawtooth+step;
		size1=size1-step;
		if(!size1||size1<0)
		{
			inputSawtooth=go;
			size1=BUFSIZE1;
		}
				}
	load(processingLoad);
    
	return(TRUE);
}


static void dataIO()
{
	return;
}

⌨️ 快捷键说明

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