基于TMS320F28335外部中断配置过程

void main(void)
{
// Step 1. Initialize System Control:
  InitSysCtrl();
// Step 3. Clear all interrupts and initialize PIE vector table:
  DINT;  //禁止全局中断
  InitPieCtrl();//初始化PIE模块
//清除CPU寄存器
  IER = 0x0000;
轮胎标签  IFR = 0x0000;
//初始化中断服务表
  InitPieVectTable();
 
//指向PIE向量。表注意EALLOWEDIS的使用,要不中间写的都无效的
  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寄存器GPIOXINT1SELGPIO15作为Xint1中断
  GpioIntRegs.GPIOXINT2SEL.bit.GPIOSEL = 1;  // XINT2 is GPIO1
  //配置GPIO寄存器GPIOXINT2SELGPIO1作为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

本文发布于:2024-09-23 06:35:11,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/344531.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:中断   全局   轮胎   注意
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议