📄 复件 cputimer.c
字号:
#include "DSP28_Device.h"
#include "ext_inf.h"
unsigned int Led_Flag;
float a1[16];
unsigned int a2=0,a3=0;
float adclo=0.0;
interrupt void ad(void);
interrupt void ISRTimer0(void);
void InitAdc(void);
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
Led_Flag = 0;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化外设*/
InitPeripherals();
PieCtrl.PIEIER1.bit.INTx7=1;
PieCtrl.PIEIER1.bit.INTx6=1;
EALLOW;
PieVectTable.TINT0 = &ISRTimer0;
PieVectTable.ADCINT=&ad;
EDIS;
InitAdc();
/*设置CPU*/
ConfigCpuTimer(&CpuTimer0, 150, 100000);
StartCpuTimer0();
/*开中断*/
IER |= M_INT1;
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
while(AdcRegs.ADC_ST_FLAG.bit.SEQ1_BSY==0)
{
AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
}
for(;;);
}
interrupt void ISRTimer0(void)
{
CpuTimer0.InterruptCount++;
a3++;
if(Led_Flag == 1)
{
*LED2 = 0;
LED1_ON;
Led_Flag = 0;
}
else
{
*LED2 = 1;
LED1_OFF;
Led_Flag = 1;
}
PieCtrl.PIEACK.bit.ACK1 = 1;
EINT;
}
interrupt void ad(void)
{
IFR=0x0000;
// PieCtrl.PIEIFR1.all = 0;
PieCtrl.PIEACK.all=0xffff;
a2++;
a1[0]=((float)AdcRegs.RESULT0);
a1[1]=((float)AdcRegs.RESULT1)*3.0/65520.0+adclo;
a1[2]=((float)AdcRegs.RESULT2)*3.0/65520.0+adclo;
a1[3]=((float)AdcRegs.RESULT3)*3.0/65520.0+adclo;
a1[4]=((float)AdcRegs.RESULT4)*3.0/65520.0+adclo;
a1[5]=((float)AdcRegs.RESULT5)*3.0/65520.0+adclo;
a1[6]=((float)AdcRegs.RESULT6)*3.0/65520.0+adclo;
a1[7]=((float)AdcRegs.RESULT7)*3.0/65520.0+adclo;
a1[8]=((float)AdcRegs.RESULT8)*3.0/65520.0+adclo;
a1[9]=((float)AdcRegs.RESULT9)*3.0/65520.0+adclo;
a1[10]=((float)AdcRegs.RESULT10)*3.0/65520.0+adclo;
a1[11]=((float)AdcRegs.RESULT11)*3.0/65520.0+adclo;
a1[12]=((float)AdcRegs.RESULT12)*3.0/65520.0+adclo;
a1[13]=((float)AdcRegs.RESULT13)*3.0/65520.0+adclo;
a1[14]=((float)AdcRegs.RESULT14)*3.0/65520.0+adclo;
a1[15]=((float)AdcRegs.RESULT15)*3.0/65520.0+adclo;
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
EINT;
}
void InitAdc(void)
{
unsigned int i;
AdcRegs.ADCTRL1.bit.RESET=1;
NOP;
AdcRegs.ADCTRL1.bit.RESET=0;
AdcRegs.ADCTRL1.bit.SUSMOD=3;
AdcRegs.ADCTRL1.bit.ACQ_PS=0;
AdcRegs.ADCTRL1.bit.CPS=0;
AdcRegs.ADCTRL1.bit.CONT_RUN=0;
AdcRegs.ADCTRL1.bit.SEQ_CASC=1;
AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;
for(i=0;i<10000;i++) NOP;
AdcRegs.ADCTRL3.bit.ADCPWDN=1;
for(i=0;i<5000;i++) NOP;
AdcRegs.ADCTRL3.bit.ADCCLKPS=15;
AdcRegs.ADCTRL3.bit.SMODE_SEL=1;
AdcRegs.MAX_CONV.bit.MAX_CONV=15;
AdcRegs.CHSELSEQ1.bit.CONV00=0;
AdcRegs.CHSELSEQ1.bit.CONV01=1;
AdcRegs.CHSELSEQ1.bit.CONV02=2;
AdcRegs.CHSELSEQ1.bit.CONV03=3;
AdcRegs.CHSELSEQ2.bit.CONV04=4;
AdcRegs.CHSELSEQ2.bit.CONV05=5;
AdcRegs.CHSELSEQ2.bit.CONV06=6;
AdcRegs.CHSELSEQ2.bit.CONV07=7;
AdcRegs.CHSELSEQ3.bit.CONV08=8;
AdcRegs.CHSELSEQ3.bit.CONV09=9;
AdcRegs.CHSELSEQ3.bit.CONV10=10;
AdcRegs.CHSELSEQ3.bit.CONV11=11;
AdcRegs.CHSELSEQ4.bit.CONV12=12;
AdcRegs.CHSELSEQ4.bit.CONV13=13;
AdcRegs.CHSELSEQ4.bit.CONV14=14;
AdcRegs.CHSELSEQ4.bit.CONV15=15;
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
AdcRegs.ADC_ST_FLAG.bit.INT_SEQ2_CLR=1;
AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0;
AdcRegs.ADCTRL2.bit.RST_SEQ1=0;
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0;
AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=0;
AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1=0;
AdcRegs.ADCTRL2.bit.RST_SEQ2=0;
AdcRegs.ADCTRL2.bit.SOC_SEQ2=0;
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0;
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ2=0;
AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ2=0;
AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -