熟悉又陌生的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
|