原创 [博客大赛]S3C6410中断控制,基于OK6410A裸机按键中断程序(4)无法进中断

2014-4-20 14:56 1017 11 11 分类: MCU/ 嵌入式 文集: S3C6410

S3C6410中断控制,基于OK6410A裸机按键中断程序4-无法进入中断

经过前面的准备,0K6410的按键中断基本搞定了,但是还有一个地方被我们大家遗漏了,于是我跟众多网友一样,停滞在这里,调不通按键中断了,没办法啊,中断就是不响应。

 

于是又回到了一开始埋下的伏笔那,S3C6410的中断响应流程那,外设(GPIO)——》EINT——》VIC——?,因此对应的我们编程序也就是外设配置——EINT配置——VIC配置——?,这个问号处,是被我们忽视的地方。(此处各种上网查找,也有好多网友给出了正确答案,这里不一一致谢了哈,反正是各种实验哦)

 

下面是S3C6410应用笔记(apnv1.0)中断部分的截图,通过图我们发现,第一部分,我们没有做啊,即使能VIC接口(enable vic port)。当然还有另外一个方法,不太常用,一般都用这个调用VIC PORT

20140420145600425001.png

按照笔记,使能VIC PORT,这里给出了一段汇编代码,尼玛,汇编不太会啊,这个放在哪儿呢,如果放在C程序中,需要内嵌汇编,使用asm又报错,没能解决,参考网上,有人放在了启动代码中,果断复制到启动代码中。

;------------------------------------

;     Enable VIC Port

;------------------------------------

             mrc p15,0,r0,c1,c0,0

                   orr r0,r0,#(1<<24)

                   mcr p15,0,r0,c1,c0,0

 

到了这里,好多网友都运行成功了,可是我这里还是没有运行成功,这又让我很郁闷,最终在网上众多博客中,找到了一篇http://blog.csdn.net/tankai19880619/article/details/8310050

,他里面另外还有一段汇编,使能IRQ,我把这段汇编copy到启动代码中,经过尝试,成功了,哈哈,虽然他博客中写的他自己没有调试成功。这个哥们的博客http://blog.csdn.net/yin138/article/details/6738917中也有类似的这段代码。

;------------------------------------

;     Enable IRQ

;------------------------------------               

                   mrs r0,cpsr

                bic r0,r0,#0x80

        msr cpsr_c,r0

就这样,最终按键中断的功能得以实现,真是一波三折啊。最终汇总一下整个流程:

外设(GPIO)——》EINT——》VIC——协处理器,因此对应的我们编程流程也就是

外设配置——EINT配置——VIC配置——使能VIC PORT和使能IRQ(这里是我们不能进中断的很大原因,好多人都跟我一样死在这里了)。

 

由于对汇编不是很了解,以上有不当之处,请指正和谅解。

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /3 下一条