打印

S3C2410 不进外部中断程序 请指教

[复制链接]
2482|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
skylock|  楼主 | 2008-2-16 12:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码:
int Main()
{

    SetClockDivider(1, 1);
    SetSysFclk(DFT_FCLK_VAL);

    rGPFCON=(rGPFCON|0x01)&0xFFFFFFFE; //GPF0设置为EINT0
    rGPFUP|=0x01;   //disable GPF0 pull up
    
    
    rEXTINT0 &= ~(7);    
    rEXTINT0 |=  (2);    //set eint0 falling edge int
    
    rINTMSK &= ~(1);     //允许外部中断0
    
    
    pISR_EINT0=(unsigned)Eint0Handler; //写入外部中断0中断服务子程序入口地址
    
    printf("main is running. ");
    
     while(1);
     
 }

 void __irq Eint0Handler(void)
{
    printf("EINT0 interrupt is running. ");
    //清除中断位
    //在实验中,如果不执行下面的函数(清除中断位
    //察看程序运行结果
    ClearPending(BIT_EINT0);

}

相关帖子

沙发
阿南| | 2008-2-16 12:53 | 只看该作者

看是否能进入irq入口0x18处,查看一下状态寄存器的irq位,

使用特权

评论回复
板凳
armecos| | 2008-2-16 13:32 | 只看该作者

按照万能中断模板写中断驱动

万能中断模板要求适合各种体系架构,覆盖所有中断操作,不能看见寄存器,符合人类思维习惯。
另,ISR里不能使用printf函数。

第三讲 ecos中断操作

使用特权

评论回复
地板
skylock|  楼主 | 2008-2-16 13:52 | 只看该作者

状态寄存器没有发生模式变化

使用特权

评论回复
5
skylock|  楼主 | 2008-2-16 15:43 | 只看该作者

已经进入IRQ 0x18,就是不进中断程序 为什么呢

使用特权

评论回复
6
dld2| | 2008-2-16 15:55 | 只看该作者

为什么呢

怎样从异常向量跑到中断程序的呢

使用特权

评论回复
7
skylock|  楼主 | 2008-2-16 16:29 | 只看该作者

怎么总是回复不成功呢?

按照理解上  0x18 入口处 应该是直接转跳到中断程序入口地址,可此处却不是。

使用特权

评论回复
8
skylock|  楼主 | 2008-2-16 17:22 | 只看该作者

继续

pISR_EINT0=(unsigned)Eint0Handler;】

这条指令实现了将中断程序入口地址写入外部中断指定的入口地址中。

pISR_EINT0 和IRQ的入口向量0x18如何联系在一起呢?

使用特权

评论回复
9
skylock|  楼主 | 2008-2-18 09:31 | 只看该作者

还是没有找到原因 请帮忙

使用特权

评论回复
10
dld2| | 2008-2-18 09:45 | 只看该作者

系统初始化程序问题

是从NAND flash启动还是从NOR flash启动。
是否有系统初始化程序。如果有,仔细看。
    该程序应实现系统基本寄存器设置、SDRAM、堆栈和中断处理程序的初始化。
    该程序解决了如何从IRQ的异常向量跳转到某具体IRQ中断服务程序的问题。
    该程序是否已经写入FLASH?

使用特权

评论回复
11
阿南| | 2008-2-18 11:54 | 只看该作者

楼主要仔细分析init.s文件中的中断部分,要充分理解它的执行

这个版块,以前也有不少该方面的帖子,可以找一下

使用特权

评论回复
12
skylock|  楼主 | 2008-2-18 12:01 | 只看该作者

搞定了,SDRAM启动,需要填充4K的SDRAM 谢谢各位帮忙!

使用特权

评论回复
13
bb88| | 2008-2-19 22:00 | 只看该作者

建议查查相关寄存器,会不会MASK了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

33

帖子

0

粉丝