[求助] MSP430F5529 中断按键 的问题

REMY   2015-7-19 19:32 楼主
代码如下,开关S1能正常工作S2不能,而且有个问题,仿真的时候直接跳进了P1口的中断。
请大神看看,再次跪谢。


  1. #include "msp430f5529.h"
  2. #include <stdint.h>
  3. /*
  4. P1.7-->S1
  5. P2.2-->S2
  6. P8.1-->LED2
  7. P8.2-->LED3
  8. S1------LED2
  9. S2------LED3
  10. */
  11. void GPIO_init(void)
  12. {
  13.         P1DIR &= ~BIT7;
  14.         P2DIR &= ~BIT2;

  15.         P1REN |= BIT7;
  16.         P2REN |= BIT2;
  17.         P1OUT |= BIT7;
  18.         P2OUT |= BIT7;

  19.         P1IES &= (~BIT7);
  20.         P2IES &= (~BIT2);

  21.         P1IE |= BIT7;
  22.         P2IE |= BIT2;
  23.         /*  */
  24.         P8DIR |= BIT2+BIT1;
  25.         P8OUT = 0XFF;
  26. }

  27. #pragma vector=PORT1_VECTOR
  28. __interrupt void PORT1_ISR()
  29. {
  30.         P8OUT ^= BIT1;
  31.         while(!(P1IN & BIT7));
  32.         __delay_cycles(200000);
  33.         P1IFG &= (~BIT7);
  34. }

  35. #pragma vector=PORT2_VECTOR
  36. __interrupt void PORT2_ISR()
  37. {
  38.         P8OUT ^= BIT2;
  39.         while(!(P2IN & BIT2));
  40.         __delay_cycles(200000);
  41.         P2IFG &= (~BIT2);
  42. }

  43. void main(void)
  44. {
  45.         WDTCTL = WDTPW + WDTHOLD;
  46.         GPIO_init();
  47.         __bis_SR_register(LPM4_bits +GIE);
  48. }



回复评论 (7)

2推荐 qiushenghua 

P2OUT |= BIT7;
应该是这一句敲错了的原因…
点赞  2015-7-20 10:34
进中断查一下标志位,看是不是其他IO口影响的,还有你开关的初始状态是高还是低,要确保你GPIO口是上升沿触发还是下降沿触发?如果还是出错,建议不用仿真软件,自己组建下硬件,再试。
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞  2015-7-19 19:56
还有,你是否觉得你进了中断函数,做完动作后延时是不是有点大
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞  2015-7-19 19:58
谢谢,按键的问题还是没有解决,我把除了1.7和2.2两个引脚的中断都关了,还是那情况,S1能工作,S2工作不了,单步到等待中断时按下s2没反应,但是按下s1立马响应了。板上(MSP430EXP-F5529launchpad)其他资源对按键有干扰?还是按键或引脚坏了?
  1.         P1IE = BIT7;
  2.         P2IE = BIT2;

  3.         P1IFG = 0;
  4.         P2IFG = 0;
延时确实有点大,20ms左右就可以了吧,我现在把延时降了一个数量级。
点赞  2015-7-20 09:50
非常感谢,问题解决了~!您真热心肠
点赞  2015-7-20 12:12
换其他脚试一下,前边我的5529脚也烧了
点赞  2015-7-20 12:36
引用: sunduoze 发表于 2015-7-20 12:36
换其他脚试一下,前边我的5529脚也烧了

板子没坏。qiushenghua小哥指出了我程序的bug,粗心了
点赞  2015-7-20 12:51
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复