?? ad.h
字號:
#include "DSP281x_Device.h"
void ConfigureGpio(void);
void InitSystem(void);
interrupt void adc_isr(void);
int adcInput0[1024];
int adcInput1[1024];
unsigned int adcCount=0;
void main(void)
{
unsigned int LED[8]={0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080};
InitSystem();
ConfigureGpio();
InitPieCtrl();
InitPieVectTable();
InitAdc();
EALLOW;
PieVectTable.ADCINT=&adc_isr;
EDIS;
PieCtrlRegs.PIEIER1.bit.INTx6=1;
IER=1;
EINT;
ERTM;
AdcRegs.ADCTRL1.bit.SEQ_CASC=0;
AdcRegs.ADCTRL1.bit.CONT_RUN=0;
AdcRegs.ADCTRL1.bit.CPS=0;
AdcRegs.ADCMAXCONV.all=0x0001;
AdcRegs.ADCCHSELSEQ1.bit.CONV01=0x8;
AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;
AdcRegs.ADCTRL3.bit.ADDCLKPS=2;
EvaRegs.GPTCONA.bit.TCMPOE=0;
EvaRegs.GPTCONA.bit.T1PIN=0;
EvaRegs.GPTCONA.bit.T1TOADC=2;
EvaRegs.T1CON.bit.FREE=0;
EvaRegs.T1CON.bit.SOFT=0;
EvaRegs.T1CON.bit.TMODE=2;
EvaRegs.T1CON.bit.TPS=7;
EvaRegs.T1CON.bit.TENABLE=1;
EvaRegs.T1CON.bit.TCLKS10=0;
EvaRegs.T1CON.bit.TCLD10=0;
EvaRegs.T1CON.bit.TECMPR=0;
EvaRegs.T1PR.=5860;
while(1)
{
GpioDataRegs.GPBDAT.all=LED[adcCount>>7];
}
}
void ConfigureGpio(void)
{
EALLOW;
GpioMuxRegs.GPAMUX.all = 0x0; //將所有GPIO口的引腳配制成通用I/O口
GpioMuxRegs.GPBMUX.all = 0x0;
GpioMuxRegs.GPDMUX.all = 0x0;
GpioMuxRegs.GPFMUX.all = 0x0;
GpioMuxRegs.GPEMUX.all = 0x0;
GpioMuxRegs.GPGMUX.all = 0x0;
GpioMuxRegs.GPADIR.all = 0x0;
GpioMuxRegs.GPBDIR.all = 0x00FF;
GpioMuxRegs.GPDDIR.all = 0x0;
GpioMuxRegs.GPEDIR.all = 0x0;
GpioMuxRegs.GPFDIR.all = 0x0;
GpioMuxRegs.GPGDIR.all = 0x0;
GpioMuxRegs.GPAQUAL.all = 0x0;
GpioMuxRegs.GPBQUAL.all = 0x0;
GpioMuxRegs.GPDQUAL.all = 0x0;
GpioMuxRegs.GPEQUAL.all = 0x0;
EDIS;
}
void InitSystem(void)
{
EALLOW;
SysCtrlRegs.WDCR=0x00E8;
SysCtrlRegs.PLLCR.bit.DIV=10;
SysCtrlRegs.HISPCP.all=0x1;
SysCtrlRegs.LOSPCP.all=0x2;
//根據(jù)需要時能各種外設模塊的時鐘
SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
SysCtrlRegs.PCLKCR.bit.EVBENCLK=0;
SysCtrlRegs.PCLKCR.bit.SCIAENCLK=0;
SysCtrlRegs.PCLKCR.bit.SCIBENCLK=0;
SysCtrlRegs.PCLKCR.bit.MCBSPENCLK=0;
SysCtrlRegs.PCLKCR.bit.SPIENCLK=0;
SysCtrlRegs.PCLKCR.bit.ECANENCLK=0;
SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;
EDIS;
}
interrupt void adc_isr(void)
{
//將采樣值送入循環(huán)采樣數(shù)組中
adcInput0[adcCount]=AdcRegs.ADCRESULT0>>4;
adcInput1[adcCount]=AdcRegs.ADCRESULT1>>4;
adcInput1[adcCount]-=2047; //轉化為12位有符號數(shù)
//實現(xiàn)數(shù)組的循環(huán)訪問
adcCount++;
if(adcCount>1023)adcCount=0;
//重新初始化ADC采樣序列
AdcRegs.ADCTRL2.bit.RST_SEQ1=1; //復位SEQ1
AdcRegs.ADCST.bit.INT_SEQ1_CLR=1; //清除中斷位INT SEQ1
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1; //清除PIE1的中斷響應位
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -