打印

IO口中断使用的几点注意

[复制链接]
1840|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
拿起书本|  楼主 | 2012-6-17 22:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天调试430,要求用IO中断唤醒系统。总结了以下几点经验,在使用IO口中断时应该注意。
一、多源中断中断标志需要软件清零。
在TI数据手册指出多源中断中断标志需要由软件清理。但是我在线仿真发现定时器的时钟中断和捕获中断好像会自动清零。不过最好还是加上软件清零。而IO口中断必须使用软件清零。

二、在中断关闭的情况下中断标志仍然会被置位。
当IO口配置为中断功能后,不管是否开启中断允许(PxIE.n),当中断条件满足时,相应的中断标志PxIFG.n都会由硬件自动置1。这样能最大限度的减少丢失中断。如果在程序中要经常开关中断,建议在每次开中断之前先清零对应的中断标志位。不然可能会有问题。例如,在我的项目中需要用输入脉冲信号唤醒系统,当系统被唤醒后应该关闭该中断,而当系统进入休眠状态前应该再次开启该中断。如果此时在开启该中断之前不清零中断标志,开启中断后程序会立即进入中断服务子函数。
三、修改中断触发方式可能会是想要中断标志置位。
IO口中断触发方式有上升沿触发和下降沿触发两种。
四、另外补充两点
1、若P2IN.x = 0, P2OUT.x = 1, P2REN.x = 1, P2DIR.x = 1, P2IES.x = 0(上升沿); 修改P2REN.x = 1 则 P2IN.x = 1, P2IFG.x = 1.
2、若P2IN.x = 1, P2OUT.x = 1, P2REN.x = 0, P2DIR.x = 1, P2IES.x = 1(下降沿); 修改P2OUT.x = 0 则 P2IN.x = 0, P2IFG.x = 1.
结论:P2IN产生跳变就会是中断标志位置位,P2IN的跳变可能由于改变P2OUT或者P2DIR或者P2REN而产生。
至于为什么改变P2OUT、P2REN、P2DIR会使得P2IN发生变化,应该参考IO口的方框图。

相关帖子

沙发
gaochy1126| | 2012-6-18 08:41 | 只看该作者
楼主能给详细补充一下“为什么改变P2OUT、P2REN、P2DIR会使得P2IN发生变化”就更好了!

使用特权

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

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

30

粉丝