项目采用MSP430F4152,P1口使能了BIT0中断,P1.5是按键,按键输入,为什么P1IN检测到按键按下会进入IO口中断?中断BIT5的确置位了。。。。
这种现象是否正常?
灰小子:
是不是P1口的中断都使能了?
方便的话建议上传下源代码。
P1口的所有io都使用的同一个中断向量,但是如果没使能的io应该不会进入中断服务程序。
也可以在中断服务程序里做下判断,看是哪个io引起的中断,不是期望的io不进行任何操作。
user3673947:
回复 灰小子:
// P1.0 IO口中断
P1DIR &=~ BIT0//输入
P1IES &=~ BIT0; //上升沿
P1IFG &=~ BIT0; //清零标志
P1IE |= BIT0;//开中断
//P1.5按键
P1DIR &=~ BIT5;
按照上面初始化,IO口中断能够看到按键对应的P1IFG BIT5置位了。。。。。
灰小子:
回复 user3673947:
P1IFG BIT5置位之后,真的进入中断服务程序了吗?没使能应该是不会进入中断服务程序的,可以不管他。
Susan Yang:
请您给出详细的源码
另外建议您在中断服务程序内打断点试试,看能否能执行到
user3673947:
回复 Susan Yang:
仿真确实按键按下进入中断了,现在要确认的问题是改变IO口PxIN或则PxOUT会不会进入IO口中断,网上其他地方的帖子http://bbs.21ic.com/forum.php?mod=viewthread&tid=2396748
user3673947:
回复 Susan Yang:
网上有一个类似的帖子在中国电子网,“msp430g2553的IO中断问题”您可以搜索下。。我很确定的是改变PxIN或则PxOUT 会进入IO口中断,现在问题是怎么解决?
gaoyang9992006:
可在中断函数里进行判断是不是自己设置中断标志位发生的中断,如果不是,清理P1IFG,退出中断。如果是,处理对应 中断函数。
gaoyang9992006:
这个是设计的问题,msp430为了保证每次中断都能被捕获,只要发生中断条件都会触发中断。
依据:
PxIFG是IO口中断标志寄存器:0=中断标志不成立,1=中断条件曾经成立
无论中断是否被允许,也无论是否可以执行中断服务程序,只要对应IO口满足中断条件,PxIFG中相应位都会立即置1并保持,只能通过软件人工清除。这种机制的目的在于最大可能的保证不会漏掉每一次中断。在MSP430系列单片机中,P1口的8个中断各共用了一个中断入口,因此该寄存器另一重要作用在于判断是哪一位IO产生了中断。
gaoyang9992006:
e2echina.ti.com/…/183990
推荐下载我上传的这个资料学习,内容非常棒。
gaoyang9992006:
e2echina.ti.com/…/183990
推荐下载我上传的这个资料学习,内容非常棒。
TI中文支持网



