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.

[参考译文] MSP430G2333:按钮 LED

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1028044/msp430g2333-push-button-led

器件型号:MSP430G2333

大家好、

我正在尝试在 MSP430G2333上运行一个简单的按钮代码来进行切换。 我一直在使用以下代码、但它不会通过 if 语句。 问题出在按钮上、因为 LED 在没有 IF 条件的情况下工作正常。 如果有人能帮助我在这里工作、我会很感激。

我使用引脚 P2.7作为连接按钮的输入。

我还阅读了数据表、其中指出 P2.7可用作输入。   如果 XOUT/P2.7被用作一个输入、过多的电流流动直到 P2SEL.7被清除。 这是由于振荡器输出驱动器在复位后连接到这个焊盘。

我怀疑它是否与导致问题的振荡器输出驱动器连接有关、我可能完全关闭。

#include
#include
define delay 150000

int main (void){

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

//按钮
P2DIR = 0x00;
//P2DIR&=~BIT7;//set P2.7 as input (0被计为 input)
//P2REN|=BIT7;//使能 P2.7的上拉/下拉电阻(使能内部上拉电阻、1)
//P2OUT&=~BIT7;//将 P2.7设置为具有下拉电阻器(选择下拉模式、0)
//P2OUT|=BIT7;//将 P2.7设置为具有上拉电阻器

P1DIR|=BIT0;//将 P1.0设置为输出
P1OUT|=BIT0;//最初关闭红色 LED (LED-1R)
// P1OUT&=~BIT0;//最初打开 LED

       while (1)
       {
             if ((P2IN&BIT7)=BIT7)//如果按下开关
              {
                     P1OUT^= BIT0;//切换 LED
                     _DELAY_CYCLES (DELAY);//等待开关被取消按下
              }

       }
返回0;

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

    交换机是如何布线的? 如果这是按下时使其接地的典型方法、则逻辑是反向的。

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

    感谢 Keith 的回复。 按下时、它连接到3V。 我尝试了这两种 IF 条件、但它未检测到按钮按压操作。

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

    正如您引用的文本所指出的那样、P2SEL 在启动时被加注至0hC0、您需要将其设置为0:00以使其成为一个纯 GPIO。

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

    谢谢 Keith。 它现在可以工作了。 感谢你的帮助。