当我执行此代码时,默认情况下LED指示灯亮,而按下开关时它只应为ON。当我按下开关时,它会关闭。任何人都可以解释一下,我的代码出错了。
#include <lpc17xx.h>
#define SwitchPinNumber 11
#define LedPinNumber 6
void main()
{
uint32_t switchStatus;
SystemInit();
LPC_PINCON->PINSEL4 = 0x000000; // Configure the Pins for GPIO;
/* Configure the LED pin as output and SwitchPin as input */
LPC_GPIO2->FIODIR = ((1 << LedPinNumber) | (0 << SwitchPinNumber));
while (1)
{
/* Turn On all the leds and wait for one second */
switchStatus = (LPC_GPIO2->FIOPIN >> SwitchPinNumber) & 0x01; // Read switch status
if (switchStatus == 1)
{
LPC_GPIO2->FIOPIN = (1 << LedPinNumber);
}
else
{
LPC_GPIO2->FIOPIN = (0 << LedPinNumber);
}
}
}
答案 0 :(得分:0)
如果这实际上是一个机械开关,那么你必须始终:
这些是可以用硬件或软件解决的非常基本的东西。您的问题没有显示上述任何一项的痕迹,因此您的程序不太可能按预期工作。
答案 1 :(得分:0)
看起来您的代码正在运行,但逻辑是颠倒的。这可能是因为:
理想情况下,您已经查看了所控制电路的原理图,这样您就可以在编写代码之前解决逻辑状态的影响。
我希望您只需将行if (switchStatus == 1)
更改为if (switchStatus == 0)
即可获得所需的结果,但您还应该对您的电路进行一些调查,以确定我建议的原因是否导致意外的结果,避免将来重复这个错误。