您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 【已解决】[求助]BF512 IO中断 一直中断
本帖共有733个阅读者
发表帖子 发表投票 回复主题
【已解决】[求助]BF512 IO中断 一直中断
webom2008(论坛新手)
webom2008
头衔:社区公民
帮派:无帮无派
帖数:22
金钱:287
积分:29
注册时间:2013/9/9
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
【已解决】[求助]BF512 IO中断 一直中断
在调试BF512板子时,PH1->Input上升沿中断(函数IVG11_ISR),PH0->Output模式。只要操作PH0=1时,不知为啥一直产生中断。
理论上,我配置PH0已经为Output模式,且input buffer disable。但是PH0=1时,就一直进入中断函数IVG11_ISR没出来。

代码如下:

只要运行ph0_high()函数,就一直停留在中断处理函数中。若修改PH0=0,则可以跳出中断。真的搞不懂,请高手指点指点,谢谢!

01.端口初始化
上传的图片
  20139291825312.png [ 26.67 KB 838×521 ] (缩略时请点击查看原图)

 

02.中断函数
上传的图片
  201392918254812.png [ 26.72 KB 736×775 ] (缩略时请点击查看原图)

 

03.异常中断后,修改PH0值可以恢复正常
上传的图片
  201392918255812.png [ 58.63 KB 606×334 ] (缩略时请点击查看原图)

 

04.正常中断PH1
上传的图片
  20139291826712.png [ 46.30 KB 394×284 ] (缩略时请点击查看原图)

 

05.断点在56行的寄存器状态
上传的图片
  201392919361802.png [ 6.89 KB 596×296 ] (缩略时请点击查看原图)

 



「该帖子被 webom2008 在 2013-09-29 19:36:28 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/9/29 18:26:57
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

代码第20行,既然为输出接口,就没必要配置中断特性。

你在配置这个中断时,需注意配置的值会不会清除掉你之前的配置值。

代码第50行,这个条件永远不会满足,因为你的判断是整个寄存器,而不是这个寄存器的某一位。你需要限制到你判断的位。

你看你代码是否能跑到第52行,仍然需注意你的清除会不会影响其他位。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/9/30 11:24:01
webom2008(论坛新手)
webom2008
头衔:社区公民
帮派:无帮无派
帖数:22
金钱:287
积分:29
注册时间:2013/9/9
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
感谢andy的答复,问题找到了。正如你所说的,第50行,我改成:
if (ulPortH_Reg & PH1)
即可顺利退出中断,否则会发现停留在中断里面。

另外,对应20行、52行,你所提到的“注意会不会影响其他位”问题。
看用户手册,所说的*_CLEAR、*_SET都是针对某bit操作的,例如PH0则是往*pPORTHIO_CLEAR写0x0001(写1有效,写0没效)。理论上不会影响到其他位。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/10/8 10:09:05
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159308 Call, 1 Queries, Processed in 0.062012 second(s),