您好德州仪器。
我正在使用 MSP430FR2311 LaunchPad、遇到了一个非常不寻常的问题。
端口2中断未被触发。
我编写了下面的测试程序。
我运行了该程序、并在 P2.0至 P2.7的输入端使用方波发生器对其进行了测试、每次一个并进行组合。 我发现 P2IFG 记录一直为0。
在主循环中、我放置一行将 P2IN 复制到 P1OUT、以查看是否正确检测到方波、P1显然复制了 P2。
由于我有两个 LaunchPad、我使用另一个 LaunchPad 进行了测试、以查看这是否是硬件问题、但也会发生同样的情况。
我使用的是 CCS 版本10.0.00010。 我发现另一位成员的帖子报告了类似的问题、但 CCS8:
https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/692426?MSP430FR2433-Port-2-Interrupt-not-triggering-and-defaulting-to-ISR-Trap
我将 CCS 更新为版本10.1.0.00010、但问题仍然存在。
如果您能帮我、我已经在这个问题上停留了几天了。
感谢您的关注。
----------------------------------------------------------------------
#include
#include
#include
_interrupt void port2_ISR (void);
uint32_t P2_int_cnt[8]={0、0、0、0、0、 0、0、0};
void main (void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗
FRCTL0 = FRCTLPW | NWAITS_1;//系统时钟= 16MHz 时为1等待状态
_bis_SR_register (SCG0);//禁用 FLL
CSCTL3 |= SELREF_REFOCLK;//将 REFO 设置为 FLL 基准源
CSCTL0 = 0;//清除 DCO 和 MOD 寄存器
CSCTL1 &=~(DCORSEL_7);//首先清除 DCO 频率选择位
CSCTL1 |= DCORSEL_5;//设置 DCO = 16MHz
CSCTL2 = FLLD_0 + 487;//设置为 fDCOCLKDIV =(FLLN + 1)*(fFLLREFCLK/n) =(487 + 1)*(32.768kHz/1) = 16MHz
_DELAY_CYCLES (3);//等待3个周期
_BIC_SR_register (SCG0);//启用 FLL
while (CSCTL7 &(FLLUNLOCK0 | FLLUNLOCK1));// FLL 锁定
CSCTL4 = SELA_REFOCLK | SELMS_DCOCLKDIV;
PM5CTL0 &=~LOCKLPM5;
P1DIR = 0xFF;// P1所有引脚输出
P1SEL0 = 0x00;// P1所有引脚 GPIO
P1SEL1 = 0x00;
P1OUT = 0x00;
P1REN = 0x00;
P2DIR = 0x00;// P2所有引脚输入
P2SEL0 = 0x00;// P2所有引脚 GPIO
P2SEL1 = 0x00;
P2OUT = 0x00;
P2REN = 0x00;
P2IES = 0x00;// P2所有引脚上升沿中断
P2IFG = 0;//清除所有 P2中断标志
P2IE = 0x00;
P2IE |= BIT0;//启用 P2.0中断
// P2IE |= BIT1;//启用 P2.1中断
// P2IE |= BIT2;//启用 P2.2中断
// P2IE |= BIT3;//启用 P2.3中断
// P2IE |= BIT4;//启用 P2.4中断
// P2IE |= BIT5;//启用 P2.5中断
// P2IE |= BIT6;//启用 P2.6中断
// P2IE |= BIT7;//启用 P2.7中断
_bis_SR_register (GIE);//常规中断使能
while (true){
P1OUT = P2IN;//将 P2输入复制到 P1输出
}
}
#pragma vector = port2_vector
_interrupt void port2_ISR (void){
switch (__evo_in_range (P2IV、P2IV_P2IFG7)){
案例 P2IV__NONE:
中断;
案例 P2IV_P2IFG0:
P2_INT_cnt[0]++;
中断;
案例 P2IV_P2IFG1:
P2_INT_cnt[1]++;
中断;
案例 P2IV_P2IFG2:
P2_INT_cnt[2]++;
中断;
案例 P2IV_P2IFG3:
P2_INT_cnt[3]++;
中断;
案例 P2IV_P2IFG4:
P2_INT_cnt[4]++;
中断;
案例 P2IV_P2IFG5:
P2_INT_cnt[5]++;
中断;
案件 P2IV_P2IFG6:
P2_INT_cnt[6]++;
中断;
案件 P2IV_P2IFG7:
P2_INT_cnt[7]++;
中断;
默认值:
中断;
}
}