J-Link + ADS + mini2440调试中断问题

 在RAM中在线调试,一般什么跑马灯啊,蜂鸣器的程序都可以。今天调一个中断的程序就不行。
   就是一个简单的外部中断,通过按键获取外部中断,可是中断一直进不去(通过设置断点,按键按了也不能跳进去)。找了网上的一些资料看,说要设置中断向量?
   “因为调试过程中没有开中断,开中断则要正确设置异常向量。”这句话小弟有点不太理解。
   下面我把代码贴上来,大伙帮我看看,感谢致敬!

#include "def.h"                    //所要包含的头文件
#include "option.h"
#include "2440addr.h"     
#include "2440lib.h"
#include "2440slib.h"      
//**************************************************
#define KEY1 (1 << 0)//GPG0,EINT8
#define KEY2 (1 << 3)//GPG3,EINT11
#define KEY3 (1 << 5)//GPG5,EINT13
#define KEY4 (1 << 6)//GPG6,EINT14

#define LED1 (1 << 5)//GPB5
#define LED2 (1 << 6)//GPB6
#define LED3 (1 << 7)//GPB7
#define LED4 (1 << 8)//GPB8

void dely(U32 tt)                //延时子函数
{
   U32 i;
   for(;tt>0;tt--)
   {
     for(i=0;i<10000;i++){}
   }
}

void __irq IRQ_KEY(void)   
{

ClearPending(BIT_EINT8_23);
rEINTPEND = 0xFFFFFFFF;
rGPGCON &= ~((3<<0)|(3<<6)|(3<<10)|(3<<12));  //设置为输入
   //采取位判断,判断是0还是1.
    if(rGPGDAT & KEY1)   //判断按键1是否按下
      { rGPBDAT |= LED1;    //否,LED1灭
       // dely(120);
       }
    else   
      { rGPBDAT &= ~LED1;    //是 LED1亮
       // dely(220);
      }
      
      
    if(rGPGDAT & KEY2)   //判断按键2是否按下
      { rGPBDAT |= LED2;    //00001101左移5位,LED2亮
       // dely(120);
    }
    else 
      { rGPBDAT &= ~LED2;    
      // dely(220);
      }
   
   
    if(rGPGDAT & KEY3)   //判断按键3是否按下
      { rGPBDAT |= LED3;    //00001011左移5位,LED3亮
      //  dely(120);
      }
    else
         { rGPBDAT &= ~LED3;    //是 LED1亮
       // dely(220);
      }
         
         
         
    if(rGPGDAT & KEY4)   //判断按键4是否按下
      { rGPBDAT |= LED4;    //00000111左移5位,LED4亮
       // dely(120);
      }
    else  
          { rGPBDAT &= ~LED4;    //是 LED4亮
      //  dely(220);
      }
          
 rGPGCON |= ((2<<0)|(2<<6)|(2<<10)|(2<<12)); //GPG配置第二功能,外部中断功能 
}

void EINT_Init(void)
{
    rGPGCON &= ~((3<<0)|(3<<6)|(3<<10)|(3<<12));  //设置为输入
rGPGCON |= ((2<<0)|(2<<6)|(2<<10)|(2<<12)); //GPG配置第二功能,外部中断功能 

rEXTINT1 &=~((7<<0)|(7<<12)|(7<<20)|(7<<24))|((6<<0)|(6<<12)|(6<<20)|(6<<24));
//EINT8,11,13,14 下降沿中断
pISR_EINT8_23 = (U32)IRQ_KEY;
rPRIORITY = 0x00000000;
ClearPending(BIT_EINT8_23); //清除中断标志
rEINTPEND = 0xFFFFFFFF;
rINTMOD = 0x00000000; //所有中断均为IRQ中断
rINTMSK &= (~BIT_EINT8_23); //使能外部中断8_23
rEINTMASK &= ~((1<<8)|(1<<11)|(1<<13)|(1<<14)); //使能外部中断8,11,13,14

}

void Main(void)        //主函数
{
          //这里只讨论按键与IO口的使用,其余的做成子函数,直接调用,可暂时不深究。
U8 key;
U32 mpll_val=0;

  
mpll_val = (92<<12)|(1<<4)|(1);

ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);   //设置主时钟频率405MHZ
ChangeClockDivider(key, 12);      //设置时钟驱动频率的函数   
    
    MMU_DisableICache();    //对内存管理单元MMU的设置
    MMU_DisableDCache(); 
                                                 
    rGPBCON = rGPBCON&(~(0xFF<<5))|(0x55<<5);    //设置为输出GPB5,6,7,8

    EINT_Init();
    while(1);     
  
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值