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 + -
显示快捷键?