430G2553怎么进不了中断?

2019-07-26 15:09发布

熟悉又陌生的MSP430,。。。这次有个项目要做。。用电池供电的,也是美国客户的。。所以想换个TI的单片机试试。。。。这个Launchpad学习板在我手上已经两年了。。。一直没用上。
这次我想直接用DCO内部16M。(电路上有3.3V稳压供电)
时间中断正常,可以进入,也调试OK。
但是在按键调试时却也进不了端口中断(有时可以,有时不行)。。。
void sys_init(void)
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  BCSCTL1=CALBC1_16MHZ;
  DCOCTL=CALDCO_16MHZ;    //设置主时钟为16MHZ

     //---io设置(总的设置,包括按键)
  P1DIR |= 0x04;        //设置P1.2为输出端口(其他为输入) ==按键
  P1OUT |= 0x30;           //  启用1.4,1.5脚上拉
  P1REN |= 0x30;            //启用1.4,1.5脚上、下拉功能  

  P2DIR |= 0xBE;        //设置P2.6,2.0为输入端口(其他为输出)
  P2OUT |= 0x41;           //  启用P2.6,2.0脚上拉  
  P2REN |= 0x41;            //启用P2.6,2.0脚上、下拉功能  

  P1IE  |=0x30;   //P1.4~P1.5允许中断   
  P1IES |=0x30;    //P1.4~P1.5下降沿触发中断

  P2IE  |=0x41;   //P2.0允许中断   
  P2IES |=0x41;    //P2.0下降沿触发中断

   P1IFG =0x00;      //P1中断标志清0
   P2IFG =0x00;      //p2中断标志清0
}

#pragma vector=PORT1_VECTOR
__interrupt void Port(void)
{

    P1IFG=0;   //清中断标志
}
我在中断里加了一个停止点,有时候可以进入,有时却不行。。。IO口的电平变化是正常的。。
这是一个矩阵键盘,P1.4,1.5  P2.0为输入脚,配置了上拉; P2.1  P2.2为公共脚输出低电平。。。现在有试过好几次P1口中断能进入停止,P2不行。。。P2能中断一次。。P1又不行。。。好奇怪。。都没有一次两个口中断都正常的。..不明白是什么问题。。。烦啊!!感觉很不可靠啊。。是仿真板问题吗?还是软件问题?
使用的软件是 IAR C/C++ Compiler for MSP430   6.10.2 (6.10.2.50871)


另外,我之前一直用汇编编程的,这次转用C,中断程序是直接放在main.c程序里还是另外做一个中断的程序IRQ.c



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。