LPC3250中的IRQ中断

来源:互联网 发布:皇图龙源进阶数据 编辑:程序博客网 时间:2024/05/22 09:01

LPC3250中断控制器有3个,分别是主中断控制器(MIC_ER)、子中断控制1(SIC1)和子中断控制2(SIC2)。

对这三个中断控制器的理解:

      MIC_ER通过特定位来控制所有中断的使能。其中MIC_ER[31:30]控制Sub2FIQ、Sub1FIQ,MIC_ER[1:0]控制Sub2IRQ、Sub1IRQ。而MIC_ER、SIC1及SIC2分别控制着不同的中断源。3个控制器控制的中断源一共73个中断源(3*32-6-8-9)。

      中断初始化,以SIC2IRQ中断为例:

       MIC_ER=0X02   ;  //主中断控制器设置中断为SIC2IRQ中断

       SIC2_ER=(1<<10); //设置SIC2_ER[10]位中断

       MIC_APR=0X00;    //  低电平或者下降沿有效

       SIC2_APR=0X00;   //  低电平或者下降沿有效

       MIC_ATR=0X00;     //   电平触发

       SIC2_ATR=(1<<10);  // 边沿触发

       MIC_ITR=0X00;      //  设为IRQ中断

       SIC_ITR=0X00;      //  设为IRQ中断

       SIC_RSR=(1<<10);  //  清除中断,仅对边沿触发有效

 

之后可以设置中断响应函数,比如蜂鸣器鸣叫函数:

      void  IRQ_fengming(void)

       {

          /*

             *蜂鸣器鸣叫

         */

        }

最后就是主函数

       int main()

       {

             Init_IRQ();

             while(1)

              {

                   if(....)       //中断触发条件

                     {

                         IRQ_fengming();

                       }

                }

       

          }

 

原创粉丝点击