28335中断的一般方法.docx
《28335中断的一般方法.docx》由会员分享,可在线阅读,更多相关《28335中断的一般方法.docx(17页珍藏版)》请在冰豆网上搜索。
28335中断的一般方法
中断的一般方法
步骤1
voidInitPieCtrl(void)//初化PIE控制寄存器
{
DINT;//关闭所有CPU标准中断DisableInterruptsattheCPUlevel:
PieCtrlRegs.PIECTRL.bit.ENPIE=0;//关闭所有PIE中断DisablethePIE
//ClearallPIEIERregisters:
清除所有中断使能位
PieCtrlRegs.PIEIER1~12(省了中问部分).all=0;
//ClearallPIEIFRregisters:
清除所有中断标志位
PieCtrlRegs.PIEIFR1~12.all=0;
}
步骤2
//DisableCPUinterruptsandclearallCPUinterruptflags:
IER=0x0000;
IFR=0x0000;
步骤3初始化中断向量表
voidInitPieVectTable(void)
{int16i;
Uint32*Source=(void*)&PieVectTableInit;
Uint32*Dest=(void*)&PieVectTable;
EALLOW;
for(i=0;i<128;i++)
*Dest++=*Source++;
EDIS;
//EnablethePIEVectorTable
PieCtrlRegs.PIECTRL.bit.ENPIE=1;
}
//下面这个原中断数据地向量位置
conststructPIE_VECT_TABLEPieVectTableInit={
PIE_RESERVED,//0Reservedspace
PIE_RESERVED,//1Reservedspace
PIE_RESERVED,//2Reservedspace
PIE_RESERVED,//3Reservedspace
PIE_RESERVED,//4Reservedspace
PIE_RESERVED,//5Reservedspace
PIE_RESERVED,//6Reservedspace
PIE_RESERVED,//7Reservedspace
PIE_RESERVED,//8Reservedspace
PIE_RESERVED,//9Reservedspace
PIE_RESERVED,//10Reservedspace
PIE_RESERVED,//11Reservedspace
PIE_RESERVED,//12Reservedspace
//Non-PeripheralInterrupts
INT13_ISR,//XINT13orCPU-Timer1
INT14_ISR,//CPU-Timer2
DATALOG_ISR,//Datalogginginterrupt
RTOSINT_ISR,//RTOSinterrupt
EMUINT_ISR,//Emulationinterrupt
NMI_ISR,//Non-maskableinterrupt
ILLEGAL_ISR,//IllegaloperationTRAP
USER1_ISR,//UserDefinedtrap1
USER2_ISR,//UserDefinedtrap2
USER3_ISR,//UserDefinedtrap3
USER4_ISR,//UserDefinedtrap4
USER5_ISR,//UserDefinedtrap5
USER6_ISR,//UserDefinedtrap6
USER7_ISR,//UserDefinedtrap7
USER8_ISR,//UserDefinedtrap8
USER9_ISR,//UserDefinedtrap9
USER10_ISR,//UserDefinedtrap10
USER11_ISR,//UserDefinedtrap11
USER12_ISR,//UserDefinedtrap12
//Group1PIEVectors
SEQ1INT_ISR,//1.1ADC
SEQ2INT_ISR,//1.2ADC
rsvd_ISR,//1.3
XINT1_ISR,//1.4
XINT2_ISR,//1.5
ADCINT_ISR,//1.6ADC
TINT0_ISR,//1.7Timer0
WAKEINT_ISR,//1.8WD,LowPower
//Group2PIEVectors
EPWM1_TZINT_ISR,//2.1EPWM-1TripZone
EPWM2_TZINT_ISR,//2.2EPWM-2TripZone
EPWM3_TZINT_ISR,//2.3EPWM-3TripZone
EPWM4_TZINT_ISR,//2.4EPWM-4TripZone
EPWM5_TZINT_ISR,//2.5EPWM-5TripZone
EPWM6_TZINT_ISR,//2.6EPWM-6TripZone
rsvd_ISR,//2.7
rsvd_ISR,//2.8
//Group3PIEVectors
EPWM1_INT_ISR,//3.1EPWM-1Interrupt
EPWM2_INT_ISR,//3.2EPWM-2Interrupt
EPWM3_INT_ISR,//3.3EPWM-3Interrupt
EPWM4_INT_ISR,//3.4EPWM-4Interrupt
EPWM5_INT_ISR,//3.5EPWM-5Interrupt
EPWM6_INT_ISR,//3.6EPWM-6Interrupt
rsvd_ISR,//3.7
rsvd_ISR,//3.8
//Group4PIEVectors
ECAP1_INT_ISR,//4.1ECAP-1
ECAP2_INT_ISR,//4.2ECAP-2
ECAP3_INT_ISR,//4.3ECAP-3
ECAP4_INT_ISR,//4.4ECAP-4
ECAP5_INT_ISR,//4.5ECAP-5
ECAP6_INT_ISR,//4.6ECAP-6
rsvd_ISR,//4.7
rsvd_ISR,//4.8
//Group5PIEVectors
EQEP1_INT_ISR,//5.1EQEP-1
EQEP2_INT_ISR,//5.2EQEP-2
rsvd_ISR,//5.3
rsvd_ISR,//5.4
rsvd_ISR,//5.5
rsvd_ISR,//5.6
rsvd_ISR,//5.7
rsvd_ISR,//5.8
//Group6PIEVectors
SPIRXINTA_ISR,//6.1SPI-A
SPITXINTA_ISR,//6.2SPI-A
MRINTA_ISR,//6.3McBSP-A
MXINTA_ISR,//6.4McBSP-A
MRINTB_ISR,//6.5McBSP-B
MXINTB_ISR,//6.6McBSP-B
rsvd_ISR,//6.7
rsvd_ISR,//6.8
//Group7PIEVectors
DINTCH1_ISR,//7.1DMAchannel1
DINTCH2_ISR,//7.2DMAchannel2
DINTCH3_ISR,//7.3DMAchannel3
DINTCH4_ISR,//7.4DMAchannel4
DINTCH5_ISR,//7.5DMAchannel5
DINTCH6_ISR,//7.6DMAchannel6
rsvd_ISR,//7.7
rsvd_ISR,//7.8
//Group8PIEVectors
I2CINT1A_ISR,//8.1I2C
I2CINT2A_ISR,//8.2I2C
rsvd_ISR,//8.3
rsvd_ISR,//8.4
SCIRXINTC_ISR,//8.5SCI-C
SCITXINTC_ISR,//8.6SCI-C
rsvd_ISR,//8.7
rsvd_ISR,//8.8
//Group9PIEVectors
SCIRXINTA_ISR,//9.1SCI-A
SCITXINTA_ISR,//9.2SCI-A
SCIRXINTB_ISR,//9.3SCI-B
SCITXINTB_ISR,//9.4SCI-B
ECAN0INTA_ISR,//9.5eCAN-A
ECAN1INTA_ISR,//9.6eCAN-A
ECAN0INTB_ISR,//9.7eCAN-B
ECAN1INTB_ISR,//9.8eCAN-B
//Group10PIEVectors
rsvd_ISR,//10.1
rsvd_ISR,//10.2
rsvd_ISR,//10.3
rsvd_ISR,//10.4
rsvd_ISR,//10.5
rsvd_ISR,//10.6
rsvd_ISR,//10.7
rsvd_ISR,//10.8
//Group11PIEVectors
rsvd_ISR,//11.1
rsvd_ISR,//11.2
rsvd_ISR,//11.3
rsvd_ISR,//11.4
rsvd_ISR,//11.5
rsvd_ISR,//11.6
rsvd_ISR,//11.7
rsvd_ISR,//11.8
//Group12PIEVectors
XINT3_ISR,//12.1
XINT4_ISR,//12.2
XINT5_ISR,//12.3
XINT6_ISR,//12.4
XINT7_ISR,//12.5
rsvd_ISR,//12.6
LVF_ISR,//12.7
LUF_ISR,//12.8
};
这是中断目的向量表
structPIE_VECT_TABLE{
//Resetisneverfetchedfromthistable.
//Itwillalwaysbefetchedfrom0x3FFFC0in
//bootROM
PINTPIE1_RESERVED;
PINTPIE2_RESERVED;
PINTPIE3_RESERVED;
PINTPIE4_RESERVED;
PINTPIE5_RESERVED;
PINTPIE6_RESERVED;
PINTPIE7_RESERVED;
PINTPIE8_RESERVED;
PINTPIE9_RESERVED;
PINTPIE10_RESERVED;
PINTPIE11_RESERVED;
PINTPIE12_RESERVED;
PINTPIE13_RESERVED;
//Non-PeripheralInterrupts:
PINTXINT13;//XINT13/CPU-Timer1
PINTTINT2;//CPU-Timer2
PINTDATALOG;//Datalogginginterrupt
PINTRTOSINT;//RTOSinterrupt
PINTEMUINT;//Emulationinterrupt
PINTXNMI;//Non-maskableinterrupt
PINTILLEGAL;//IllegaloperationTRAP
PINTUSER1;//UserDefinedtrap1
PINTUSER2;//UserDefinedtrap2
PINTUSER3;//UserDefinedtrap3
PINTUSER4;//UserDefinedtrap4
PINTUSER5;//UserDefinedtrap5
PINTUSER6;//UserDefinedtrap6
PINTUSER7;//UserDefinedtrap7
PINTUSER8;//UserDefinedtrap8
PINTUSER9;//UserDefinedtrap9
PINTUSER10;//UserDefinedtrap10
PINTUSER11;//UserDefinedtrap11
PINTUSER12;//UserDefinedtrap12
//Group1PIEPeripheralVectors:
PINTSEQ1INT;
PINTSEQ2INT;
PINTrsvd1_3;
PINTXINT1;
PINTXINT2;
PINTADCINT;//ADC
PINTTINT0;//Timer0
PINTWAKEINT;//WD
//Group2PIEPeripheralVectors:
PINTEPWM1_TZINT;//EPWM-1
PINTEPWM2_TZINT;//EPWM-2
PINTEPWM3_TZINT;//EPWM-3
PINTEPWM4_TZINT;//EPWM-4
PINTEPWM5_TZINT;//EPWM-5
PINTEPWM6_TZINT;//EPWM-6
PINTrsvd2_7;
PINTrsvd2_8;
//Group3PIEPeripheralVectors:
PINTEPWM1_INT;//EPWM-1
PINTEPWM2_INT;//EPWM-2
PINTEPWM3_INT;//EPWM-3
PINTEPWM4_INT;//EPWM-4
PINTEPWM5_INT;//EPWM-5
PINTEPWM6_INT;//EPWM-6
PINTrsvd3_7;
PINTrsvd3_8;
//Group4PIEPeripheralVectors:
PINTECAP1_INT;//ECAP-1
PINTECAP2_INT;//ECAP-2
PINTECAP3_INT;//ECAP-3
PINTECAP4_INT;//ECAP-4
PINTECAP5_INT;//ECAP-5
PINTECAP6_INT;//ECAP-6
PINTrsvd4_7;
PINTrsvd4_8;
//Group5PIEPeripheralVectors:
PINTEQEP1_INT;//EQEP-1
PINTEQEP2_INT;//EQEP-2
PINTrsvd5_3;
PINTrsvd5_4;
PINTrsvd5_5;
PINTrsvd5_6;
PINTrsvd5_7;
PINTrsvd5_8;
//Group6PIEPeripheralVectors:
PINTSPIRXINTA;//SPI-A
PINTSPITXINTA;//SPI-A
PINTMRINTB;//McBSP-B
PINTMXINTB;//McBSP-B
PINTMRINTA;//McBSP-A
PINTMXINTA;//McBSP-A
PINTrsvd6_7;
PINTrsvd6_8;
//Group7PIEPeripheralVectors:
PINTDINTCH1;//DMA
PINTDINTCH2;//DMA
PINTDINTCH3;//DMA
PINTDINTCH4;//DMA
PINTDINTCH5;//DMA
PINTDINTCH6;//DMA
PINTrsvd7_7;
PINTrsvd7_8;
//Group8PIEPeripheralVectors:
PINTI2CINT1A;//I2C-A
PINTI2CINT2A;//I2C-A
PINTrsvd8_3;
PINTrsvd8_4;
PINTSCIRXINTC;//SCI-C
PINTSCITXINTC;//SCI-C
PINTrsvd8_7;
PINTrsvd8_8;
//Group9PIEPeripheralVectors:
PINTSCIRXINTA;//SCI-A
PINTSCITXINTA;//SCI-A
PINTSCIRXINTB;//SCI-B
PINTSCITXINTB;//SCI-B
PINTECAN0INTA;//eCAN-A
PINTECAN1INTA;//eCAN-A
PINTECAN0INTB;//eCAN-B
PINTECAN1INTB;//eCAN-B
//Group10PIEPeripheralVectors:
PINTrsvd10_1;
PINTrsvd10_2;
PINTrsvd10_3;
PINTrsvd10_4;
PINTrsvd10_5;
PINTrsvd10_6;
PINTrsvd10_7;
PINTrsvd10_8;
//Group11PIEPeripheralVectors:
PINTrsvd11_1;
PINTrsvd11_2;
PINTrsvd11_3;
PINTrsvd11_4;
PINTrsvd11_5;
PINTrsvd11_6;
PINTrsvd11_7;
PINTrsvd11_8;
//Group12PIEPeripheralVectors:
PINTXINT3;//Externalinterrupt
PINTXINT4;
PINTXINT5;
PINTXINT6;
PINTXINT7;
PINTrsvd12_6;
PINTLVF;//Latchedoverflow
PINTLUF;//Latchedunderflow
};
//---------------------------------------------------------------------------
//PIEInterruptVectorTableExternalReferences&FunctionDeclarations:
//
externstructPIE_VECT_TABLEPieVectTable;
实例说明
voidmain(void)
{
Uint16i;
InitSysCtrl();//初始化系统
DINT;
InitPieCtrl();//初始化PIE
IER=0x0000;
IFR=0x0000;
InitPieVectTable();//实始化中断向量表
EALLOW;
PieVectTable.DINTCH1=&local_DINTCH1_ISR;//这个对就是INT7.Y的第一个位DMA
EDIS;
IER=M_INT7;//M_INT7=0x0040=0100,0000
//打开INT7.Y这个很重要
EnableInterrupts();
}
voidEnableInterrupts()
{
//EnablethePIE
PieCtrlRegs.PIECTRL.bit.ENPIE=1;
//EnablesPIEtodriveapulseintotheCPU
PieCtrlRegs.PIEACK.all=0xFFFF;
//EnableInterruptsattheCPUlevel
EINT;
}
//INT7.1
interruptvoidlocal_DINTCH1_ISR(void)//DMAChannel1
{
//ToreceivemoreinterruptsfromthisPIEgroup,acknowledgethisinterrupt
PieCtrlRegs.PIEACK.all|=PIEACK_GROUP7;
//Nexttwolinesfordebugonlytohalttheprocessorhere
//RemoveafterinsertingISRCode
asm("ESTOP0");
for(;;);
}
SCI串口的一般用法
步骤1初始化IO口为串口
voidInitSciaGpio()
{
EALLOW;
GpioCtrlRegs.GPBPUD.bit.GPIO36=0;//SCIRXDA
GpioCtrlRegs.GPBPUD.bit.GPIO35=0;//SCITXDA
GpioCtrlRegs.GPBQSEL1.bit.GPIO36=3;//SCIRXDA
GpioCtrlRegs.GPBMUX1.bit.GPIO35=1;
GpioCtrlRegs