main.c

来自「dspic开发控制程序,有助开发pic单片机程序」· C语言 代码 · 共 96 行

C
96
字号
//Main.c :
#define __dsPIC30F6014__

#include <p30f6014.h>
#include <dsp.h>
#include "common.h"
#include "lcd.h"
#include "menu.h"
#include "codec.h"
#include "atod.h"
#include "generators.h"
#include "timers.h"
#include "procdsp.h"

static fractional* pInData;
static fractional* pOutData;

//主程序
int main(void)
{
	TRISDbits.TRISD0 = 0;	//LED位设为输出
	TRISDbits.TRISD1 = 0;
	TRISDbits.TRISD2 = 0;
	TRISDbits.TRISD3 = 0;
	PORTD = 0xFFFF;		//关闭所有的LED
	InitTimers();
	TimeDelay(2);	
	InitLcd();
	InitMenu();
	InitAD();
	InitCodec();
	InitGen();
	while(1)
	{
		ServiceMenu();
		ServiceLCD();
 		if(Sem.CodecRxDataRdy && Sem.CodecTxDataRdy)
		{	//如果Rx和Tx缓冲准备好,开始执行以下命令
			LED1_ON	//每35.5ms 亮
			Sem.CodecRxDataRdy = FALSE;	
			Sem.CodecTxDataRdy = FALSE;
			pInData = pActiveRxBuf;		//接收队列指针
			pOutData = pActiveTxBuf;	//传输队列指针
			switch(InputSrc)	//选择信号输入源
			{	
				case SRC_CODEC:	//把从编码解码得到的数据放大
					VectorScale(PROC_BLOCK_SIZE, pInData, pInData, CurrentInScale);
					break;
				case SRC_SINE:	//创建sine波形
					MakeSine(PROC_BLOCK_SIZE, pInData, CurrentInScale);
					break;
				case SRC_NOISE:	//创建噪声
					MakeUniform( PROC_BLOCK_SIZE, pInData, CurrentInScale);
					break;
				case SRC_SINENOISE:	//创建噪声加噪声
					MakeUniform( PROC_BLOCK_SIZE, pOutData, 0x1000);
					MakeSine(PROC_BLOCK_SIZE, pInData, CurrentInScale);
					VectorAdd(PROC_BLOCK_SIZE, pInData, pOutData, pInData);
					break;
			}
			LED1_OFF
			LED2_ON
			switch(DspProc)	//选择DSP处理模式
			{
				case DSP_NONE:	//不作任何处理
					VectorCopy(PROC_BLOCK_SIZE, pOutData, pInData);
					break;
				case DSP_LPFIR:
				case DSP_HPFIR:
				case DSP_BPFIR:
				case DSP_BSFIR:
					ProcFIR( pInData, pOutData);
					break;
				case DSP_SHIFT:
					ProcShift( pInData, pOutData);
					break;
				case DSP_LMS:
					ProcLMS( pInData, pOutData);
					break;
			}
			LED2_OFF
			LED3_ON
			if(CurrentMenu==MENU_TIME)
			{
				PlotTime(pOutData);
			}
			else if(CurrentMenu==MENU_FREQ)
			{	//由于FFT修改输入缓冲,重新拷贝
				VectorCopy(PROC_BLOCK_SIZE, pInData, pOutData);
				PlotFreq(pInData);
			}
			LED3_OFF
		}
	}
}

⌨️ 快捷键说明

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