C 仅按下一个按钮时,MSP432启动板无法识别
我试图在MSP432启动板上创建一个程序,当两个板载按钮(P1.4和P1.1)均未按下时,该程序将点亮绿色LED,如果仅按下P1.4按钮,该程序将点亮红色LED。根据下面的代码,当没有按下按钮时,启动板会正确地打开绿色LED,但当我只按下P1.4按钮时,启动板不会打开红色LED。我的代码或管脚的配置有问题吗C 仅按下一个按钮时,MSP432启动板无法识别,c,embedded,code-composer,launchpad,msp432,C,Embedded,Code Composer,Launchpad,Msp432,我试图在MSP432启动板上创建一个程序,当两个板载按钮(P1.4和P1.1)均未按下时,该程序将点亮绿色LED,如果仅按下P1.4按钮,该程序将点亮红色LED。根据下面的代码,当没有按下按钮时,启动板会正确地打开绿色LED,但当我只按下P1.4按钮时,启动板不会打开红色LED。我的代码或管脚的配置有问题吗 #include "msp.h" #include "clock.h" #include "TExaS.h" void main(
#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匹配-也就是说,除非在读取之间值发生变化)
我想你可能需要考虑<代码> >((x & m)=m)<代码> >代码>(x& m) < /p> @ Raffele24,如果这个答案解决了你的问题,请你在左边打勾好吗?