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/MSP430F5529:按钮按下时未获得GPIO中断

Guru**** 2589280 points
Other Parts Discussed in Thread: MSP430F5529

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/633682/ccs-msp430f5529-not-getting-gpio-interrupt-for-button-press

部件号:MSP430F5529

工具/软件:Code Composer Studio

您好,

我正在尝试在按下按钮时切换MSP430F5529 Launchpad上的LED。 按钮位于芯片上,连接到WFP 1.1 ,LED连接到1.0。

按下按钮时没有中断。

我的代码如下所示。 你能告诉我什么错了吗?

#include <MSP40.0.h>/**



main.c
*/
int main(void)
{
	WDTCTL = WDTPW | WDTHOLD;	//停止监视计时
	
	器//关闭LED
	P1DIR |= BIT0;// WFP 1.0 是输出,其余为输入
	P1OUT &=~0x01;
	P1IE |=(BIT1);
	~1IES= BIT1IES; P1IES= //下降边缘1 -> 0
	P1IFG &=(~BIT1);//清除WFP中断标志2.1

	,同时(1)
{
__bis_sr_register(LPM0_bits + GIE);//输入LPM0并等待中断
__no_operation(); //设置断点>>此处<<并阅读
}

	返回0;
}

#pragma vector = Port1_vector
__interrupt void InterruptVectorPort1()
{
P1OUT ^= 0x01;//切换WFP 1.0
P1IFG &=~BIT1;//清除中断标志
}

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

    我尝试过:

    #include <MSP40.0.h>/**
    
    
    
    main.c
    */
    int main(void)
    {
    	WDTCTL = WDTPW | WDTHOLD;	//停止监视计时
    	
    	器//关闭LED
    	P1DIR |= BIT0;// WFP 1.0 是输出,其余为输入
    	P1OUT &=~0x01;
    	P1IE |=(BIT1);
    	~1IES= BIT1IES; P1IES= //下降沿1 -> 0
    	P1IFG &=(~BIT1);//清除WFP 2.1
    	P1REN的中断标志|= BIT1;
    
    	同时(1)
    {
    __bis_sr_register(LPM0_bits + GIE);//输入LPM0并等待中断
    __no_operation(); //设置断点>>此处<<并阅读
    }
    
    	返回0;
    }
    
    #pragma vector = Port1_vector
    __interrupt void InterruptVectorPort1()
    {
    P1OUT ^= 0x01;//切换WFP 1.0
    P1IFG &=~BIT1;//清除中断标志
    } 

    但我仍然没有中断。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您如何知道自己没有中断?
    ISR中的调试器断点是一个可靠的指示器。 由于开关回弹,LED指示灯不亮。 MAIN中__NO_OPET()处的断点将永远不会到达(另请参见LPM0_EXIT)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的ISR中已经存在断点,调试器永远不会出现。

    是否有需要卸下的跳线?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的代码按预期工作--我在ISR中遇到了一个断点,LED响应(模块交换机退回)--在F5529 Launchpad上。

    [LP版本1.6。 所有"EZ-FET"跳线均已安装,5V,RTS和CTS除外。 已安装JP8 (LED1)跳线。 未连接任何其它设备。 CCS 6.2 .0。]

    如果您暂停(工具栏中的双垂直条),它在哪里执行?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ...然后我重新打开它,并看到您的症状。 添加行:

    P1OUT || BIT1; //向上拉,而不是向下
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢