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

[复制链接]
3602|12
 楼主| skylock 发表于 2008-2-16 12:08 | 显示全部楼层 |阅读模式
代码:<br />int&nbsp;Main()<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SetClockDivider(1,&nbsp;1);<br />&nbsp;&nbsp;&nbsp;&nbsp;SetSysFclk(DFT_FCLK_VAL);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;rGPFCON=(rGPFCON|0x01)&0xFFFFFFFE;&nbsp;//GPF0设置为EINT0<br />&nbsp;&nbsp;&nbsp;&nbsp;rGPFUP|=0x01;&nbsp;&nbsp;&nbsp;//disable&nbsp;GPF0&nbsp;pull&nbsp;up<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT0&nbsp;&=&nbsp;~(7);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rEXTINT0&nbsp;|=&nbsp;&nbsp;(2);&nbsp;&nbsp;&nbsp;&nbsp;//set&nbsp;eint0&nbsp;falling&nbsp;edge&nbsp;int<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rINTMSK&nbsp;&=&nbsp;~(1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//允许外部中断0<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;pISR_EINT0=(unsigned)Eint0Handler;&nbsp;//写入外部中断0中断服务子程序入口地址<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;main&nbsp;is&nbsp;running.
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;}<br /><br />&nbsp;void&nbsp;__irq&nbsp;Eint0Handler(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;EINT0&nbsp;interrupt&nbsp;is&nbsp;running.
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;//清除中断位<br />&nbsp;&nbsp;&nbsp;&nbsp;//在实验中,如果不执行下面的函数(清除中断位<br />&nbsp;&nbsp;&nbsp;&nbsp;//察看程序运行结果<br />&nbsp;&nbsp;&nbsp;&nbsp;ClearPending(BIT_EINT0);<br /><br />}
阿南 发表于 2008-2-16 12:53 | 显示全部楼层

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

  
armecos 发表于 2008-2-16 13:32 | 显示全部楼层

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

万能中断模板要求适合各种体系架构,覆盖所有中断操作,不能看见寄存器,符合人类思维习惯。<br />另,ISR里不能使用printf函数。<br /><br /><b>第三讲&nbsp;ecos中断操作</b>
 楼主| skylock 发表于 2008-2-16 13:52 | 显示全部楼层

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

  
 楼主| skylock 发表于 2008-2-16 15:43 | 显示全部楼层

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

  
dld2 发表于 2008-2-16 15:55 | 显示全部楼层

为什么呢

怎样从异常向量跑到中断程序的呢
 楼主| skylock 发表于 2008-2-16 16:29 | 显示全部楼层

怎么总是回复不成功呢?

按照理解上&nbsp;&nbsp;0x18&nbsp;入口处&nbsp;应该是直接转跳到中断程序入口地址,可此处却不是。
 楼主| skylock 发表于 2008-2-16 17:22 | 显示全部楼层

继续

pISR_EINT0=(unsigned)Eint0Handler;】<br /><br />这条指令实现了将中断程序入口地址写入外部中断指定的入口地址中。<br /><br />pISR_EINT0&nbsp;和IRQ的入口向量0x18如何联系在一起呢?
 楼主| skylock 发表于 2008-2-18 09:31 | 显示全部楼层

还是没有找到原因 请帮忙

  
dld2 发表于 2008-2-18 09:45 | 显示全部楼层

系统初始化程序问题

是从NAND&nbsp;flash启动还是从NOR&nbsp;flash启动。<br />是否有系统初始化程序。如果有,仔细看。<br />&nbsp;&nbsp;&nbsp;&nbsp;该程序应实现系统基本寄存器设置、SDRAM、堆栈和中断处理程序的初始化。<br />&nbsp;&nbsp;&nbsp;&nbsp;该程序解决了如何从IRQ的异常向量跳转到某具体IRQ中断服务程序的问题。<br />&nbsp;&nbsp;&nbsp;&nbsp;该程序是否已经写入FLASH?
阿南 发表于 2008-2-18 11:54 | 显示全部楼层

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

这个版块,以前也有不少该方面的帖子,可以找一下
 楼主| skylock 发表于 2008-2-18 12:01 | 显示全部楼层

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

  
bb88 发表于 2008-2-19 22:00 | 显示全部楼层

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

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

本版积分规则

13

主题

33

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部