void main(void)
{
// Step 1. Initialize System Control:
InitSysCtrl();
// Step 3. Clear all interrupts and initialize PIE vector table:
InitPieCtrl();//初始化PIE模块
//清除CPU寄存器
IER = 0x0000;
//初始化中断服务表
InitPieVectTable();
//指向PIE向量。表注意EALLOW和EDIS的使用,要不中间写的都无效的 EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.XINT1 = &xint1_isr;
PieVectTable.XINT2 = &xint2_isr;
EDIS; // This is needed to disable write to EALLOW protected registers
// 清除计数
Xint1Count = 0; // Count Xint1 interrupts
Xint2Count = 0; // Count XINT2 interrupts
LoopCount = 0; // Count times through idle loop
// Enable Xint1 and XINT2 in the PIE: Group 1 interrupt 4 & 5
// Enable int1 which is connected to WAKEINT:
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
PieCtrlRegs.PIEIER1.bit.INTx4 = 1; // Enable PIE Gropu 1 INT4
PieCtrlRegs.PIEIER1.bit.INTx5 = 1; // Enable PIE Gropu 1 INT5
IER |= M_INT1; // Enable CPU int1
EINT;//使能全局中断 // Enable Global Interrupts
//初始化GPIO
防辐射材料
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0; // GPI15 修改
GpioCtrlRegs.GPADIR.bit.GPIO15 = 0; // input
GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 0; // Xint1 Synch to SYSCLKOUT only
tz15 GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO1
GpioCtrlRegs.GPADIR.bit.GPIO1 = 0; // input
GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 2; // XINT2 Qual using 6 samples
GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = 0xFF; // Each sampling window is 510*SYSCLKOUT
EDIS;
//配置GPIO中断
EALLOW;
GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 15;
//配置GPIO寄存器GPIOXINT1SEL把GPIO15作为Xint1中断
GpioIntRegs.GPIOXINT2SEL.bit.GPIOSEL = 1; // XINT2 is GPIO1
//配置GPIO寄存器GPIOXINT2SEL把GPIO1作为Xint2中断
EDIS;
// Configure XINT1
XIntruptRegs.XINT1CR.bit.POLARITY = 0; // Falling edge interrupt
XIntruptRegs.XINT2CR.bit.POLARITY = 1; // Rising edge interrupt
// Enable XINT1 and XINT2
XIntruptRegs.XINT1CR.bit.ENABLE = 1; // Enable Xint1
XIntruptRegs.XINT2CR.bit.ENABLE = 1; // Enable XINT2
// Step 6. IDLE loop:
for(;;)
正火工艺
{
}
}
interrupt void xint1_isr(void)
{
GpioDataRegs.GPBCLEAR.all = 0x4; // GPIO34 is low
Xint1Count++;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
interrupt void xint2_isr(void)
{
GpioDataRegs.GPBCLEAR.all = 0x4; // GPIO34 is low
Xint2Count++;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
---------------------------------------------------------------------空调消声器
---------------------------------------------------------------------
void InitPieCtrl(void)
{
// Disable Interrupts at the CPU level:
DINT;
// Disable the PIE
PieCtrlRegs.PIECTRL.bit.ENPIE = 0;
// Clear all PIEIER registers:
PieCtrlRegs.PIEIER1.all = 0;
PieCtrlRegs.PIEIER2.all = 0;
PieCtrlRegs.PIEIER3.all = 0;
PieCtrlRegs.PIEIER4.all = 0;
PieCtrlRegs.PIEIER5.all = 0;
PieCtrlRegs.PIEIER6.all = 0;
PieCtrlRegs.PIEIER7.all = 0;
PieCtrlRegs.PIEIER8.all = 0;
PieCtrlRegs.PIEIER9.all = 0;
PieCtrlRegs.PIEIER10.all = 0;
PieCtrlRegs.PIEIER11.all = 0;
PieCtrlRegs.PIEIER12.all = 0;
// Clear all PIEIFR registers:
PieCtrlRegs.PIEIFR1.all = 0;
PieCtrlRegs.PIEIFR2.all = 0;
PieCtrlRegs.PIEIFR3.all = 0;
PieCtrlRegs.PIEIFR4.all = 0;
PieCtrlRegs.PIEIFR5.all = 0;
PieCtrlRegs.PIEIFR6.all = 0;
PieCtrlRegs.PIEIFR7.all = 0;
PieCtrlRegs.PIEIFR8.all = 0;
PieCtrlRegs.PIEIFR9.all = 0;
PieCtrlRegs.PIEIFR10.all = 0;
PieCtrlRegs.PIEIFR11.all = 0;
PieCtrlRegs.PIEIFR12.all = 0;
}
//---------------------------------------------------------------------------
// EnableInterrupts:
//---------------------------------------------------------------------------催眠器
// This function enables the PIE module and CPU interrupts
//
void EnableInterrupts()
{
// Enable the PIE
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
// Enables PIE to drive a pulse into the CPU
PieCtrlRegs.PIEACK.all = 0xFFFF;
// Enable Interrupts at the CPU level
EINT;
}
const struct PIE_VECT_TABLE PieVectTableInit =
{
PIE_RESERVED, // 0 Reserved space
PIE_RESERVED, // 1 Reserved space
PIE_RESERVED, // 2 Reserved space