[英]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.