簡體   English   中英

僅按下一個按鈕時 MSP432 Launchpad 無法識別

[英]MSP432 Launchpad not recognizing when only one button is pressed

我正在嘗試在 MSP432 Launchpad 上創建一個程序,當兩個板載按鈕(P1.4 和 P1.1)都沒有被按下時,它會打開綠色 LED,如果只有 P1.4 按鈕,它會打開紅色 LED正在按下。 使用下面的代碼,Launchpad 在沒有按下任何按鈕時會正確打開綠色 LED,但在我僅按下 P1.4 按鈕時不會打開紅色 LED。 我的代碼或引腳配置有什么問題嗎?

#include "msp.h"
#include "clock.h"
#include "TExaS.h"
void main()
{
    Clock_Init48MHz();

     /* Configuration of MSP42 */
     P2->SEL0 &= ~0x03;             // configure P2.0 and 2.1 as GPIO
     P2->SEL1 &= ~0x03;             // configure P2.0 and 2.1 as GPIO
     P2->DIR  |= 0x03;              // configure P2.0 and P2.1 as output


     //configure buttons on P1.1 and P1.4 as GPIO pull up inputs
      P1->SEL0 &= ~0x12;
      P1->SEL1 &= ~0x12;
      P1->DIR &= ~0x12;
      P1->REN |= 0x12;
      P1->OUT |= 0x12;


     //Application
     while(1){

         Clock_Delay1ms(100);

         //if P1.4 and P1.1 are both not being pressed
         if(P1->IN & 0x12){
             P2->OUT |= 0x02;  //turn on green light
             P2->OUT &= ~0x01; //turn off red light
         }

         //if only P1.4 is pressed
         else if(P1->IN & 0x10){
             P2->OUT |= 0x01;  //turn on red light
             P2->OUT &= ~0x02; //turn off green light
         }

     }

}

您的 if 語句不同意上面的評論。

如果您的開關處於低電平有效狀態(這意味着打開上拉電阻),那么第一個 if 語句測試是否有一個按鈕未按下,而不是兩者都未按下,並且您的 else-if 會檢查 P1.4 是否未按下而與 P1.1 無關(這可以永遠不會是這種情況,因為它已經匹配了 if - 也就是說,除非讀取之間的值發生變化)。

我認為您可能需要考慮if ((x & m) == m)if (x & m)之間的區別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM