主题 : 麻烦各位大侠给治治:外中断程序,只能响应一次。 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 21269
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
综合积分: 8 分
注册时间: 2010-05-13
最后登录: 2010-06-20
楼主  发表于: 2010-06-05 22:07

 麻烦各位大侠给治治:外中断程序,只能响应一次。


好多天都没结果,只好厚着脸皮问了。
arm2440裸奔 开发工具:ADS1.2
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
    
void ee_isr (void)   //中断服务函数
{
unsigned int y;
rINTPND=0x00000001;  
rSRCPND=0x00000001;        
rGPBDAT=0x3f1;  
for(y=0;y<1000000;y++);  
rGPBDAT=0x3fe;  
rGPFCON=0x0002;     //重置按键K4为EINT0中断  
  
}

void Main(void)
{  
rGPBCON=0x55555;
rGPFCON=0x0002;     //设置按键K4为EINT0中断
pISR_EINT0= (unsigned int) ee_isr ;//中断服务函数名
rEXTINT0=0x0;  //设置为低电平触发  
rINTPND=0x00000001; //中断挂起寄存器;1为请求;
rSRCPND=0x00000001; //中断源挂起寄存器1为请求;
rINTMOD=0x00000000; //中断模式寄存器0为IRQ模式;
rINTMSK=0xFFFFFFFe; //中断屏蔽寄存器0为允许;  
rPRIORITY=0x000001; //中断优先级寄存器;
  
  while(1)
{unsigned int i;
   rINTPND=0x00000001;
  rGPBDAT=0x12e;
   for(i=0;i<800000;i++);
  rGPBDAT=0x0de;
   for(i=0;i<800000;i++);
}
}
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
1楼  发表于: 2010-06-07 11:09
本版有现成的例子,你先找出来参考对比一下有什么异同。。。
级别: 新手上路
UID: 21269
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
综合积分: 8 分
注册时间: 2010-05-13
最后登录: 2010-06-20
2楼  发表于: 2010-06-07 22:26

 回 1楼(ofourme) 的帖子

本版的例子也早就看过了,不然也不会冒昧地问。也许是本人太愚钝了。没看出个所以然来。
唉!毕竟还是菜鸟啊!望侠客抽点时间指点迷津,有劳有劳!!!
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
3楼  发表于: 2010-06-07 22:45

 回 2楼(不断实践) 的帖子

看这个例子,里面的附近可以运行。
http://www.aiothome.net/read.php?tid-6331-fpage-2.html
级别: 新手上路
UID: 21269
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
综合积分: 8 分
注册时间: 2010-05-13
最后登录: 2010-06-20
4楼  发表于: 2010-06-08 10:33
附近的内容跟乱码差不多,不知道大虾看过没用?困惑!!!
级别: 侠客
UID: 4843
精华: 0
发帖: 102
金钱: 810 两
威望: 554 点
综合积分: 204 分
注册时间: 2009-03-31
最后登录: 2012-11-14
5楼  发表于: 2010-06-08 12:31
rpwt?