2649|2

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于ARM9的按键中断 [复制链接]

最简单的按键中断控制led亮灭,调了将近两天还是出不来。求大神们拯救。
minni2440的板子

#include"2440addr.h"
#define U32 unsigned int
static void __irq Key_ISR(void);

delay()
{
volatile int i;
for(i=0;i<=0x10000;i++);
}


int main()
{
rINTPND=rINTPND;
rSRCPND=rSRCPND;

rINTMSK=0XFFFFdF;
rINTMOD=0;

rGPGCON &= ~(0x3<<0); /*set eint8 as interrupt*/
rGPGCON |= (0x2<<0);

rEXTINT1 &= ~(0xF<<0); //下降沿触发
rEXTINT1|=0X2;


rEINTPEND |= (1<<8); /*外部中断待定寄存器*/


rEINTMASK=0xfffeff; /*外部中断屏蔽寄存器*/
pISR_EINT8_23=(U32)Key_ISR;


rGPBCON|=0x400; //配置led1
rGPBCON&=~0x800;


rGPBDAT&=~0x20;

while(1);

}


static void __irq Key_ISR(void)
{
if(rEINTPEND&(1<<8))
{

rGPBDAT=~rGPBDAT; //led取反
rEINTPEND |= 1<< 8;
ClearPending(BIT_EINT8_23);
}
}
此帖出自ARM技术论坛

最新回复

我的中断系统已经通了,不知道你问题出哪了。 中断顺利跑到你ISR中,有很多“关节”要打通的。 1.产生中断源的外设要正常工作,你的外部中断INT的时钟开启了没。(INT模块供电自然不用管)   检查CLKCON寄存器。INT那几个管脚设置好了吗?INT中断设置好了吗? 2.中断模块的有些寄存器需要清除的清除的,要用到的中断,模式设置好,注意不能把要用的中断屏蔽了。 3.1和2做好了,外设应该是可以产生中断了。接下来还需要调用系统提供的函数,开启CPSR中的中断位。也就是总中断要开启。 4.到这里,中断应该是能跑到异常向量表中了,调试的时候,把断点设置到这里,看看INT的外部引发中断,程序能不能跑到这里,不能的话,继续查前面1、2、3。可以的话,继续往下查。 5.程序能跑到异常向量表的FIQ或IRQ后,就看这里的汇编怎么写的,它最后怎么跳转到你的ISR中。 我这里没用__irq来处理ISR,我知道__isr是做了什么事,有什么效果,我这里的汇编跳转都是自己做的,自己保存了需要保存的寄存器,所以我的ISR函数用的void HandleISR(void),这样的写法。中断能正常运行。 我测试了Timer4的中断,正在添加UART0的功能,外部中断没用做。  详情 回复 发表于 2014-4-24 10:18
点赞 关注
 

回复
举报

436

帖子

5

TA的资源

五彩晶圆(初级)

沙发
 
是进不了中断么?
我已经在重写S3C2440的裸机代码了,过几天就要开始搞中断了,可以顺便帮你看看
此帖出自ARM技术论坛
 
 
 

回复

436

帖子

5

TA的资源

五彩晶圆(初级)

板凳
 
我的中断系统已经通了,不知道你问题出哪了。

中断顺利跑到你ISR中,有很多“关节”要打通的。
1.产生中断源的外设要正常工作,你的外部中断INT的时钟开启了没。(INT模块供电自然不用管)
  检查CLKCON寄存器。INT那几个管脚设置好了吗?INT中断设置好了吗?
2.中断模块的有些寄存器需要清除的清除的,要用到的中断,模式设置好,注意不能把要用的中断屏蔽了。
3.1和2做好了,外设应该是可以产生中断了。接下来还需要调用系统提供的函数,开启CPSR中的中断位。也就是总中断要开启。
4.到这里,中断应该是能跑到异常向量表中了,调试的时候,把断点设置到这里,看看INT的外部引发中断,程序能不能跑到这里,不能的话,继续查前面1、2、3。可以的话,继续往下查。
5.程序能跑到异常向量表的FIQ或IRQ后,就看这里的汇编怎么写的,它最后怎么跳转到你的ISR中。
我这里没用__irq来处理ISR,我知道__isr是做了什么事,有什么效果,我这里的汇编跳转都是自己做的,自己保存了需要保存的寄存器,所以我的ISR函数用的void HandleISR(void),这样的写法。中断能正常运行。

我测试了Timer4的中断,正在添加UART0的功能,外部中断没用做。
此帖出自ARM技术论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表