J-Link + ADS + mini2440调试中断问题
来源:互联网 发布:飞凡网络线路 编辑:程序博客网 时间:2024/06/05 02:00
在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);
}
- J-Link + ADS + mini2440调试中断问题
- JLINK+ADS+mini2440配置////配置J-Link为mini2440烧写bootloader
- JLINK+ADS+mini2440配置////配置J-Link为mini2440烧写bootloade
- 使用J-link在ADS下调试S3C6410裸机程序
- ADS使用J-LINK调试之配置方法
- 使用J-LINK烧写mini2440 NORFLASH
- mini2440与J-Link的接口连线
- 使用J-Link下载bootloader到mini2440
- J-Link不能连接EFM32调试的问题
- SEGGER J-Link V5.10-Reprogramming flash KEIL调试问题
- J-Link clone问题
- mini2440裸机程序时ADS调试开始全速运行不进main断点问题
- 用J-Link调试bootloader
- 使用J-link调试内核
- 用J-Link调试bootloader
- J-link在线调试方法
- ADS 调试问题
- ADS调试问题
- [礼仪大赛策划方案]图:如何打造一场精美极致的礼仪大赛?PPT动态柱状图,如何动态显示?Flash如何渲染PPT界面呢?
- 发现一个名为“Douyu”的国人项目
- 091115(星期天)CTreeCtrl::Create
- Detour开发包之API拦截技术(转)
- JLINK+ADS+mini2440配置////配置J-Link为mini2440烧写bootloader
- J-Link + ADS + mini2440调试中断问题
- 《特定领域应用框架:行业的框架体验》学习笔记
- 091116(星期一)循环变量被溢出导致死循环的问题
- SOA可研究方向
- Redhat as 4 中创建 LVM 逻辑卷
- 我的杭电时代——考研篇
- 正则表达式使用详解
- Visual C++ 6.0 集成开发环境
- X记