This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430FR5994:按下按钮前触发按钮按压中断

Guru**** 2587535 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/829810/ccs-msp430fr5994-button-press-interrupt-triggered-before-button-is-pressed

器件型号:MSP430FR5994

工具/软件:Code Composer Studio

您好!

我目前有一个程序、使用板载按钮作为中断来切换 LED、但出于某种原因、在按下按钮之前会调用中断功能。  

我使用命令 P5IFG &=~(BIT4 + BIT6)在 IO 引脚解锁之前清除中断标志、因此我不确定发生这种情况的原因。 有人能解释一下为什么会发生这种情况吗?

我的程序如下所示:

#include 

volatile int flag1 = 0;
volatile int flag2 = 0;

/**
* main.c
*/
int main (void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

//将未使用的引脚配置为最低功耗状态(输出方向、连接低电平)
P1OUT = 0;
P1DIR = 0xFF;
P2OUT = 0;
P2DIR = 0xFF;
P3OUT = 0;
P3DIR = 0xFF;
P4OUT = 0;
P4DIR = 0xFF;
P5OUT = 0;
P5DIR = 0xFF;
P6OUT = 0;
P6DIR = 0xFF;
P7OUT = 0;
P7DIR = 0xFF;
P8OUT = 0;
P8DIR = 0xFF;
PJOUT = 0;
PJDIR = 0xFF;

//启用内部上拉/下拉电阻器
P5REN |= BIT5 + BIT6;
//需要设置上拉高电阻器
P5OUT |= BIT5 + BIT6;

//将 P5.5和 P5.6设置为输入引脚
P5DIR &=(~BIT5);
P5DIR &=(~BIT6);
//下降沿
P5IES = BIT5 + BIT6;
//清除中断标志
P5IFG &=~(BIT5 + BIT6);
//启用中断
P5IE = BIT5 + BIT6;

PM5CTL0 &=~LOCKLPM5; //禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置

_enable_interrupt ();

while (1){
if (Flag1 = 1){
P1OUT ^= BIT0;
Flag1 = 0;
}
if (flag2 ==1){
P1OUT ^= BIT1;
标志2 = 0;
}
}
}

//端口5中断服务例程
#pragma vector=PORT5_vector
__interrupt void Port_1 (void){

Flag1 = 1;
标志2 = 1;

P5IFG &=~(BIT5 + BIT6);
} 

谢谢、
John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    根据用户指南(SLAU367O)第12.3.1节、您应该在清零 LOCKLPM5后清除 IFG 并设置 IE。

    我承认我不知道如果你不这样做会发生什么--我总是遵循规则。 (也许您刚刚发现了吗?)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、

    谢谢、我在《用户指南》中错过了这一点。 通过清零 LOCKLPM5、控制按钮中断的中断标志被置位。

    我的程序现在按预期工作。

    谢谢、

    John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 John:

    感谢您使用 MSP430器件。 如果您有任何技术问题或疑问、请随时返回 E2E。